diff --git a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoodLightSaveSettingsEvent.java b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoodLightSaveSettingsEvent.java index 105152da..e953255c 100644 --- a/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoodLightSaveSettingsEvent.java +++ b/src/main/java/com/eu/habbo/messages/incoming/rooms/items/MoodLightSaveSettingsEvent.java @@ -2,13 +2,19 @@ package com.eu.habbo.messages.incoming.rooms.items; import com.eu.habbo.Emulator; import com.eu.habbo.habbohotel.items.interactions.InteractionMoodLight; +import com.eu.habbo.habbohotel.modtool.ScripterManager; import com.eu.habbo.habbohotel.rooms.Room; import com.eu.habbo.habbohotel.rooms.RoomMoodlightData; import com.eu.habbo.habbohotel.users.HabboItem; import com.eu.habbo.messages.incoming.MessageHandler; import com.eu.habbo.messages.outgoing.rooms.items.MoodLightDataComposer; +import java.util.Arrays; +import java.util.List; + public class MoodLightSaveSettingsEvent extends MessageHandler { + public static List MOODLIGHT_AVAILABLE_COLORS = Arrays.asList("#74F5F5,#0053F7,#E759DE,#EA4532,#F2F851,#82F349,#000000".split(",")); + @Override public void handle() throws Exception { Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom(); @@ -19,14 +25,25 @@ public class MoodLightSaveSettingsEvent extends MessageHandler { int id = this.packet.readInt(); int backgroundOnly = this.packet.readInt(); String color = this.packet.readString(); - int intensity = this.packet.readInt(); + int brightness = this.packet.readInt(); + boolean apply = this.packet.readBoolean(); + + if (!MOODLIGHT_AVAILABLE_COLORS.contains(color)) { + ScripterManager.scripterDetected(this.client, "User tried to set a moodlight to a non-whitelisted color: " + color); + return; + } + + if (brightness > 0xFF || brightness <= (0.3 * 0xFF)) { + ScripterManager.scripterDetected(this.client, "User tried to set a moodlight's brightness to out-of-bounds ([76, 255]): " + brightness); + return; + } for (RoomMoodlightData data : room.getMoodlightData().valueCollection()) { if (data.getId() == id) { data.setBackgroundOnly(backgroundOnly == 2); data.setColor(color); - data.setIntensity(intensity); - data.enable(); + data.setIntensity(brightness); + if (apply) data.enable(); for (HabboItem item : room.getRoomSpecialTypes().getItemsOfType(InteractionMoodLight.class)) { item.setExtradata(data.toString()); @@ -34,7 +51,7 @@ public class MoodLightSaveSettingsEvent extends MessageHandler { room.updateItem(item); Emulator.getThreading().run(item); } - } else { + } else if (apply) { data.disable(); } }