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()));
}
}
}