Room.java clean-up

This commit is contained in:
Stankman 2023-07-21 16:37:33 -05:00
parent a46b38920e
commit 4c5b362b87
45 changed files with 148 additions and 164 deletions

View File

@ -2,8 +2,10 @@ package com.eu.habbo.habbohotel.bots;
import com.eu.habbo.Emulator; import com.eu.habbo.Emulator;
import com.eu.habbo.database.DatabaseConstants; import com.eu.habbo.database.DatabaseConstants;
import com.eu.habbo.habbohotel.rooms.*; import com.eu.habbo.habbohotel.rooms.Room;
import com.eu.habbo.habbohotel.rooms.entities.units.RoomUnit; import com.eu.habbo.habbohotel.rooms.RoomChatMessage;
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
import com.eu.habbo.habbohotel.rooms.RoomUserAction;
import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomBot; import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomBot;
import com.eu.habbo.habbohotel.units.Unit; import com.eu.habbo.habbohotel.units.Unit;
import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.Habbo;
@ -412,19 +414,6 @@ public class Bot extends Unit implements Runnable {
this.canWalk = canWalk; this.canWalk = canWalk;
} }
public void lookAt(Habbo habbo) {
this.lookAt(habbo.getRoomUnit().getCurrentPosition());
}
public void lookAt(RoomUnit roomUnit) {
this.lookAt(roomUnit.getCurrentPosition());
}
public void lookAt(RoomTile tile) {
this.getRoomUnit().lookAtPoint(tile);
this.getRoomUnit().setStatusUpdateNeeded(true);
}
public void onPlaceUpdate() { public void onPlaceUpdate() {
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("UPDATE bots SET name = ?, motto = ?, figure = ?, gender = ?, user_id = ?, room_id = ?, x = ?, y = ?, z = ?, rot = ?, dance = ?, freeroam = ?, chat_lines = ?, chat_auto = ?, chat_random = ?, chat_delay = ?, effect = ?, bubble_id = ? WHERE id = ?")) { try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("UPDATE bots SET name = ?, motto = ?, figure = ?, gender = ?, user_id = ?, room_id = ?, x = ?, y = ?, z = ?, rot = ?, dance = ?, freeroam = ?, chat_lines = ?, chat_auto = ?, chat_random = ?, chat_delay = ?, effect = ?, bubble_id = ? WHERE id = ?")) {
statement.setString(1, this.name); statement.setString(1, this.name);

View File

@ -86,7 +86,7 @@ public class ButlerBot extends Bot {
final Bot bot = this; final Bot bot = this;
// Step 1: Look at Habbo // Step 1: Look at Habbo
bot.lookAt(serveEvent.getHabbo()); bot.getRoomUnit().lookAtPoint(serveEvent.getHabbo().getRoomUnit().getCurrentPosition());
// Step 2: Prepare tasks for when the Bot (carrying the handitem) reaches the Habbo // Step 2: Prepare tasks for when the Bot (carrying the handitem) reaches the Habbo
final List<Runnable> tasks = new ArrayList<>(); final List<Runnable> tasks = new ArrayList<>();

View File

@ -3,8 +3,8 @@ package com.eu.habbo.habbohotel.catalog.marketplace;
import com.eu.habbo.Emulator; import com.eu.habbo.Emulator;
import com.eu.habbo.database.DatabaseConstants; import com.eu.habbo.database.DatabaseConstants;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.messages.ServerMessage; import com.eu.habbo.messages.ServerMessage;
import com.eu.habbo.messages.incoming.catalog.marketplace.GetMarketplaceOffersEvent; import com.eu.habbo.messages.incoming.catalog.marketplace.GetMarketplaceOffersEvent;
import com.eu.habbo.messages.outgoing.catalog.marketplace.MarketplaceBuyOfferResultComposer; import com.eu.habbo.messages.outgoing.catalog.marketplace.MarketplaceBuyOfferResultComposer;
@ -281,7 +281,7 @@ public class MarketPlace {
} }
event.price = calculateCommision(event.price); event.price = calculateCommision(event.price);
item.setUserId(client.getHabbo().getHabboInfo().getId()); item.setOwnerId(client.getHabbo().getHabboInfo().getId());
item.needsUpdate(true); item.needsUpdate(true);
Emulator.getThreading().run(item); Emulator.getThreading().run(item);
@ -362,7 +362,7 @@ public class MarketPlace {
MarketPlaceOffer offer = new MarketPlaceOffer(event.getItem(), event.getPrice(), client.getHabbo()); MarketPlaceOffer offer = new MarketPlaceOffer(event.getItem(), event.getPrice(), client.getHabbo());
client.getHabbo().getInventory().addMarketplaceOffer(offer); client.getHabbo().getInventory().addMarketplaceOffer(offer);
client.getHabbo().getInventory().getItemsComponent().removeHabboItem(event.getItem()); client.getHabbo().getInventory().getItemsComponent().removeHabboItem(event.getItem());
item.setUserId(-1); item.setOwnerId(-1);
item.needsUpdate(true); item.needsUpdate(true);
Emulator.getThreading().run(item); Emulator.getThreading().run(item);

View File

@ -30,7 +30,7 @@ public class RedeemCommand extends Command {
TIntIntMap points = new TIntIntHashMap(); TIntIntMap points = new TIntIntHashMap();
for (RoomItem item : gameClient.getHabbo().getInventory().getItemsComponent().getItemsAsValueCollection()) { for (RoomItem item : gameClient.getHabbo().getInventory().getItemsComponent().getItemsAsValueCollection()) {
if ((item.getBaseItem().getName().startsWith("CF_") || item.getBaseItem().getName().startsWith("CFC_") || item.getBaseItem().getName().startsWith("DF_") || item.getBaseItem().getName().startsWith("PF_")) && item.getUserId() == gameClient.getHabbo().getHabboInfo().getId()) { if ((item.getBaseItem().getName().startsWith("CF_") || item.getBaseItem().getName().startsWith("CFC_") || item.getBaseItem().getName().startsWith("DF_") || item.getBaseItem().getName().startsWith("PF_")) && item.getOwnerId() == gameClient.getHabbo().getHabboInfo().getId()) {
items.add(item); items.add(item);
if ((item.getBaseItem().getName().startsWith("CF_") || item.getBaseItem().getName().startsWith("CFC_")) && !item.getBaseItem().getName().contains("_diamond_")) { if ((item.getBaseItem().getName().startsWith("CF_") || item.getBaseItem().getName().startsWith("CFC_")) && !item.getBaseItem().getName().contains("_diamond_")) {
try { try {

View File

@ -17,7 +17,7 @@ public class RoomSitCommand extends Command {
} else if (habbo.getRoomUnit().hasStatus(RoomUnitStatus.SIT)) { } else if (habbo.getRoomUnit().hasStatus(RoomUnitStatus.SIT)) {
return; return;
} }
gameClient.getHabbo().getRoomUnit().getRoom().makeSit(habbo); gameClient.getHabbo().getRoomUnit().makeSit();
}); });
return true; return true;

View File

@ -11,7 +11,7 @@ public class SitCommand extends Command {
@Override @Override
public boolean handle(GameClient gameClient, String[] params) { public boolean handle(GameClient gameClient, String[] params) {
if (gameClient.getHabbo().getHabboInfo().getRiding() == null) //TODO Make this an event plugin which fires that can be cancelled if (gameClient.getHabbo().getHabboInfo().getRiding() == null) //TODO Make this an event plugin which fires that can be cancelled
gameClient.getHabbo().getRoomUnit().getRoom().makeSit(gameClient.getHabbo()); gameClient.getHabbo().getRoomUnit().makeSit();
return true; return true;
} }
} }

View File

@ -11,7 +11,7 @@ public class StandCommand extends Command {
@Override @Override
public boolean handle(GameClient gameClient, String[] params) { public boolean handle(GameClient gameClient, String[] params) {
if (gameClient.getHabbo().getHabboInfo().getRiding() == null) if (gameClient.getHabbo().getHabboInfo().getRiding() == null)
gameClient.getHabbo().getRoomUnit().getRoom().makeStand(gameClient.getHabbo()); gameClient.getHabbo().getRoomUnit().makeStand();
return true; return true;
} }
} }

View File

@ -24,10 +24,10 @@ public class InteractionBlackHole extends InteractionGate {
Achievement holeCountAchievement = Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomDecoHoleFurniCount"); Achievement holeCountAchievement = Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomDecoHoleFurniCount");
int holesCountProgress = 0; int holesCountProgress = 0;
Habbo owner = room.getRoomUnitManager().getRoomHabboById(this.getUserId()); Habbo owner = room.getRoomUnitManager().getRoomHabboById(this.getOwnerId());
if (owner == null) { if (owner == null) {
holesCountProgress = AchievementManager.getAchievementProgressForHabbo(this.getUserId(), holeCountAchievement); holesCountProgress = AchievementManager.getAchievementProgressForHabbo(this.getOwnerId(), holeCountAchievement);
} else { } else {
holesCountProgress = owner.getHabboStats().getAchievementProgress(holeCountAchievement); holesCountProgress = owner.getHabboStats().getAchievementProgress(holeCountAchievement);
} }
@ -37,7 +37,7 @@ public class InteractionBlackHole extends InteractionGate {
if (owner != null) { if (owner != null) {
AchievementManager.progressAchievement(owner, holeCountAchievement, holeDifference); AchievementManager.progressAchievement(owner, holeCountAchievement, holeDifference);
} else { } else {
AchievementManager.progressAchievement(this.getUserId(), holeCountAchievement, holeDifference); AchievementManager.progressAchievement(this.getOwnerId(), holeCountAchievement, holeDifference);
} }
} }

View File

@ -80,7 +80,7 @@ public class InteractionBuildArea extends InteractionCustomValues {
for (RoomTile tile : this.tiles) { for (RoomTile tile : this.tiles) {
THashSet<RoomItem> tileItems = room.getItemsAt(tile); THashSet<RoomItem> tileItems = room.getItemsAt(tile);
for (RoomItem tileItem : tileItems) { for (RoomItem tileItem : tileItems) {
if (canBuild.contains(tileItem.getUserId()) && tileItem != this) { if (canBuild.contains(tileItem.getOwnerId()) && tileItem != this) {
room.getRoomItemManager().pickUpItem(tileItem, null); room.getRoomItemManager().pickUpItem(tileItem, null);
} }
} }
@ -130,7 +130,7 @@ public class InteractionBuildArea extends InteractionCustomValues {
THashSet<RoomItem> tileItems = room.getItemsAt(tile); THashSet<RoomItem> tileItems = room.getItemsAt(tile);
if (newTiles.contains(tile)) continue; if (newTiles.contains(tile)) continue;
for (RoomItem tileItem : tileItems) { for (RoomItem tileItem : tileItems) {
if (canBuild.contains(tileItem.getUserId()) && tileItem != this) { if (canBuild.contains(tileItem.getOwnerId()) && tileItem != this) {
room.getRoomItemManager().pickUpItem(tileItem, null); room.getRoomItemManager().pickUpItem(tileItem, null);
} }
} }
@ -204,7 +204,7 @@ public class InteractionBuildArea extends InteractionCustomValues {
for (RoomTile tile : oldTiles) { for (RoomTile tile : oldTiles) {
THashSet<RoomItem> tileItems = room.getItemsAt(tile); THashSet<RoomItem> tileItems = room.getItemsAt(tile);
for (RoomItem tileItem : tileItems) { for (RoomItem tileItem : tileItems) {
if (canBuild.contains(tileItem.getUserId()) && tileItem != this) { if (canBuild.contains(tileItem.getOwnerId()) && tileItem != this) {
room.getRoomItemManager().pickUpItem(tileItem, null); room.getRoomItemManager().pickUpItem(tileItem, null);
} }
} }

View File

@ -92,7 +92,7 @@ public class InteractionCrackable extends RoomItem {
public void onTick(Habbo habbo, Room room) { public void onTick(Habbo habbo, Room room) {
if (this.cracked) return; if (this.cracked) return;
if (this.allowAnyone() || this.getUserId() == habbo.getHabboInfo().getId()) { if (this.allowAnyone() || this.getOwnerId() == habbo.getHabboInfo().getId()) {
CrackableReward rewardData = Emulator.getGameEnvironment().getItemManager().getCrackableData(this.getBaseItem().getId()); CrackableReward rewardData = Emulator.getGameEnvironment().getItemManager().getCrackableData(this.getBaseItem().getId());
if (rewardData != null) { if (rewardData != null) {

View File

@ -4,8 +4,8 @@ import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.gameclients.GameClient; import com.eu.habbo.habbohotel.gameclients.GameClient;
import com.eu.habbo.habbohotel.items.Item; import com.eu.habbo.habbohotel.items.Item;
import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.Room;
import com.eu.habbo.habbohotel.users.HabboGender;
import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem;
import com.eu.habbo.habbohotel.users.HabboGender;
import com.eu.habbo.messages.outgoing.rooms.items.RemoveFloorItemComposer; import com.eu.habbo.messages.outgoing.rooms.items.RemoveFloorItemComposer;
import com.eu.habbo.threading.runnables.QueryDeleteHabboItem; import com.eu.habbo.threading.runnables.QueryDeleteHabboItem;
@ -25,7 +25,7 @@ public class InteractionFXBox extends InteractionDefault {
@Override @Override
public void onClick(GameClient client, Room room, Object[] objects) { public void onClick(GameClient client, Room room, Object[] objects) {
if (client != null && this.getUserId() == client.getHabbo().getHabboInfo().getId()) { if (client != null && this.getOwnerId() == client.getHabbo().getHabboInfo().getId()) {
if(this.getExtradata().equals("1")) if(this.getExtradata().equals("1"))
return; return;

View File

@ -166,7 +166,7 @@ public class InteractionRentableSpace extends RoomItem {
} }
for (RoomItem item : items) { for (RoomItem item : items) {
if (item.getUserId() == this.renterId) { if (item.getOwnerId() == this.renterId) {
room.getRoomItemManager().pickUpItem(item, null); room.getRoomItemManager().pickUpItem(item, null);
} }
} }

View File

@ -24,7 +24,7 @@ public class InteractionVikingCotie extends InteractionDefault {
this.setExtradata("0"); this.setExtradata("0");
} }
if (client != null && client.getHabbo().getHabboInfo().getId() == this.getUserId()) { if (client != null && client.getHabbo().getHabboInfo().getId() == this.getOwnerId()) {
if (client.getHabbo().getRoomUnit().getEffectId() == 172 || client.getHabbo().getRoomUnit().getEffectId() == 173) { if (client.getHabbo().getRoomUnit().getEffectId() == 172 || client.getHabbo().getRoomUnit().getEffectId() == 173) {
int state = Integer.parseInt(this.getExtradata()); int state = Integer.parseInt(this.getExtradata());

View File

@ -24,7 +24,7 @@ public class InteractionBunnyrunField extends InteractionTagField {
public void onPlace(Room room) { public void onPlace(Room room) {
super.onPlace(room); super.onPlace(room);
Habbo itemOwner = Emulator.getGameEnvironment().getHabboManager().getHabbo(this.getUserId()); Habbo itemOwner = Emulator.getGameEnvironment().getHabboManager().getHabbo(this.getOwnerId());
if (itemOwner != null) { if (itemOwner != null) {
AchievementManager.progressAchievement(itemOwner, Emulator.getGameEnvironment().getAchievementManager().getAchievement("RbBunnyTag")); AchievementManager.progressAchievement(itemOwner, Emulator.getGameEnvironment().getAchievementManager().getAchievement("RbBunnyTag"));

View File

@ -48,7 +48,7 @@ public class InteractionIceTagField extends InteractionTagField {
public void onPlace(Room room) { public void onPlace(Room room) {
super.onPlace(room); super.onPlace(room);
Habbo itemOwner = Emulator.getGameEnvironment().getHabboManager().getHabbo(this.getUserId()); Habbo itemOwner = Emulator.getGameEnvironment().getHabboManager().getHabbo(this.getOwnerId());
if (itemOwner != null) { if (itemOwner != null) {
AchievementManager.progressAchievement(itemOwner, Emulator.getGameEnvironment().getAchievementManager().getAchievement("TagA")); AchievementManager.progressAchievement(itemOwner, Emulator.getGameEnvironment().getAchievementManager().getAchievement("TagA"));

View File

@ -48,7 +48,7 @@ public class InteractionRollerskateField extends InteractionTagField {
public void onPlace(Room room) { public void onPlace(Room room) {
super.onPlace(room); super.onPlace(room);
Habbo itemOwner = Emulator.getGameEnvironment().getHabboManager().getHabbo(this.getUserId()); Habbo itemOwner = Emulator.getGameEnvironment().getHabboManager().getHabbo(this.getOwnerId());
if (itemOwner != null) { if (itemOwner != null) {
AchievementManager.progressAchievement(itemOwner, Emulator.getGameEnvironment().getAchievementManager().getAchievement("RbTagA")); AchievementManager.progressAchievement(itemOwner, Emulator.getGameEnvironment().getAchievementManager().getAchievement("RbTagA"));

View File

@ -31,7 +31,7 @@ public class InteractionTotemPlanet extends InteractionDefault {
@Override @Override
public void onClick(GameClient client, Room room, Object[] objects) throws Exception { public void onClick(GameClient client, Room room, Object[] objects) throws Exception {
if(client.getHabbo().getHabboInfo().getId() != this.getUserId()) { if(client.getHabbo().getHabboInfo().getId() != this.getOwnerId()) {
super.onClick(client, room, objects); super.onClick(client, room, objects);
return; return;
} }

View File

@ -1453,17 +1453,17 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
} }
synchronized (this.furniOwnerCount) { synchronized (this.furniOwnerCount) {
this.furniOwnerCount.put(item.getUserId(), this.furniOwnerCount.get(item.getUserId()) + 1); this.furniOwnerCount.put(item.getOwnerId(), this.furniOwnerCount.get(item.getOwnerId()) + 1);
} }
synchronized (this.furniOwnerNames) { synchronized (this.furniOwnerNames) {
if (!this.furniOwnerNames.containsKey(item.getUserId())) { if (!this.furniOwnerNames.containsKey(item.getOwnerId())) {
HabboInfo habbo = HabboManager.getOfflineHabboInfo(item.getUserId()); HabboInfo habbo = HabboManager.getOfflineHabboInfo(item.getOwnerId());
if (habbo != null) { if (habbo != null) {
this.furniOwnerNames.put(item.getUserId(), habbo.getUsername()); this.furniOwnerNames.put(item.getOwnerId(), habbo.getUsername());
} else { } else {
log.error("Failed to find username for item (ID: {}, UserID: {})", item.getId(), item.getUserId()); log.error("Failed to find username for item (ID: {}, UserID: {})", item.getId(), item.getOwnerId());
} }
} }
} }
@ -1610,13 +1610,13 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
if (i != null) { if (i != null) {
synchronized (this.furniOwnerCount) { synchronized (this.furniOwnerCount) {
synchronized (this.furniOwnerNames) { synchronized (this.furniOwnerNames) {
int count = this.furniOwnerCount.get(i.getUserId()); int count = this.furniOwnerCount.get(i.getOwnerId());
if (count > 1) if (count > 1)
this.furniOwnerCount.put(i.getUserId(), count - 1); this.furniOwnerCount.put(i.getOwnerId(), count - 1);
else { else {
this.furniOwnerCount.remove(i.getUserId()); this.furniOwnerCount.remove(i.getOwnerId());
this.furniOwnerNames.remove(i.getUserId()); this.furniOwnerNames.remove(i.getOwnerId());
} }
} }
} }
@ -2176,8 +2176,9 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
public THashSet<RoomItem> getItemsAt(RoomTile tile, boolean returnOnFirst) { public THashSet<RoomItem> getItemsAt(RoomTile tile, boolean returnOnFirst) {
THashSet<RoomItem> items = new THashSet<>(0); THashSet<RoomItem> items = new THashSet<>(0);
if (tile == null) if (tile == null) {
return items; return items;
}
if (this.loaded) { if (this.loaded) {
THashSet<RoomItem> cachedItems = this.tileCache.get(tile); THashSet<RoomItem> cachedItems = this.tileCache.get(tile);
@ -2497,8 +2498,8 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
return tallestItem.getBaseItem().allowSit(); return tallestItem.getBaseItem().allowSit();
} }
public boolean canLayAt(int x, int y) { public boolean canLayAt(RoomTile tile) {
return this.canLayAt(this.getItemsAt(x, y)); return this.canLayAt(this.getItemsAt(tile));
} }
boolean canLayAt(THashSet<RoomItem> items) { boolean canLayAt(THashSet<RoomItem> items) {
@ -2535,14 +2536,6 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
} }
} }
public void sendComposerToHabbosWithRights(ServerMessage message) {
for (Habbo habbo : this.roomUnitManager.getRoomHabbos()) {
if (this.hasRights(habbo)) {
habbo.getClient().sendResponse(message);
}
}
}
public void petChat(ServerMessage message) { public void petChat(ServerMessage message) {
for (Habbo habbo : this.roomUnitManager.getRoomHabbos()) { for (Habbo habbo : this.roomUnitManager.getRoomHabbos()) {
if (!habbo.getHabboStats().isIgnorePets()) if (!habbo.getHabboStats().isIgnorePets())
@ -2788,32 +2781,6 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
this.bannedHabbos.put(roomBan.getUserId(), roomBan); this.bannedHabbos.put(roomBan.getUserId(), roomBan);
} }
public void makeSit(Habbo habbo) {
if (habbo.getRoomUnit() == null) return;
if (habbo.getRoomUnit().hasStatus(RoomUnitStatus.SIT) || !habbo.getRoomUnit().canForcePosture()) {
return;
}
habbo.getRoomUnit().setDance(DanceType.NONE);
habbo.getRoomUnit().setCmdSitEnabled(true);
habbo.getRoomUnit().setBodyRotation(RoomRotation.values()[habbo.getRoomUnit().getBodyRotation().getValue() - habbo.getRoomUnit().getBodyRotation().getValue() % 2]);
habbo.getRoomUnit().setStatus(RoomUnitStatus.SIT, 0.5 + "");
this.sendComposer(new UserUpdateComposer(habbo.getRoomUnit()).compose());
}
public void makeStand(Habbo habbo) {
if (habbo.getRoomUnit() == null) return;
RoomItem item = this.getTopItemAt(habbo.getRoomUnit().getCurrentPosition().getX(), habbo.getRoomUnit().getCurrentPosition().getY());
if (item == null || !item.getBaseItem().allowSit() || !item.getBaseItem().allowLay()) {
habbo.getRoomUnit().setCmdStandEnabled(true);
habbo.getRoomUnit().setBodyRotation(RoomRotation.values()[habbo.getRoomUnit().getBodyRotation().getValue() - habbo.getRoomUnit().getBodyRotation().getValue() % 2]);
habbo.getRoomUnit().removeStatus(RoomUnitStatus.SIT);
this.sendComposer(new UserUpdateComposer(habbo.getRoomUnit()).compose());
}
}
public void updateItem(RoomItem item) { public void updateItem(RoomItem item) {
if (!this.isLoaded()) { if (!this.isLoaded()) {
return; return;
@ -2856,7 +2823,7 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
THashSet<Item> items = new THashSet<>(); THashSet<Item> items = new THashSet<>();
for (RoomItem item : this.roomItems.valueCollection()) { for (RoomItem item : this.roomItems.valueCollection()) {
if (!items.contains(item.getBaseItem()) && item.getUserId() == userId) items.add(item.getBaseItem()); if (!items.contains(item.getBaseItem()) && item.getOwnerId() == userId) items.add(item.getBaseItem());
} }
return items.size(); return items.size();
@ -2874,7 +2841,7 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
break; break;
} }
if (iterator.value().getUserId() == userId) { if (iterator.value().getOwnerId() == userId) {
items.add(iterator.value()); items.add(iterator.value());
iterator.value().setRoomId(0); iterator.value().setRoomId(0);
} }
@ -2892,11 +2859,11 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
} }
} }
public void ejectAll() { public void ejectAllFurni() {
this.ejectAll(null); this.ejectAllFurni(null);
} }
public void ejectAll(Habbo habbo) { public void ejectAllFurni(Habbo habbo) {
THashMap<Integer, THashSet<RoomItem>> userItemsMap = new THashMap<>(); THashMap<Integer, THashSet<RoomItem>> userItemsMap = new THashMap<>();
synchronized (this.roomItems) { synchronized (this.roomItems) {
@ -2909,13 +2876,13 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
break; break;
} }
if (habbo != null && iterator.value().getUserId() == habbo.getHabboInfo().getId()) if (habbo != null && iterator.value().getOwnerId() == habbo.getHabboInfo().getId())
continue; continue;
if (iterator.value() instanceof InteractionPostIt) if (iterator.value() instanceof InteractionPostIt)
continue; continue;
userItemsMap.computeIfAbsent(iterator.value().getUserId(), k -> new THashSet<>()).add(iterator.value()); userItemsMap.computeIfAbsent(iterator.value().getOwnerId(), k -> new THashSet<>()).add(iterator.value());
} }
} }

View File

@ -314,7 +314,7 @@ public class RoomItemManager {
item.onPlace(this.room); item.onPlace(this.room);
this.room.updateTiles(occupiedTiles); this.room.updateTiles(occupiedTiles);
this.room.sendComposer(new ObjectAddMessageComposer(item, this.room.getFurniOwnerName(item.getUserId())).compose()); this.room.sendComposer(new ObjectAddMessageComposer(item, this.room.getFurniOwnerName(item.getOwnerId())).compose());
for (RoomTile t : occupiedTiles) { for (RoomTile t : occupiedTiles) {
this.room.updateHabbosAt(t); this.room.updateHabbosAt(t);
@ -339,10 +339,10 @@ public class RoomItemManager {
} }
item.setWallPosition(wallPosition); item.setWallPosition(wallPosition);
if (!this.room.getFurniOwnerNames().containsKey(item.getUserId()) && owner != null) { if (!this.room.getFurniOwnerNames().containsKey(item.getOwnerId()) && owner != null) {
this.room.getFurniOwnerNames().put(item.getUserId(), owner.getHabboInfo().getUsername()); this.room.getFurniOwnerNames().put(item.getOwnerId(), owner.getHabboInfo().getUsername());
} }
this.room.sendComposer(new ItemAddMessageComposer(item, this.room.getFurniOwnerName(item.getUserId())).compose()); this.room.sendComposer(new ItemAddMessageComposer(item, this.room.getFurniOwnerName(item.getOwnerId())).compose());
item.needsUpdate(true); item.needsUpdate(true);
this.addRoomItem(item); this.addRoomItem(item);
item.setRoomId(this.room.getRoomInfo().getId()); item.setRoomId(this.room.getRoomInfo().getId());
@ -565,7 +565,7 @@ public class RoomItemManager {
this.room.sendComposer(new ItemRemoveMessageComposer(item).compose()); this.room.sendComposer(new ItemRemoveMessageComposer(item).compose());
} }
Habbo habbo = (picker != null && picker.getHabboInfo().getId() == item.getId() ? picker : Emulator.getGameServer().getGameClientManager().getHabbo(item.getUserId())); Habbo habbo = (picker != null && picker.getHabboInfo().getId() == item.getId() ? picker : Emulator.getGameServer().getGameClientManager().getHabbo(item.getOwnerId()));
if (habbo != null) { if (habbo != null) {
habbo.getInventory().getItemsComponent().addItem(item); habbo.getInventory().getItemsComponent().addItem(item);
habbo.getClient().sendResponse(new UnseenItemsComposer(item)); habbo.getClient().sendResponse(new UnseenItemsComposer(item));

View File

@ -183,7 +183,7 @@ public class RoomTrade {
try (PreparedStatement statement = connection.prepareStatement("UPDATE items SET user_id = ? WHERE id = ? LIMIT 1")) { try (PreparedStatement statement = connection.prepareStatement("UPDATE items SET user_id = ? WHERE id = ? LIMIT 1")) {
try (PreparedStatement stmt = connection.prepareStatement("INSERT INTO room_trade_log_items (id, item_id, user_id) VALUES (?, ?, ?)")) { try (PreparedStatement stmt = connection.prepareStatement("INSERT INTO room_trade_log_items (id, item_id, user_id) VALUES (?, ?, ?)")) {
for (RoomItem item : userOne.getItems()) { for (RoomItem item : userOne.getItems()) {
item.setUserId(userTwoId); item.setOwnerId(userTwoId);
statement.setInt(1, userTwoId); statement.setInt(1, userTwoId);
statement.setInt(2, item.getId()); statement.setInt(2, item.getId());
statement.addBatch(); statement.addBatch();
@ -197,7 +197,7 @@ public class RoomTrade {
} }
for (RoomItem item : userTwo.getItems()) { for (RoomItem item : userTwo.getItems()) {
item.setUserId(userOneId); item.setOwnerId(userOneId);
statement.setInt(1, userOneId); statement.setInt(1, userOneId);
statement.setInt(2, item.getId()); statement.setInt(2, item.getId());
statement.addBatch(); statement.addBatch();

View File

@ -298,7 +298,7 @@ public class TraxManager implements Disposable {
musicDisc.needsUpdate(true); musicDisc.needsUpdate(true);
Emulator.getThreading().run(musicDisc); Emulator.getThreading().run(musicDisc);
Habbo owner = Emulator.getGameEnvironment().getHabboManager().getHabbo(musicDisc.getUserId()); Habbo owner = Emulator.getGameEnvironment().getHabboManager().getHabbo(musicDisc.getOwnerId());
if (owner != null) { if (owner != null) {
owner.getInventory().getItemsComponent().addItem(musicDisc); owner.getInventory().getItemsComponent().addItem(musicDisc);
@ -328,7 +328,7 @@ public class TraxManager implements Disposable {
musicDisc.needsUpdate(true); musicDisc.needsUpdate(true);
Emulator.getThreading().run(musicDisc); Emulator.getThreading().run(musicDisc);
Habbo owner = Emulator.getGameEnvironment().getHabboManager().getHabbo(musicDisc.getUserId()); Habbo owner = Emulator.getGameEnvironment().getHabboManager().getHabbo(musicDisc.getOwnerId());
if (owner != null) { if (owner != null) {
owner.getInventory().getItemsComponent().addItem(musicDisc); owner.getInventory().getItemsComponent().addItem(musicDisc);

View File

@ -46,20 +46,11 @@ import java.util.List;
@Slf4j @Slf4j
public abstract class RoomItem implements Runnable, IEventTriggers { public abstract class RoomItem implements Runnable, IEventTriggers {
@SuppressWarnings("rawtypes")
private static final Class[] TOGGLING_INTERACTIONS = new Class[]{
InteractionGameTimer.class,
InteractionWired.class,
InteractionWiredHighscore.class,
InteractionMultiHeight.class
};
@Getter @Getter
private final int id; private final int id;
@Getter @Getter
@Setter @Setter
private int userId; private int ownerId;
@Getter @Getter
@Setter @Setter
private int roomId; private int roomId;
@ -89,10 +80,17 @@ public abstract class RoomItem implements Runnable, IEventTriggers {
private boolean needsUpdate = false; private boolean needsUpdate = false;
private boolean needsDelete = false; private boolean needsDelete = false;
private boolean isFromGift = false; private boolean isFromGift = false;
@SuppressWarnings("rawtypes")
private static final Class[] TOGGLING_INTERACTIONS = new Class[]{
InteractionGameTimer.class,
InteractionWired.class,
InteractionWiredHighscore.class,
InteractionMultiHeight.class
};
public RoomItem(ResultSet set, Item baseItem) throws SQLException { public RoomItem(ResultSet set, Item baseItem) throws SQLException {
this.id = set.getInt("id"); this.id = set.getInt("id");
this.userId = set.getInt(DatabaseConstants.USER_ID); this.ownerId = set.getInt(DatabaseConstants.USER_ID);
this.roomId = set.getInt("room_id"); this.roomId = set.getInt("room_id");
this.baseItem = baseItem; this.baseItem = baseItem;
this.wallPosition = set.getString("wall_pos"); this.wallPosition = set.getString("wall_pos");
@ -109,9 +107,9 @@ public abstract class RoomItem implements Runnable, IEventTriggers {
} }
} }
public RoomItem(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) { public RoomItem(int id, int ownerId, Item item, String extradata, int limitedStack, int limitedSells) {
this.id = id; this.id = id;
this.userId = userId; this.ownerId = ownerId;
this.roomId = 0; this.roomId = 0;
this.baseItem = item; this.baseItem = item;
this.wallPosition = ""; this.wallPosition = "";
@ -163,7 +161,7 @@ public abstract class RoomItem implements Runnable, IEventTriggers {
serverMessage.appendString(this.extradata); serverMessage.appendString(this.extradata);
serverMessage.appendInt(-1); serverMessage.appendInt(-1);
serverMessage.appendInt(this.isUsable()); serverMessage.appendInt(this.isUsable());
serverMessage.appendInt(this.getUserId()); serverMessage.appendInt(this.getOwnerId());
} }
public int getGiftAdjustedId() { public int getGiftAdjustedId() {
@ -216,7 +214,7 @@ public abstract class RoomItem implements Runnable, IEventTriggers {
} }
} else if (this.needsUpdate) { } else if (this.needsUpdate) {
try (PreparedStatement statement = connection.prepareStatement("UPDATE items SET user_id = ?, room_id = ?, wall_pos = ?, x = ?, y = ?, z = ?, rot = ?, extra_data = ?, limited_data = ? WHERE id = ?")) { try (PreparedStatement statement = connection.prepareStatement("UPDATE items SET user_id = ?, room_id = ?, wall_pos = ?, x = ?, y = ?, z = ?, rot = ?, extra_data = ?, limited_data = ? WHERE id = ?")) {
statement.setInt(1, this.userId); statement.setInt(1, this.ownerId);
statement.setInt(2, this.roomId); statement.setInt(2, this.roomId);
statement.setString(3, this.wallPosition); statement.setString(3, this.wallPosition);
statement.setInt(4, this.x); statement.setInt(4, this.x);
@ -299,21 +297,21 @@ public abstract class RoomItem implements Runnable, IEventTriggers {
public void onPlace(Room room) { public void onPlace(Room room) {
//TODO: IMPORTANT: MAKE THIS GENERIC. (HOLES, ICE SKATE PATCHES, BLACK HOLE, BUNNY RUN FIELD, FOOTBALL FIELD) //TODO: IMPORTANT: MAKE THIS GENERIC. (HOLES, ICE SKATE PATCHES, BLACK HOLE, BUNNY RUN FIELD, FOOTBALL FIELD)
Achievement roomDecoAchievement = Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomDecoFurniCount"); Achievement roomDecoAchievement = Emulator.getGameEnvironment().getAchievementManager().getAchievement("RoomDecoFurniCount");
Habbo owner = room.getRoomUnitManager().getRoomHabboById(this.getUserId()); Habbo owner = room.getRoomUnitManager().getRoomHabboById(this.getOwnerId());
int furniCollecterProgress; int furniCollecterProgress;
if (owner == null) { if (owner == null) {
furniCollecterProgress = AchievementManager.getAchievementProgressForHabbo(this.getUserId(), roomDecoAchievement); furniCollecterProgress = AchievementManager.getAchievementProgressForHabbo(this.getOwnerId(), roomDecoAchievement);
} else { } else {
furniCollecterProgress = owner.getHabboStats().getAchievementProgress(roomDecoAchievement); furniCollecterProgress = owner.getHabboStats().getAchievementProgress(roomDecoAchievement);
} }
int difference = room.getUserFurniCount(this.getUserId()) - furniCollecterProgress; int difference = room.getUserFurniCount(this.getOwnerId()) - furniCollecterProgress;
if (difference > 0) { if (difference > 0) {
if (owner != null) { if (owner != null) {
AchievementManager.progressAchievement(owner, roomDecoAchievement, difference); AchievementManager.progressAchievement(owner, roomDecoAchievement, difference);
} else { } else {
AchievementManager.progressAchievement(this.getUserId(), roomDecoAchievement, difference); AchievementManager.progressAchievement(this.getOwnerId(), roomDecoAchievement, difference);
} }
} }
@ -321,17 +319,17 @@ public abstract class RoomItem implements Runnable, IEventTriggers {
int uniqueFurniCollecterProgress; int uniqueFurniCollecterProgress;
if (owner == null) { if (owner == null) {
uniqueFurniCollecterProgress = AchievementManager.getAchievementProgressForHabbo(this.getUserId(), roomDecoUniqueAchievement); uniqueFurniCollecterProgress = AchievementManager.getAchievementProgressForHabbo(this.getOwnerId(), roomDecoUniqueAchievement);
} else { } else {
uniqueFurniCollecterProgress = owner.getHabboStats().getAchievementProgress(roomDecoUniqueAchievement); uniqueFurniCollecterProgress = owner.getHabboStats().getAchievementProgress(roomDecoUniqueAchievement);
} }
int uniqueDifference = room.getUserUniqueFurniCount(this.getUserId()) - uniqueFurniCollecterProgress; int uniqueDifference = room.getUserUniqueFurniCount(this.getOwnerId()) - uniqueFurniCollecterProgress;
if (uniqueDifference > 0) { if (uniqueDifference > 0) {
if (owner != null) { if (owner != null) {
AchievementManager.progressAchievement(owner, roomDecoUniqueAchievement, uniqueDifference); AchievementManager.progressAchievement(owner, roomDecoUniqueAchievement, uniqueDifference);
} else { } else {
AchievementManager.progressAchievement(this.getUserId(), roomDecoUniqueAchievement, uniqueDifference); AchievementManager.progressAchievement(this.getOwnerId(), roomDecoUniqueAchievement, uniqueDifference);
} }
} }
} }

View File

@ -11,6 +11,9 @@ import com.eu.habbo.habbohotel.rooms.RoomUnitStatus;
import com.eu.habbo.habbohotel.rooms.entities.RoomEntity; import com.eu.habbo.habbohotel.rooms.entities.RoomEntity;
import com.eu.habbo.habbohotel.rooms.entities.RoomRotation; import com.eu.habbo.habbohotel.rooms.entities.RoomRotation;
import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem;
import com.eu.habbo.habbohotel.rooms.entities.units.types.RoomAvatar;
import com.eu.habbo.habbohotel.users.DanceType;
import com.eu.habbo.messages.outgoing.rooms.users.UserUpdateComposer;
import com.eu.habbo.plugin.Event; import com.eu.habbo.plugin.Event;
import com.eu.habbo.plugin.events.roomunit.RoomUnitLookAtPointEvent; import com.eu.habbo.plugin.events.roomunit.RoomUnitLookAtPointEvent;
import com.eu.habbo.plugin.events.roomunit.RoomUnitSetGoalEvent; import com.eu.habbo.plugin.events.roomunit.RoomUnitSetGoalEvent;
@ -144,6 +147,7 @@ public abstract class RoomUnit extends RoomEntity {
public void setRotation(RoomRotation rotation) { public void setRotation(RoomRotation rotation) {
this.bodyRotation = rotation; this.bodyRotation = rotation;
this.headRotation = rotation; this.headRotation = rotation;
this.statusUpdateNeeded = true;
} }
public void clearWalking() { public void clearWalking() {
@ -157,7 +161,7 @@ public abstract class RoomUnit extends RoomEntity {
public void stopWalking() { public void stopWalking() {
synchronized (this.statuses) { synchronized (this.statuses) {
this.statuses.remove(RoomUnitStatus.MOVE); this.statuses.remove(RoomUnitStatus.MOVE);
this.setStatusUpdateNeeded(true); this.statusUpdateNeeded = true;
this.setGoalLocation(this.getCurrentPosition()); this.setGoalLocation(this.getCurrentPosition());
} }
} }
@ -249,12 +253,14 @@ public abstract class RoomUnit extends RoomEntity {
public RoomUnit removeStatus(RoomUnitStatus key) { public RoomUnit removeStatus(RoomUnitStatus key) {
this.statuses.remove(key); this.statuses.remove(key);
this.statusUpdateNeeded = true;
return this; return this;
} }
public void setStatus(RoomUnitStatus key, String value) { public void setStatus(RoomUnitStatus key, String value) {
if (key != null && value != null) { if (key != null && value != null) {
this.statuses.put(key, value); this.statuses.put(key, value);
this.statusUpdateNeeded = true;
} }
} }
@ -262,6 +268,32 @@ public abstract class RoomUnit extends RoomEntity {
return this.statuses.containsKey(key); return this.statuses.containsKey(key);
} }
public void makeStand() {
RoomItem item = this.getRoom().getTopItemAt(this.getCurrentPosition().getX(), this.getCurrentPosition().getY());
if (item == null || !item.getBaseItem().allowSit() || !item.getBaseItem().allowLay()) {
this.setCmdStandEnabled(true);
this.setBodyRotation(RoomRotation.values()[this.getBodyRotation().getValue() - this.getBodyRotation().getValue() % 2]);
this.removeStatus(RoomUnitStatus.SIT);
this.getRoom().sendComposer(new UserUpdateComposer(this).compose());
}
}
public void makeSit() {
if (this.hasStatus(RoomUnitStatus.SIT) || !this.canForcePosture()) {
return;
}
this.setCmdSitEnabled(true);
this.setBodyRotation(RoomRotation.values()[this.getBodyRotation().getValue() - this.getBodyRotation().getValue() % 2]);
this.setStatus(RoomUnitStatus.SIT, 0.5 + "");
if(this instanceof RoomAvatar roomAvatar) {
roomAvatar.setDance(DanceType.NONE);
}
this.getRoom().sendComposer(new UserUpdateComposer(this).compose());
}
public void clearStatuses() { public void clearStatuses() {
this.statuses.clear(); this.statuses.clear();
} }
@ -311,10 +343,6 @@ public abstract class RoomUnit extends RoomEntity {
return this.idleTicks > Room.IDLE_CYCLES; //Amount of room cycles / 2 = seconds. return this.idleTicks > Room.IDLE_CYCLES; //Amount of room cycles / 2 = seconds.
} }
public int getIdleTicks() {
return this.idleTicks;
}
public void resetIdleTimer() { public void resetIdleTimer() {
this.idleTicks = 0; this.idleTicks = 0;
} }
@ -324,7 +352,9 @@ public abstract class RoomUnit extends RoomEntity {
} }
public void lookAtPoint(RoomTile location) { public void lookAtPoint(RoomTile location) {
if (!this.isCanRotate()) return; if (!this.isCanRotate()) {
return;
}
if (Emulator.getPluginManager().isRegistered(RoomUnitLookAtPointEvent.class, false)) { if (Emulator.getPluginManager().isRegistered(RoomUnitLookAtPointEvent.class, false)) {
Event lookAtPointEvent = new RoomUnitLookAtPointEvent(this.getRoom(), this, location); Event lookAtPointEvent = new RoomUnitLookAtPointEvent(this.getRoom(), this, location);
@ -338,15 +368,17 @@ public abstract class RoomUnit extends RoomEntity {
return; return;
} }
if (!this.statuses.containsKey(RoomUnitStatus.SIT)) {
this.bodyRotation = (RoomRotation.values()[Rotation.Calculate(this.getCurrentPosition().getX(), this.getCurrentPosition().getY(), location.getX(), location.getY())]);
}
RoomRotation rotation = (RoomRotation.values()[Rotation.Calculate(this.getCurrentPosition().getX(), this.getCurrentPosition().getY(), location.getX(), location.getY())]); RoomRotation rotation = (RoomRotation.values()[Rotation.Calculate(this.getCurrentPosition().getX(), this.getCurrentPosition().getY(), location.getX(), location.getY())]);
if (!this.statuses.containsKey(RoomUnitStatus.SIT)) {
this.bodyRotation = rotation;
}
if (Math.abs(rotation.getValue() - this.bodyRotation.getValue()) <= 1) { if (Math.abs(rotation.getValue() - this.bodyRotation.getValue()) <= 1) {
this.headRotation = rotation; this.headRotation = rotation;
} }
this.statusUpdateNeeded = true;
} }
public boolean canOverrideTile(RoomTile tile) { public boolean canOverrideTile(RoomTile tile) {

View File

@ -40,7 +40,7 @@ public class CallForHelpFromPhotoEvent extends MessageHandler {
if (!(item instanceof InteractionExternalImage)) return; if (!(item instanceof InteractionExternalImage)) return;
HabboInfo photoOwner = Emulator.getGameEnvironment().getHabboManager().getHabboInfo(item.getUserId()); HabboInfo photoOwner = Emulator.getGameEnvironment().getHabboManager().getHabboInfo(item.getOwnerId());
if (photoOwner == null) return; if (photoOwner == null) return;

View File

@ -37,8 +37,8 @@ public class AddSpamWallPostItEvent extends MessageHandler {
Room room = this.client.getHabbo().getRoomUnit().getRoom(); Room room = this.client.getHabbo().getRoomUnit().getRoom();
RoomItem sticky = room.getHabboItem(itemId); RoomItem sticky = room.getHabboItem(itemId);
if (sticky != null && sticky.getUserId() == this.client.getHabbo().getHabboInfo().getId()) { if (sticky != null && sticky.getOwnerId() == this.client.getHabbo().getHabboInfo().getId()) {
sticky.setUserId(room.getRoomInfo().getOwnerInfo().getId()); sticky.setOwnerId(room.getRoomInfo().getOwnerInfo().getId());
if (color.equalsIgnoreCase(PostItColor.YELLOW.hexColor)) { if (color.equalsIgnoreCase(PostItColor.YELLOW.hexColor)) {
color = PostItColor.randomColorNotYellow().hexColor; color = PostItColor.randomColorNotYellow().hexColor;
@ -47,7 +47,7 @@ public class AddSpamWallPostItEvent extends MessageHandler {
text = InteractionPostIt.STICKYPOLE_PREFIX_TEXT.replace("\\r", "\r").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername()).replace("%timestamp%", LocalDate.now().toString()) + text; text = InteractionPostIt.STICKYPOLE_PREFIX_TEXT.replace("\\r", "\r").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername()).replace("%timestamp%", LocalDate.now().toString()) + text;
} }
sticky.setUserId(room.getRoomInfo().getOwnerInfo().getId()); sticky.setOwnerId(room.getRoomInfo().getOwnerInfo().getId());
sticky.setExtradata(color + " " + text); sticky.setExtradata(color + " " + text);
sticky.needsUpdate(true); sticky.needsUpdate(true);
room.updateItem(sticky); room.updateItem(sticky);

View File

@ -25,7 +25,7 @@ public class CreditFurniRedeemEvent extends MessageHandler {
if (room != null) { if (room != null) {
RoomItem item = room.getHabboItem(itemId); RoomItem item = room.getHabboItem(itemId);
if (item != null && this.client.getHabbo().getHabboInfo().getId() == item.getUserId()) { if (item != null && this.client.getHabbo().getHabboInfo().getId() == item.getOwnerId()) {
boolean furnitureRedeemEventRegistered = Emulator.getPluginManager().isRegistered(FurnitureRedeemedEvent.class, true); boolean furnitureRedeemEventRegistered = Emulator.getPluginManager().isRegistered(FurnitureRedeemedEvent.class, true);
FurnitureRedeemedEvent furniRedeemEvent = new FurnitureRedeemedEvent(item, this.client.getHabbo(), 0, FurnitureRedeemedEvent.CREDITS); FurnitureRedeemedEvent furniRedeemEvent = new FurnitureRedeemedEvent(item, this.client.getHabbo(), 0, FurnitureRedeemedEvent.CREDITS);

View File

@ -30,7 +30,7 @@ public class CustomizeAvatarWithFurniEvent extends MessageHandler {
this.client.getHabbo().getRoomUnit().getRoom().hasRights(this.client.getHabbo())) { this.client.getHabbo().getRoomUnit().getRoom().hasRights(this.client.getHabbo())) {
RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(itemId); RoomItem item = this.client.getHabbo().getRoomUnit().getRoom().getHabboItem(itemId);
if (item != null && item.getUserId() == this.client.getHabbo().getHabboInfo().getId()) { if (item != null && item.getOwnerId() == this.client.getHabbo().getHabboInfo().getId()) {
if (item instanceof InteractionClothing) { if (item instanceof InteractionClothing) {
ClothItem clothing = Emulator.getGameEnvironment().getCatalogManager().getClothing(item.getBaseItem().getName()); ClothItem clothing = Emulator.getGameEnvironment().getCatalogManager().getClothing(item.getBaseItem().getName());

View File

@ -24,15 +24,15 @@ public class PickupObjectEvent extends MessageHandler {
return; return;
} }
if (item.getUserId() == this.client.getHabbo().getHabboInfo().getId()) { if (item.getOwnerId() == this.client.getHabbo().getHabboInfo().getId()) {
room.getRoomItemManager().pickUpItem(item, this.client.getHabbo()); room.getRoomItemManager().pickUpItem(item, this.client.getHabbo());
} else { } else {
if (room.hasRights(this.client.getHabbo())) { if (room.hasRights(this.client.getHabbo())) {
if (this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { if (this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) {
item.setUserId(this.client.getHabbo().getHabboInfo().getId()); item.setOwnerId(this.client.getHabbo().getHabboInfo().getId());
} else { } else {
if (!room.getRoomInfo().isRoomOwner(this.client.getHabbo())) { if (!room.getRoomInfo().isRoomOwner(this.client.getHabbo())) {
if (item.getUserId() == room.getRoomInfo().getOwnerInfo().getId()) { if (item.getOwnerId() == room.getRoomInfo().getOwnerInfo().getId()) {
return; return;
} }
} }

View File

@ -31,7 +31,7 @@ public class PlacePostItEvent extends MessageHandler {
item.setExtradata("FFFF33"); item.setExtradata("FFFF33");
item.setRoomId(this.client.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId()); item.setRoomId(this.client.getHabbo().getRoomUnit().getRoom().getRoomInfo().getId());
item.setWallPosition(location); item.setWallPosition(location);
item.setUserId(this.client.getHabbo().getHabboInfo().getId()); item.setOwnerId(this.client.getHabbo().getHabboInfo().getId());
item.needsUpdate(true); item.needsUpdate(true);
room.sendComposer(new ItemAddMessageComposer(item, this.client.getHabbo().getHabboInfo().getUsername()).compose()); room.sendComposer(new ItemAddMessageComposer(item, this.client.getHabbo().getHabboInfo().getUsername()).compose());
this.client.getHabbo().getInventory().getItemsComponent().removeHabboItem(item); this.client.getHabbo().getInventory().getItemsComponent().removeHabboItem(item);

View File

@ -23,7 +23,7 @@ public class RemoveItemEvent extends MessageHandler {
RoomItem item = room.getHabboItem(itemId); RoomItem item = room.getHabboItem(itemId);
if (item instanceof InteractionPostIt || item instanceof InteractionExternalImage) { if (item instanceof InteractionPostIt || item instanceof InteractionExternalImage) {
if (item.getUserId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) { if (item.getOwnerId() == this.client.getHabbo().getHabboInfo().getId() || this.client.getHabbo().hasRight(Permission.ACC_ANYROOMOWNER)) {
item.setRoomId(0); item.setRoomId(0);
room.removeHabboItem(item); room.removeHabboItem(item);
room.sendComposer(new ItemRemoveMessageComposer(item).compose()); room.sendComposer(new ItemRemoveMessageComposer(item).compose());

View File

@ -22,7 +22,7 @@ public class OpenPetPackageEvent extends MessageHandler {
if (room != null) { if (room != null) {
RoomItem item = room.getHabboItem(itemId); RoomItem item = room.getHabboItem(itemId);
if (item != null && item.getUserId() == this.client.getHabbo().getHabboInfo().getId()) { if (item != null && item.getOwnerId() == this.client.getHabbo().getHabboInfo().getId()) {
if (!name.matches("^[a-zA-Z0-9]*$")) { if (!name.matches("^[a-zA-Z0-9]*$")) {
this.client.sendResponse(new PerkAllowancesComposer(itemId, PerkAllowancesComposer.CONTAINS_INVALID_CHARS, name.replaceAll("^[a-zA-Z0-9]*$", ""))); this.client.sendResponse(new PerkAllowancesComposer(itemId, PerkAllowancesComposer.CONTAINS_INVALID_CHARS, name.replaceAll("^[a-zA-Z0-9]*$", "")));
return; return;
@ -66,7 +66,7 @@ public class OpenPetPackageEvent extends MessageHandler {
RoomTile tile = room.getLayout().getTile(item.getX(), item.getY()); RoomTile tile = room.getLayout().getTile(item.getX(), item.getY());
room.updateTile(room.getLayout().getTile(item.getX(), item.getY())); room.updateTile(room.getLayout().getTile(item.getX(), item.getY()));
room.sendComposer(new HeightMapUpdateMessageComposer(tile.getX(), tile.getY(), tile.getZ(), tile.relativeHeight()).compose()); room.sendComposer(new HeightMapUpdateMessageComposer(tile.getX(), tile.getY(), tile.getZ(), tile.relativeHeight()).compose());
item.setUserId(0); item.setOwnerId(0);
} else { } else {
this.client.sendResponse(new PurchaseErrorMessageComposer(PurchaseErrorMessageComposer.SERVER_ERROR)); this.client.sendResponse(new PurchaseErrorMessageComposer(PurchaseErrorMessageComposer.SERVER_ERROR));
} }

View File

@ -11,7 +11,8 @@ public class ChangePostureEvent extends MessageHandler {
if (this.client.getHabbo().getRoomUnit().isWalking()) { if (this.client.getHabbo().getRoomUnit().isWalking()) {
this.client.getHabbo().getRoomUnit().stopWalking(); this.client.getHabbo().getRoomUnit().stopWalking();
} }
this.client.getHabbo().getRoomUnit().getRoom().makeSit(this.client.getHabbo());
this.client.getHabbo().getRoomUnit().makeSit();
UserIdleEvent event = new UserIdleEvent(this.client.getHabbo(), UserIdleEvent.IdleReason.WALKED, false); UserIdleEvent event = new UserIdleEvent(this.client.getHabbo(), UserIdleEvent.IdleReason.WALKED, false);
Emulator.getPluginManager().fireEvent(event); Emulator.getPluginManager().fireEvent(event);

View File

@ -51,8 +51,6 @@ public class LookToEvent extends MessageHandler {
if (tile != null) { if (tile != null) {
roomUnit.lookAtPoint(tile); roomUnit.lookAtPoint(tile);
roomUnit.setStatusUpdateNeeded(true);
//room.sendComposer(new RoomUserStatusComposer(roomUnit).compose());
} }
} }
} }

View File

@ -127,7 +127,7 @@ public class MoveAvatarEvent extends MessageHandler {
return; return;
} }
if (room.canLayAt(tile.getX(), tile.getY())) { if (room.canLayAt(tile)) {
RoomItem bed = room.getTopItemAt(tile.getX(), tile.getY()); RoomItem bed = room.getTopItemAt(tile.getX(), tile.getY());
if (bed != null && bed.getBaseItem().allowLay()) { if (bed != null && bed.getBaseItem().allowLay()) {
@ -138,7 +138,7 @@ public class MoveAvatarEvent extends MessageHandler {
default -> room.getLayout().getTile(bed.getX(), bed.getY()); default -> room.getLayout().getTile(bed.getX(), bed.getY());
}; };
if (pillow != null && room.canLayAt(pillow.getX(), pillow.getY())) { if (pillow != null && room.canLayAt(pillow)) {
roomUnit.setGoalLocation(pillow); roomUnit.setGoalLocation(pillow);
return; return;
} }

View File

@ -14,7 +14,7 @@ public class ItemRemoveMessageComposer extends MessageComposer {
protected ServerMessage composeInternal() { protected ServerMessage composeInternal() {
this.response.init(Outgoing.itemRemoveMessageComposer); this.response.init(Outgoing.itemRemoveMessageComposer);
this.response.appendString(this.item.getId() + ""); this.response.appendString(this.item.getId() + "");
this.response.appendInt(this.item.getUserId()); this.response.appendInt(this.item.getOwnerId());
return this.response; return this.response;
} }
} }

View File

@ -15,7 +15,7 @@ public class ItemUpdateMessageComposer extends MessageComposer {
protected ServerMessage composeInternal() { protected ServerMessage composeInternal() {
this.response.init(Outgoing.itemUpdateMessageComposer); this.response.init(Outgoing.itemUpdateMessageComposer);
this.item.serializeWallData(this.response); this.item.serializeWallData(this.response);
this.response.appendString(this.item.getUserId() + ""); this.response.appendString(this.item.getOwnerId() + "");
return this.response; return this.response;
} }
} }

View File

@ -21,7 +21,7 @@ public class ObjectAddMessageComposer extends MessageComposer {
this.item.serializeExtradata(this.response); this.item.serializeExtradata(this.response);
this.response.appendInt(-1); this.response.appendInt(-1);
this.response.appendInt(this.item instanceof InteractionTeleport || this.item instanceof InteractionSwitch || this.item instanceof InteractionSwitchRemoteControl || this.item instanceof InteractionVendingMachine || this.item instanceof InteractionInformationTerminal || this.item instanceof InteractionPostIt || this.item instanceof InteractionSpinningBottle || this.item instanceof InteractionPuzzleBox ? 2 : this.item.isUsable() ? 1 : 0); this.response.appendInt(this.item instanceof InteractionTeleport || this.item instanceof InteractionSwitch || this.item instanceof InteractionSwitchRemoteControl || this.item instanceof InteractionVendingMachine || this.item instanceof InteractionInformationTerminal || this.item instanceof InteractionPostIt || this.item instanceof InteractionSpinningBottle || this.item instanceof InteractionPuzzleBox ? 2 : this.item.isUsable() ? 1 : 0);
this.response.appendInt(this.item.getUserId()); this.response.appendInt(this.item.getOwnerId());
this.response.appendString(this.itemOwnerName); this.response.appendString(this.itemOwnerName);
return this.response; return this.response;
} }

View File

@ -21,7 +21,7 @@ public class ObjectUpdateMessageComposer extends MessageComposer {
this.item.serializeExtradata(this.response); this.item.serializeExtradata(this.response);
this.response.appendInt(-1); this.response.appendInt(-1);
this.response.appendInt(0); this.response.appendInt(0);
this.response.appendInt(this.item.getUserId()); this.response.appendInt(this.item.getOwnerId());
return this.response; return this.response;
} }
} }

View File

@ -43,7 +43,7 @@ public class ObjectsMessageComposer extends MessageComposer {
item.serializeExtradata(this.response); item.serializeExtradata(this.response);
this.response.appendInt(-1); this.response.appendInt(-1);
this.response.appendInt(item instanceof InteractionTeleport || item instanceof InteractionSwitch || item instanceof InteractionSwitchRemoteControl || item instanceof InteractionVendingMachine || item instanceof InteractionInformationTerminal || item instanceof InteractionPostIt || item instanceof InteractionSpinningBottle || item instanceof InteractionPuzzleBox ? 2 : item.isUsable() ? 1 : 0); this.response.appendInt(item instanceof InteractionTeleport || item instanceof InteractionSwitch || item instanceof InteractionSwitchRemoteControl || item instanceof InteractionVendingMachine || item instanceof InteractionInformationTerminal || item instanceof InteractionPostIt || item instanceof InteractionSpinningBottle || item instanceof InteractionPuzzleBox ? 2 : item.isUsable() ? 1 : 0);
this.response.appendInt(item.getUserId()); this.response.appendInt(item.getOwnerId());
} }
return this.response; return this.response;
} }

View File

@ -23,7 +23,7 @@ public class RemoveFloorItemComposer extends MessageComposer {
this.response.appendString(this.item.getId() + ""); this.response.appendString(this.item.getId() + "");
this.response.appendBoolean(false); this.response.appendBoolean(false);
this.response.appendInt(this.noUser ? 0 : this.item.getUserId()); this.response.appendInt(this.noUser ? 0 : this.item.getOwnerId());
this.response.appendInt(0); this.response.appendInt(0);
return this.response; return this.response;

View File

@ -4,8 +4,8 @@ import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.items.interactions.InteractionRentableSpace; import com.eu.habbo.habbohotel.items.interactions.InteractionRentableSpace;
import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.Room;
import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomTile;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer; import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer;
import gnu.trove.set.hash.THashSet; import gnu.trove.set.hash.THashSet;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
@ -21,7 +21,7 @@ public class ClearRentedSpace implements Runnable {
for (RoomTile t : this.room.getLayout().getTilesAt(this.room.getLayout().getTile(this.item.getX(), this.item.getY()), this.item.getBaseItem().getWidth(), this.item.getBaseItem().getLength(), this.item.getRotation())) { for (RoomTile t : this.room.getLayout().getTilesAt(this.room.getLayout().getTile(this.item.getX(), this.item.getY()), this.item.getBaseItem().getWidth(), this.item.getBaseItem().getLength(), this.item.getRotation())) {
for (RoomItem i : this.room.getItemsAt(t)) { for (RoomItem i : this.room.getItemsAt(t)) {
if (i.getUserId() == this.item.getRenterId()) { if (i.getOwnerId() == this.item.getRenterId()) {
items.add(i); items.add(i);
i.setRoomId(0); i.setRoomId(0);
i.needsUpdate(true); i.needsUpdate(true);

View File

@ -40,7 +40,7 @@ public class CrackableExplode implements Runnable {
Item rewardItem = Emulator.getGameEnvironment().getItemManager().getCrackableReward(this.habboItem.getBaseItem().getId()); Item rewardItem = Emulator.getGameEnvironment().getItemManager().getCrackableReward(this.habboItem.getBaseItem().getId());
if (rewardItem != null) { if (rewardItem != null) {
RoomItem newItem = Emulator.getGameEnvironment().getItemManager().createItem(this.habboItem.allowAnyone() ? this.habbo.getHabboInfo().getId() : this.habboItem.getUserId(), rewardItem, 0, 0, ""); RoomItem newItem = Emulator.getGameEnvironment().getItemManager().createItem(this.habboItem.allowAnyone() ? this.habbo.getHabboInfo().getId() : this.habboItem.getOwnerId(), rewardItem, 0, 0, "");
if (newItem != null) { if (newItem != null) {
//Add to inventory in case if isn't possible place the item or in case is wall item //Add to inventory in case if isn't possible place the item or in case is wall item
@ -56,7 +56,7 @@ public class CrackableExplode implements Runnable {
newItem.needsUpdate(true); newItem.needsUpdate(true);
this.room.addHabboItem(newItem); this.room.addHabboItem(newItem);
this.room.updateItem(newItem); this.room.updateItem(newItem);
this.room.sendComposer(new ObjectAddMessageComposer(newItem, this.room.getFurniOwnerNames().get(newItem.getUserId())).compose()); this.room.sendComposer(new ObjectAddMessageComposer(newItem, this.room.getFurniOwnerNames().get(newItem.getOwnerId())).compose());
} }
} }
} }

View File

@ -24,7 +24,6 @@ public class HabboGiveHandItemToHabbo implements Runnable {
this.from.getRoomUnit().setHandItem(0); this.from.getRoomUnit().setHandItem(0);
this.from.getRoomUnit().getRoom().sendComposer(new CarryObjectMessageComposer(this.from.getRoomUnit()).compose()); this.from.getRoomUnit().getRoom().sendComposer(new CarryObjectMessageComposer(this.from.getRoomUnit()).compose());
this.target.getRoomUnit().lookAtPoint(this.from.getRoomUnit().getCurrentPosition()); this.target.getRoomUnit().lookAtPoint(this.from.getRoomUnit().getCurrentPosition());
this.target.getRoomUnit().setStatusUpdateNeeded(true);
this.target.getClient().sendResponse(new HandItemReceivedMessageComposer(this.from.getRoomUnit(), itemId)); this.target.getClient().sendResponse(new HandItemReceivedMessageComposer(this.from.getRoomUnit(), itemId));
this.target.getRoomUnit().setHandItem(itemId); this.target.getRoomUnit().setHandItem(itemId);
this.target.getRoomUnit().getRoom().sendComposer(new CarryObjectMessageComposer(this.target.getRoomUnit()).compose()); this.target.getRoomUnit().getRoom().sendComposer(new CarryObjectMessageComposer(this.target.getRoomUnit()).compose());

View File

@ -4,8 +4,8 @@ import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.items.interactions.InteractionGift; import com.eu.habbo.habbohotel.items.interactions.InteractionGift;
import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.Room;
import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomTile;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem; import com.eu.habbo.habbohotel.rooms.entities.items.RoomItem;
import com.eu.habbo.habbohotel.users.Habbo;
import com.eu.habbo.messages.outgoing.inventory.FurniListAddOrUpdateComposer; import com.eu.habbo.messages.outgoing.inventory.FurniListAddOrUpdateComposer;
import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer; import com.eu.habbo.messages.outgoing.inventory.FurniListInvalidateComposer;
import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer; import com.eu.habbo.messages.outgoing.inventory.UnseenItemsComposer;
@ -37,7 +37,7 @@ public class OpenGift implements Runnable {
if (inside == null) if (inside == null)
inside = i; inside = i;
i.setUserId(this.habbo.getHabboInfo().getId()); i.setOwnerId(this.habbo.getHabboInfo().getId());
i.needsUpdate(true); i.needsUpdate(true);
i.run(); i.run();
} }