From 6f241035282dd1604881caf32cd4c51b9669929f Mon Sep 17 00:00:00 2001 From: KrewsOrg Date: Wed, 1 May 2019 00:59:25 +0100 Subject: [PATCH] Fixed dismounting. Added `hotel.room.wired.norules` which is disabled by default, which will allow you to use wired to place furniture under users. --- sqlupdates/1_16_0_TO_2_0_0.sql | 4 ++++ .../wired/effects/WiredEffectMatchFurni.java | 18 +++++++++++++++- .../effects/WiredEffectMoveRotateFurni.java | 12 +++++++++++ .../com/eu/habbo/habbohotel/rooms/Room.java | 20 +++++++++++++----- .../habbo/habbohotel/rooms/RoomManager.java | 21 ++++++++++--------- .../incoming/rooms/pets/HorseRideEvent.java | 2 ++ 6 files changed, 61 insertions(+), 16 deletions(-) create mode 100644 sqlupdates/1_16_0_TO_2_0_0.sql diff --git a/sqlupdates/1_16_0_TO_2_0_0.sql b/sqlupdates/1_16_0_TO_2_0_0.sql new file mode 100644 index 00000000..6c4a217b --- /dev/null +++ b/sqlupdates/1_16_0_TO_2_0_0.sql @@ -0,0 +1,4 @@ +#DATABASE UPDATE: 1.16.0 -> 2.0.0 +INSERT INTO `catalog_pages`(`id`, `parent_id`, `caption_save`, `caption`, `icon_color`, `icon_image`, `visible`, `enabled`, `min_rank`, `club_only`, `order_num`, `page_layout`, `page_headline`, `page_teaser`, `page_special`, `page_text1`, `page_text2`, `page_text_details`, `page_text_teaser`, `vip_only`, `includes`, `room_id`) VALUES (null, null, 'guilds_forum', 'Group Forums', 1, 27181, '1', '1', 1, '0', 2, 'guild_forum', 'catalog_groups_en', 'catalog_groupsteaser_en', '', 'Group Forums are finally here at NextGenHabbo.com! Buy a terminal and chat to your groups!', '', 'What are Group Forums?

Forums allow you to effortlessly post, comment and discuss topics freely, without even leaving the hotel!

Who can start a forum?

Only a group owner can start a forum for their group.

Do I need a Forum Terminal?

Yes - In order to start a group forum the group owner must first purchase a forum terminal for the group.

