Fix switching between moodlight presets

This commit is contained in:
Alejandro 2020-02-04 18:20:31 +02:00
parent 52da0df768
commit 9ee11df10f

View File

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