Arcturus-Community/src/main/java/com/eu/habbo/messages/incoming/rooms/RoomSettingsSaveEvent.java

145 lines
6.4 KiB
Java
Raw Normal View History

2018-07-06 15:30:00 +02:00
package com.eu.habbo.messages.incoming.rooms;
import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.modtool.ScripterManager;
2018-07-06 15:30:00 +02:00
import com.eu.habbo.habbohotel.rooms.Room;
import com.eu.habbo.habbohotel.rooms.RoomCategory;
import com.eu.habbo.habbohotel.rooms.RoomState;
import com.eu.habbo.messages.incoming.MessageHandler;
import com.eu.habbo.messages.outgoing.rooms.*;
public class RoomSettingsSaveEvent extends MessageHandler
{
@Override
public void handle() throws Exception
{
int roomId = this.packet.readInt();
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId);
if(room != null)
{
if(room.isOwner(this.client.getHabbo()))
{
String name = this.packet.readString();
if (name.isEmpty())
{
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.ROOM_NAME_MISSING, ""));
return;
}
if (!Emulator.getGameEnvironment().getWordFilter().filter(name, this.client.getHabbo()).equals(name))
{
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.ROOM_NAME_BADWORDS, ""));
return;
}
String description = this.packet.readString();
if (!Emulator.getGameEnvironment().getWordFilter().filter(description, this.client.getHabbo()).equals(description))
{
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.ROOM_DESCRIPTION_BADWORDS, ""));
return;
}
RoomState state = RoomState.values()[this.packet.readInt() % RoomState.values().length];
String password = this.packet.readString();
if (state == RoomState.PASSWORD && password.isEmpty())
{
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.PASSWORD_REQUIRED, ""));
return;
}
int usersMax = this.packet.readInt();
int categoryId = this.packet.readInt();
2019-03-18 02:22:00 +01:00
StringBuilder tags = new StringBuilder();
2018-07-06 15:30:00 +02:00
int count = Math.min(this.packet.readInt(), 2);
for(int i = 0; i < count; i++)
{
String tag = this.packet.readString();
if (tag.length() > 15)
{
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.TAGS_TOO_LONG, ""));
return;
}
2019-03-18 02:22:00 +01:00
tags.append(tag).append(";");
2018-07-06 15:30:00 +02:00
}
2019-03-18 02:22:00 +01:00
if (!Emulator.getGameEnvironment().getWordFilter().filter(tags.toString(), this.client.getHabbo()).equals(tags.toString()))
2018-07-06 15:30:00 +02:00
{
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.ROOM_TAGS_BADWWORDS, ""));
return;
}
2019-03-18 02:22:00 +01:00
if (tags.length() > 0)
2018-07-06 15:30:00 +02:00
{
for (String s : Emulator.getConfig().getValue("hotel.room.tags.staff").split(";"))
{
2019-03-18 02:22:00 +01:00
if (tags.toString().contains(s))
2018-07-06 15:30:00 +02:00
{
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.RESTRICTED_TAGS, "1"));
return;
}
}
}
room.setName(name);
room.setDescription(description);
room.setState(state);
room.setPassword(password);
room.setUsersMax(usersMax);
if(Emulator.getGameEnvironment().getRoomManager().hasCategory(categoryId, this.client.getHabbo()))
room.setCategory(categoryId);
else
{
RoomCategory category = Emulator.getGameEnvironment().getRoomManager().getCategory(categoryId);
2019-03-18 02:22:00 +01:00
String message;
2018-07-06 15:30:00 +02:00
if(category == null)
{
2019-03-18 02:22:00 +01:00
message = Emulator.getTexts().getValue("scripter.warning.roomsettings.category.nonexisting").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername());
2018-07-06 15:30:00 +02:00
}
else
{
2019-03-18 02:22:00 +01:00
message = Emulator.getTexts().getValue("scripter.warning.roomsettings.category.permission").replace("%username%", this.client.getHabbo().getHabboInfo().getUsername()).replace("%category%", Emulator.getGameEnvironment().getRoomManager().getCategory(categoryId) + "");
2018-07-06 15:30:00 +02:00
}
ScripterManager.scripterDetected(this.client, message);
2018-07-06 15:30:00 +02:00
Emulator.getLogging().logUserLine(message);
}
2019-03-18 02:22:00 +01:00
room.setTags(tags.toString());
2018-07-06 15:30:00 +02:00
room.setTradeMode(this.packet.readInt());
room.setAllowPets(this.packet.readBoolean());
room.setAllowPetsEat(this.packet.readBoolean());
room.setAllowWalkthrough(this.packet.readBoolean());
room.setHideWall(this.packet.readBoolean());
room.setWallSize(this.packet.readInt());
room.setFloorSize(this.packet.readInt());
room.setMuteOption(this.packet.readInt());
room.setKickOption(this.packet.readInt());
room.setBanOption(this.packet.readInt());
room.setChatMode(this.packet.readInt());
room.setChatWeight(this.packet.readInt());
room.setChatSpeed(this.packet.readInt());
room.setChatDistance(Math.abs(this.packet.readInt()));
room.setChatProtection(this.packet.readInt());
room.setNeedsUpdate(true);
room.sendComposer(new RoomThicknessComposer(room).compose());
room.sendComposer(new RoomChatSettingsComposer(room).compose());
room.sendComposer(new RoomSettingsUpdatedComposer(room).compose());
this.client.sendResponse(new RoomSettingsSavedComposer(room));
//TODO Find packet for update room name.
}
}
}
}