Arcturus-Community/src/main/java/com/eu/habbo/threading/runnables/CrackableExplode.java
2019-05-16 16:56:20 +03:00

85 lines
3.1 KiB
Java

package com.eu.habbo.threading.runnables;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.items.interactions.InteractionCrackable;
import com.eu.habbo.habbohotel.rooms.Room;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.users.HabboItem;
import com.eu.habbo.messages.outgoing.inventory.AddHabboItemComposer;
import com.eu.habbo.messages.outgoing.inventory.InventoryRefreshComposer;
import com.eu.habbo.messages.outgoing.rooms.items.AddFloorItemComposer;
import com.eu.habbo.messages.outgoing.rooms.items.RemoveFloorItemComposer;
public class CrackableExplode implements Runnable
{
private final Room room;
private final InteractionCrackable habboItem;
private final Habbo habbo;
private final boolean toInventory;
private final short x;
private final short y;
public CrackableExplode(Room room, InteractionCrackable item, Habbo habbo, boolean toInventory, short x, short y)
{
this.room = room;
this.habboItem = item;
this.habbo = habbo;
this.toInventory = toInventory;
this.x = x;
this.y = y;
}
@Override
public void run()
{
if (this.habboItem.getRoomId() == 0)
{
return;
}
//MAKING DINNER BRB
if (!this.habboItem.resetable())
{
this.room.removeHabboItem(this.habboItem);
this.room.sendComposer(new RemoveFloorItemComposer(this.habboItem, true).compose());
this.habboItem.setRoomId(0);
Emulator.getGameEnvironment().getItemManager().deleteItem(this.habboItem);
}
else
{
this.habboItem.reset(this.room);
}
Item rewardItem = Emulator.getGameEnvironment().getItemManager().getCrackableReward(this.habboItem.getBaseItem().getId());
if (rewardItem != null)
{
HabboItem newItem = Emulator.getGameEnvironment().getItemManager().createItem(this.habboItem.allowAnyone() ? this.habbo.getHabboInfo().getId() : this.habboItem.getUserId(), rewardItem, 0, 0, "");
if (newItem != null)
{
if (this.toInventory)
{
this.habbo.getInventory().getItemsComponent().addItem(newItem);
this.habbo.getClient().sendResponse(new AddHabboItemComposer(newItem));
this.habbo.getClient().sendResponse(new InventoryRefreshComposer());
}
else
{
newItem.setX(this.x);
newItem.setY(this.y);
newItem.setZ(this.room.getStackHeight(this.x, this.y, false));
newItem.setRoomId(this.room.getId());
newItem.needsUpdate(true);
this.room.addHabboItem(newItem);
this.room.updateItem(newItem);
this.room.sendComposer(new AddFloorItemComposer(newItem, this.room.getFurniOwnerNames().get(newItem.getUserId())).compose());
}
}
}
this.room.updateTile(this.room.getLayout().getTile(this.x, this.y));
}
}