Please note, we will continue to provide bug fixes with terminals in the near future!', '', '0', '', 0); + +#END DATABASE UPDATE: 1.16.0 -> 2.0.0 \ No newline at end of file diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java index 2894090d..e2297d7a 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMatchFurni.java @@ -9,6 +9,7 @@ import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomTile; import com.eu.habbo.habbohotel.rooms.RoomTileState; import com.eu.habbo.habbohotel.rooms.RoomUnit; +import com.eu.habbo.habbohotel.users.Habbo; import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.habbohotel.wired.WiredEffectType; import com.eu.habbo.habbohotel.wired.WiredHandler; @@ -91,8 +92,10 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect canMove = !(room.getTopItemAt(t.x, t.y) == item); slideAnimation = false; } + // TODO: MOVE THIS TO ARCTURUSEXTENDED INSTEAD OF A CONFIG. + // if (canMove && !room.hasHabbosAt(t.x, t.y)) + if ((canMove && !room.hasHabbosAt(t.x, t.y) && !Emulator.getConfig().getBoolean("hotel.room.wired.norules")) || (Emulator.getConfig().getBoolean("hotel.room.wired.norules") && (!room.hasHabbosAt(t.x, t.y) || item.isWalkable() || item.getBaseItem().allowSit()))) - if (canMove && !room.hasHabbosAt(t.x, t.y)) { THashSet tiles = room.getLayout().getTilesAt(t, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), setting.rotation); double highestZ = -1d; @@ -133,6 +136,19 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect room.sendComposer(new FloorItemOnRollerComposer(item, null, t, offsetZ, room).compose()); } + // TODO: MOVE THIS TO ARCTURUSEXTENDED INSTEAD OF A CONFIG. + if(Emulator.getConfig().getBoolean("hotel.room.wired.norules")) { + if (room.hasHabbosAt(t.x, t.y)) { + THashSet habbos = room.getHabbosAt(t.x, t.y); + for (Habbo habbo : habbos) { + try { + item.onWalkOn(habbo.getRoomUnit(), room, null); + } catch (Exception e) { + } + } + } + } + } } } diff --git a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveRotateFurni.java b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveRotateFurni.java index 638db8e9..ebf0ae25 100644 --- a/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveRotateFurni.java +++ b/src/main/java/com/eu/habbo/habbohotel/items/interactions/wired/effects/WiredEffectMoveRotateFurni.java @@ -99,6 +99,18 @@ public class WiredEffectMoveRotateFurni extends InteractionWiredEffect { tilesToUpdate.addAll(room.getLayout().getTilesAt(room.getLayout().getTile(item.getX(), item.getY()), item.getBaseItem().getWidth(), item.getBaseItem().getLength(), item.getRotation())); room.sendComposer(new FloorItemUpdateComposer(item).compose()); + // TODO: MOVE THIS TO ARCTURUSEXTENDED INSTEAD OF A CONFIG. + if(Emulator.getConfig().getBoolean("hotel.room.wired.norules")) { + if (room.hasHabbosAt(item.getX(), item.getY())) { + THashSet habbos = room.getHabbosAt(item.getX(), item.getY()); + for (Habbo habbo : habbos) { + try { + item.onWalkOn(habbo.getRoomUnit(), room, null); + } catch (Exception e) { + } + } + } + } } } diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java b/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java index 7aa2d2ba..2fbc2c77 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/Room.java @@ -5382,12 +5382,22 @@ public class Room implements Comparable, ISerialize, Runnable public FurnitureMovementError furnitureFitsAt(RoomTile tile, HabboItem item, int rotation) { THashSet occupiedTiles = this.layout.getTilesAt(tile, item.getBaseItem().getWidth(), item.getBaseItem().getLength(), rotation); + if(Emulator.getConfig().getBoolean("hotel.room.wired.norules") && !item.getBaseItem().allowSit() && !item.isWalkable()) { + for (RoomTile t : occupiedTiles) { - for (RoomTile t : occupiedTiles) - { - if (this.hasHabbosAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_HABBOS; - if (this.hasBotsAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_BOTS; - if (this.hasPetsAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_PETS; + if (this.hasHabbosAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_HABBOS; + if (this.hasBotsAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_BOTS; + if (this.hasPetsAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_PETS; + } + } + + if(!Emulator.getConfig().getBoolean("hotel.room.wired.norules")) { + for (RoomTile t : occupiedTiles) { + + if (this.hasHabbosAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_HABBOS; + if (this.hasBotsAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_BOTS; + if (this.hasPetsAt(t.x, t.y)) return FurnitureMovementError.TILE_HAS_PETS; + } } List>> tileFurniList = new ArrayList<>(); diff --git a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java index 78349211..da244ea2 100644 --- a/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java +++ b/src/main/java/com/eu/habbo/habbohotel/rooms/RoomManager.java @@ -1070,16 +1070,6 @@ public class RoomManager if(habbo.getHabboInfo().getCurrentRoom() != null && habbo.getHabboInfo().getCurrentRoom() == room) { habbo.getRoomUnit().setPathFinderRoom(null); - if (habbo.getHabboInfo().getRiding() != null) - { - if (habbo.getHabboInfo().getRiding().getRoomUnit() != null) - { - habbo.getHabboInfo().getRiding().getRoomUnit().setGoalLocation(habbo.getHabboInfo().getRiding().getRoomUnit().getCurrentLocation()); - } - habbo.getHabboInfo().getRiding().setTask(PetTasks.FREE); - habbo.getHabboInfo().getRiding().setRider(null); - habbo.getHabboInfo().setRiding(null); - } if (!room.isOwner(habbo)) { @@ -1111,6 +1101,17 @@ public class RoomManager control.getRoomUnit().getCacheable().remove("controller"); } + if (habbo.getHabboInfo().getRiding() != null) + { + if (habbo.getHabboInfo().getRiding().getRoomUnit() != null) + { + habbo.getHabboInfo().getRiding().getRoomUnit().setGoalLocation(habbo.getHabboInfo().getRiding().getRoomUnit().getCurrentLocation()); + } + habbo.getHabboInfo().getRiding().setTask(PetTasks.FREE); + habbo.getHabboInfo().getRiding().setRider(null); + habbo.getHabboInfo().setRiding(null); + } + Room room = habbo.getHabboInfo().getCurrentRoom(); if(room != null) { diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/HorseRideEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/HorseRideEvent.java index 7685e4f9..cd3562ec 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/HorseRideEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/pets/HorseRideEvent.java @@ -65,10 +65,12 @@ public class HorseRideEvent extends MessageHandler } else { + // TODO : THIS IS NOT THE CORRECT WAY OF HANDLING MOUNTING. CHECK HABBO.COM. THE HORSE SHOULD NOT COME TO YOU. YOU SHOULD GO TO THE HORSE. this.client.getHabbo().getHabboInfo().getCurrentRoom().giveEffect(this.client.getHabbo(), 0, -1); ((HorsePet) pet).setRider(null); pet.setTask(PetTasks.FREE); this.client.getHabbo().getHabboInfo().setRiding(null); + this.client.getHabbo().getRoomUnit().setGoalLocation(this.client.getHabbo().getHabboInfo().getCurrentRoom().getLayout().getTileInFront(this.client.getHabbo().getRoomUnit().getCurrentLocation(), this.client.getHabbo().getRoomUnit().getBodyRotation().getValue())); } } }