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

127 lines
6.3 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.*;
2019-05-26 20:14:53 +02:00
public class RoomSettingsSaveEvent extends MessageHandler {
2018-07-06 15:30:00 +02:00
@Override
2019-05-26 20:14:53 +02:00
public void handle() throws Exception {
2018-07-06 15:30:00 +02:00
int roomId = this.packet.readInt();
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(roomId);
2019-05-26 20:14:53 +02:00
if (room != null) {
if (room.isOwner(this.client.getHabbo())) {
2018-07-06 15:30:00 +02:00
String name = this.packet.readString();
2019-05-26 20:14:53 +02:00
if (name.isEmpty()) {
2018-07-06 15:30:00 +02:00
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.ROOM_NAME_MISSING, ""));
return;
}
2019-05-26 20:14:53 +02:00
if (!Emulator.getGameEnvironment().getWordFilter().filter(name, this.client.getHabbo()).equals(name)) {
2018-07-06 15:30:00 +02:00
this.client.sendResponse(new RoomEditSettingsErrorComposer(room.getId(), RoomEditSettingsErrorComposer.ROOM_NAME_BADWORDS, ""));
return;
}
String description = this.packet.readString();
2019-05-26 20:14:53 +02:00
if (!Emulator.getGameEnvironment().getWordFilter().filter(description, this.client.getHabbo()).equals(description)) {
2018-07-06 15:30:00 +02:00
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() && (room.getPassword() == null || room.getPassword().isEmpty())) {
2018-07-06 15:30:00 +02:00
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);
2019-05-26 20:14:53 +02:00
for (int i = 0; i < count; i++) {
2018-07-06 15:30:00 +02:00
String tag = this.packet.readString();
2019-05-26 20:14:53 +02:00
if (tag.length() > 15) {
2018-07-06 15:30:00 +02:00
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-05-26 20:14:53 +02: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-05-26 20:14:53 +02:00
if (tags.length() > 0) {
for (String s : Emulator.getConfig().getValue("hotel.room.tags.staff").split(";")) {
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);
if (!password.isEmpty()) room.setPassword(password);
2018-07-06 15:30:00 +02:00
room.setUsersMax(usersMax);
2019-05-26 20:14:53 +02:00
if (Emulator.getGameEnvironment().getRoomManager().hasCategory(categoryId, this.client.getHabbo()))
2018-07-06 15:30:00 +02:00
room.setCategory(categoryId);
2019-05-26 20:14:53 +02:00
else {
2018-07-06 15:30:00 +02:00
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
2019-05-26 20:14:53 +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());
2019-05-26 20:14:53 +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.
}
}
}
}