mirror of
https://git.krews.org/morningstar/Arcturus-Community.git
synced 2024-11-30 01:50:50 +01:00
Merge branch 'dev' into Snaiker/Arcturus-Community-patch-fix-issue-934
This commit is contained in:
commit
a93aad2b66
19
Dockerfile
Normal file
19
Dockerfile
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
FROM maven:latest AS builder
|
||||||
|
|
||||||
|
# Copy the Emulator sources to the container
|
||||||
|
COPY . .
|
||||||
|
# Package it
|
||||||
|
RUN mvn package && mv /target/Habbo*-with-dependencies.jar /target/Habbo.jar
|
||||||
|
|
||||||
|
# Use Java 8 for running
|
||||||
|
FROM java:8 AS runner
|
||||||
|
|
||||||
|
# Copy the generated source
|
||||||
|
COPY --from=builder /target/Habbo.jar /
|
||||||
|
|
||||||
|
# Save the script to wait for the database, among running the Arcturus Emulator
|
||||||
|
RUN echo "#!/bin/bash \n java -Dfile.encoding=UTF-8 -jar /Habbo.jar" > /entrypoint.sh
|
||||||
|
RUN chmod +x /entrypoint.sh
|
||||||
|
|
||||||
|
# Run the Emulator with Java
|
||||||
|
ENTRYPOINT ["/entrypoint.sh"]
|
@ -101,6 +101,8 @@ INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('commands.error.cmd_subscr
|
|||||||
|
|
||||||
INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('subscriptions.hc.payday.message', 'Woohoo HC Payday has arrived! You have received %amount% credits to your purse. Enjoy!');
|
INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('subscriptions.hc.payday.message', 'Woohoo HC Payday has arrived! You have received %amount% credits to your purse. Enjoy!');
|
||||||
|
|
||||||
|
INSERT INTO `emulator_settings` (`key`, `value`) VALUES ('hotel.roomuser.idle.not_dancing.ignore.wired_idle', '0');
|
||||||
|
|
||||||
-- OPTIONAL HC MIGRATION
|
-- OPTIONAL HC MIGRATION
|
||||||
-- INSERT INTO users_subscriptions SELECT NULL, user_id, 'HABBO_CLUB' as `subscription_type`, UNIX_TIMESTAMP() AS `timestamp_start`, (club_expire_timestamp - UNIX_TIMESTAMP()) AS `duration`, 1 AS `active` FROM users_settings WHERE club_expire_timestamp > UNIX_TIMESTAMP();
|
-- INSERT INTO users_subscriptions SELECT NULL, user_id, 'HABBO_CLUB' as `subscription_type`, UNIX_TIMESTAMP() AS `timestamp_start`, (club_expire_timestamp - UNIX_TIMESTAMP()) AS `duration`, 1 AS `active` FROM users_settings WHERE club_expire_timestamp > UNIX_TIMESTAMP();
|
||||||
|
|
||||||
@ -114,3 +116,13 @@ ADD COLUMN `bubble_id` int(3) NULL DEFAULT 31 AFTER `effect`;
|
|||||||
-- Permissions to see tent chat
|
-- Permissions to see tent chat
|
||||||
ALTER TABLE `permissions` ADD `acc_see_tentchat` ENUM('0', '1') NOT NULL DEFAULT '0' AFTER `acc_see_whispers`;
|
ALTER TABLE `permissions` ADD `acc_see_tentchat` ENUM('0', '1') NOT NULL DEFAULT '0' AFTER `acc_see_whispers`;
|
||||||
INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('hotel.room.tent.prefix', 'Tent');
|
INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('hotel.room.tent.prefix', 'Tent');
|
||||||
|
|
||||||
|
-- Roombadge command
|
||||||
|
ALTER TABLE `permissions` ADD `cmd_roombadge` ENUM('0', '1') NOT NULL DEFAULT '0' AFTER `cmd_massbadge`;
|
||||||
|
INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('commands.error.cmd_roombadge.no_badge', 'No badge specified!');
|
||||||
|
INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('commands.keys.cmd_roombadge', 'roombadge');
|
||||||
|
INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('commands.description.cmd_roombadge', ':roombadge <badge>');
|
||||||
|
|
||||||
|
-- Making items.wired_data column bigger since wired data is saved as JSON now
|
||||||
|
ALTER TABLE `items` MODIFY COLUMN `wired_data` varchar(10000);
|
||||||
|
|
||||||
|
6
sqlupdates/3_0_BETA_1 to 3_0_0-RC-1.sql
Normal file
6
sqlupdates/3_0_BETA_1 to 3_0_0-RC-1.sql
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
-- Wired variables for bots
|
||||||
|
INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('wired.variable.name', '%name%');
|
||||||
|
INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('wired.variable.roomname', '%roomname%');
|
||||||
|
INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('wired.variable.user_count', '%user_count%');
|
||||||
|
INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('wired.variable.owner', '%owner%');
|
||||||
|
INSERT INTO `emulator_texts` (`key`, `value`) VALUES ('wired.variable.item_count', '%item_count%');
|
@ -144,8 +144,8 @@ public class CleanerThread implements Runnable {
|
|||||||
|
|
||||||
if (Emulator.isReady) {
|
if (Emulator.isReady) {
|
||||||
for (Habbo habbo : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().values()) {
|
for (Habbo habbo : Emulator.getGameEnvironment().getHabboManager().getOnlineHabbos().values()) {
|
||||||
habbo.getHabboStats().petRespectPointsToGive = Emulator.getConfig().getInt("hotel.daily.respect");
|
habbo.getHabboStats().respectPointsToGive = Emulator.getConfig().getInt("hotel.daily.respect");
|
||||||
habbo.getHabboStats().respectPointsToGive = Emulator.getConfig().getInt("hotel.daily.respect.pets");
|
habbo.getHabboStats().petRespectPointsToGive = Emulator.getConfig().getInt("hotel.daily.respect.pets");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -194,11 +194,11 @@ public class Bot implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
String message = this.chatLines.get(this.lastChatIndex)
|
String message = this.chatLines.get(this.lastChatIndex)
|
||||||
.replace("%owner%", this.room.getOwnerName())
|
.replace(Emulator.getTexts().getValue("wired.variable.owner", "%owner%"), this.room.getOwnerName())
|
||||||
.replace("%item_count%", this.room.itemCount() + "")
|
.replace(Emulator.getTexts().getValue("wired.variable.item_count", "%item_count%"), this.room.itemCount() + "")
|
||||||
.replace("%name%", this.name)
|
.replace(Emulator.getTexts().getValue("wired.variable.name", "%name%"), this.name)
|
||||||
.replace("%roomname%", this.room.getName())
|
.replace(Emulator.getTexts().getValue("wired.variable.roomname", "%roomname%"), this.room.getName())
|
||||||
.replace("%user_count%", this.room.getUserCount() + "");
|
.replace(Emulator.getTexts().getValue("wired.variable.user_count", "%user_count%"), this.room.getUserCount() + "");
|
||||||
|
|
||||||
if(!WiredHandler.handle(WiredTriggerType.SAY_SOMETHING, this.getRoomUnit(), room, new Object[]{ message })) {
|
if(!WiredHandler.handle(WiredTriggerType.SAY_SOMETHING, this.getRoomUnit(), room, new Object[]{ message })) {
|
||||||
this.talk(message);
|
this.talk(message);
|
||||||
|
@ -58,58 +58,76 @@ public class ButlerBot extends Bot {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onUserSay(final RoomChatMessage message) {
|
public void onUserSay(final RoomChatMessage message) {
|
||||||
if (this.getRoomUnit().hasStatus(RoomUnitStatus.MOVE))
|
if (this.getRoomUnit().hasStatus(RoomUnitStatus.MOVE) || this.getRoom() == null) {
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
double distanceBetweenBotAndHabbo = this.getRoomUnit().getCurrentLocation().distance(message.getHabbo().getRoomUnit().getCurrentLocation());
|
||||||
|
|
||||||
|
if (distanceBetweenBotAndHabbo <= Emulator.getConfig().getInt("hotel.bot.butler.commanddistance")) {
|
||||||
|
|
||||||
if (this.getRoomUnit().getCurrentLocation().distance(message.getHabbo().getRoomUnit().getCurrentLocation()) <= Emulator.getConfig().getInt("hotel.bot.butler.commanddistance"))
|
|
||||||
if (message.getUnfilteredMessage() != null) {
|
if (message.getUnfilteredMessage() != null) {
|
||||||
for (Map.Entry<THashSet<String>, Integer> set : serveItems.entrySet()) {
|
for (Map.Entry<THashSet<String>, Integer> set : serveItems.entrySet()) {
|
||||||
for (String s : set.getKey()) {
|
for (String keyword : set.getKey()) {
|
||||||
if (message.getUnfilteredMessage().toLowerCase().contains(s)) {
|
|
||||||
|
// Check if the string contains a certain keyword using a regex.
|
||||||
|
// If keyword = tea, teapot wouldn't trigger it.
|
||||||
|
if (message.getUnfilteredMessage().toLowerCase().matches("\\b" + keyword + "\\b")) {
|
||||||
|
|
||||||
|
// Enable plugins to cancel this event
|
||||||
BotServerItemEvent serveEvent = new BotServerItemEvent(this, message.getHabbo(), set.getValue());
|
BotServerItemEvent serveEvent = new BotServerItemEvent(this, message.getHabbo(), set.getValue());
|
||||||
if (Emulator.getPluginManager().fireEvent(serveEvent).isCancelled()) {
|
if (Emulator.getPluginManager().fireEvent(serveEvent).isCancelled()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Start give handitem process
|
||||||
if (this.getRoomUnit().canWalk()) {
|
if (this.getRoomUnit().canWalk()) {
|
||||||
final String key = s;
|
final String key = keyword;
|
||||||
final Bot b = this;
|
final Bot bot = this;
|
||||||
b.lookAt(serveEvent.habbo);
|
|
||||||
|
|
||||||
final List<Runnable> tasks = new ArrayList();
|
// Step 1: Look at Habbo
|
||||||
|
bot.lookAt(serveEvent.habbo);
|
||||||
|
|
||||||
|
// Step 2: Prepare tasks for when the Bot (carrying the handitem) reaches the Habbo
|
||||||
|
final List<Runnable> tasks = new ArrayList<>();
|
||||||
tasks.add(new RoomUnitGiveHanditem(serveEvent.habbo.getRoomUnit(), serveEvent.habbo.getHabboInfo().getCurrentRoom(), serveEvent.itemId));
|
tasks.add(new RoomUnitGiveHanditem(serveEvent.habbo.getRoomUnit(), serveEvent.habbo.getHabboInfo().getCurrentRoom(), serveEvent.itemId));
|
||||||
tasks.add(new RoomUnitGiveHanditem(this.getRoomUnit(), serveEvent.habbo.getHabboInfo().getCurrentRoom(), 0));
|
tasks.add(new RoomUnitGiveHanditem(this.getRoomUnit(), serveEvent.habbo.getHabboInfo().getCurrentRoom(), 0));
|
||||||
|
|
||||||
tasks.add(() -> {
|
tasks.add(() -> {
|
||||||
if(this.getRoom() != null) {
|
if(this.getRoom() != null) {
|
||||||
String msg = Emulator.getTexts().getValue("bots.butler.given").replace("%key%", key).replace("%username%", serveEvent.habbo.getHabboInfo().getUsername());
|
String botMessage = Emulator.getTexts()
|
||||||
if (!WiredHandler.handle(WiredTriggerType.SAY_SOMETHING, this.getRoomUnit(), this.getRoom(), new Object[]{msg})) {
|
.getValue("bots.butler.given")
|
||||||
b.talk(msg);
|
.replace("%key%", key)
|
||||||
|
.replace("%username%", serveEvent.habbo.getHabboInfo().getUsername());
|
||||||
|
|
||||||
|
if (!WiredHandler.handle(WiredTriggerType.SAY_SOMETHING, this.getRoomUnit(), this.getRoom(), new Object[]{ botMessage })) {
|
||||||
|
bot.talk(botMessage);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
List<Runnable> failedReached = new ArrayList();
|
List<Runnable> failedReached = new ArrayList<>();
|
||||||
failedReached.add(() -> {
|
failedReached.add(() -> {
|
||||||
if (b.getRoomUnit().getCurrentLocation().distance(serveEvent.habbo.getRoomUnit().getCurrentLocation()) <= Emulator.getConfig().getInt("hotel.bot.butler.servedistance", 8)) {
|
if (distanceBetweenBotAndHabbo <= Emulator.getConfig().getInt("hotel.bot.butler.servedistance", 8)) {
|
||||||
for (Runnable t : tasks) {
|
for (Runnable task : tasks) {
|
||||||
t.run();
|
task.run();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Give bot the handitem that it's going to give the Habbo
|
||||||
Emulator.getThreading().run(new RoomUnitGiveHanditem(this.getRoomUnit(), serveEvent.habbo.getHabboInfo().getCurrentRoom(), serveEvent.itemId));
|
Emulator.getThreading().run(new RoomUnitGiveHanditem(this.getRoomUnit(), serveEvent.habbo.getHabboInfo().getCurrentRoom(), serveEvent.itemId));
|
||||||
|
|
||||||
if (b.getRoomUnit().getCurrentLocation().distance(serveEvent.habbo.getRoomUnit().getCurrentLocation()) > Emulator.getConfig().getInt("hotel.bot.butler.reachdistance", 3)) {
|
if (distanceBetweenBotAndHabbo > Emulator.getConfig().getInt("hotel.bot.butler.reachdistance", 3)) {
|
||||||
Emulator.getThreading().run(new RoomUnitWalkToRoomUnit(this.getRoomUnit(), serveEvent.habbo.getRoomUnit(), serveEvent.habbo.getHabboInfo().getCurrentRoom(), tasks, failedReached, Emulator.getConfig().getInt("hotel.bot.butler.reachdistance", 3)));
|
Emulator.getThreading().run(new RoomUnitWalkToRoomUnit(this.getRoomUnit(), serveEvent.habbo.getRoomUnit(), serveEvent.habbo.getHabboInfo().getCurrentRoom(), tasks, failedReached, Emulator.getConfig().getInt("hotel.bot.butler.reachdistance", 3)));
|
||||||
} else {
|
} else {
|
||||||
Emulator.getThreading().run(failedReached.get(0), 1000);
|
Emulator.getThreading().run(failedReached.get(0), 1000);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
if(this.getRoom() != null) {
|
||||||
this.getRoom().giveHandItem(serveEvent.habbo, serveEvent.itemId);
|
this.getRoom().giveHandItem(serveEvent.habbo, serveEvent.itemId);
|
||||||
|
|
||||||
if(this.getRoom() != null) {
|
String msg = Emulator.getTexts().getValue("bots.butler.given").replace("%key%", keyword).replace("%username%", serveEvent.habbo.getHabboInfo().getUsername());
|
||||||
String msg = Emulator.getTexts().getValue("bots.butler.given").replace("%key%", s).replace("%username%", serveEvent.habbo.getHabboInfo().getUsername());
|
|
||||||
if (!WiredHandler.handle(WiredTriggerType.SAY_SOMETHING, this.getRoomUnit(), this.getRoom(), new Object[]{msg})) {
|
if (!WiredHandler.handle(WiredTriggerType.SAY_SOMETHING, this.getRoomUnit(), this.getRoom(), new Object[]{msg})) {
|
||||||
this.talk(msg);
|
this.talk(msg);
|
||||||
}
|
}
|
||||||
@ -121,4 +139,5 @@ public class ButlerBot extends Bot {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,7 +16,7 @@ public class AboutCommand extends Command {
|
|||||||
}
|
}
|
||||||
public static String credits = "Arcturus Morningstar is an opensource project based on Arcturus By TheGeneral \n" +
|
public static String credits = "Arcturus Morningstar is an opensource project based on Arcturus By TheGeneral \n" +
|
||||||
"The Following people have all contributed to this emulator:\n" +
|
"The Following people have all contributed to this emulator:\n" +
|
||||||
" TheGeneral\n Beny\n Alejandro\n Capheus\n Skeletor\n Harmonic\n Mike\n Remco\n zGrav \n Quadral \n Harmony\n Swirny\n ArpyAge\n Mikkel\n Rodolfo\n Kitt Mustang\n Snaiker\n nttzx\n necmi\n Dome\n Jose Flores\n Cam\n Oliver\n Narzo\n Tenshie\n MartenM\n Ridge\n SenpaiDipper";
|
" TheGeneral\n Beny\n Alejandro\n Capheus\n Skeletor\n Harmonic\n Mike\n Remco\n zGrav \n Quadral \n Harmony\n Swirny\n ArpyAge\n Mikkel\n Rodolfo\n Rasmus\n Kitt Mustang\n Snaiker\n nttzx\n necmi\n Dome\n Jose Flores\n Cam\n Oliver\n Narzo\n Tenshie\n MartenM\n Ridge\n SenpaiDipper";
|
||||||
@Override
|
@Override
|
||||||
public boolean handle(GameClient gameClient, String[] params) {
|
public boolean handle(GameClient gameClient, String[] params) {
|
||||||
|
|
||||||
|
@ -217,6 +217,7 @@ public class CommandHandler {
|
|||||||
addCommand(new LayCommand());
|
addCommand(new LayCommand());
|
||||||
addCommand(new MachineBanCommand());
|
addCommand(new MachineBanCommand());
|
||||||
addCommand(new MassBadgeCommand());
|
addCommand(new MassBadgeCommand());
|
||||||
|
addCommand(new RoomBadgeCommand());
|
||||||
addCommand(new MassCreditsCommand());
|
addCommand(new MassCreditsCommand());
|
||||||
addCommand(new MassGiftCommand());
|
addCommand(new MassGiftCommand());
|
||||||
addCommand(new MassPixelsCommand());
|
addCommand(new MassPixelsCommand());
|
||||||
|
@ -0,0 +1,54 @@
|
|||||||
|
package com.eu.habbo.habbohotel.commands;
|
||||||
|
|
||||||
|
import com.eu.habbo.Emulator;
|
||||||
|
import com.eu.habbo.habbohotel.gameclients.GameClient;
|
||||||
|
import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
|
||||||
|
import com.eu.habbo.habbohotel.users.Habbo;
|
||||||
|
import com.eu.habbo.habbohotel.users.HabboBadge;
|
||||||
|
import com.eu.habbo.habbohotel.users.inventory.BadgesComponent;
|
||||||
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
|
import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertComposer;
|
||||||
|
import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys;
|
||||||
|
import com.eu.habbo.messages.outgoing.users.AddUserBadgeComposer;
|
||||||
|
import gnu.trove.map.hash.THashMap;
|
||||||
|
|
||||||
|
public class RoomBadgeCommand extends Command {
|
||||||
|
public RoomBadgeCommand() {
|
||||||
|
super("cmd_roombadge", Emulator.getTexts().getValue("commands.keys.cmd_roombadge").split(";"));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean handle(GameClient gameClient, String[] params) throws Exception {
|
||||||
|
if (gameClient == null)
|
||||||
|
return true;
|
||||||
|
|
||||||
|
if (params.length == 2) {
|
||||||
|
String badge;
|
||||||
|
|
||||||
|
badge = params[1];
|
||||||
|
|
||||||
|
if (!badge.isEmpty()) {
|
||||||
|
THashMap<String, String> keys = new THashMap<>();
|
||||||
|
keys.put("display", "BUBBLE");
|
||||||
|
keys.put("image", "${image.library.url}album1584/" + badge + ".gif");
|
||||||
|
keys.put("message", Emulator.getTexts().getValue("commands.generic.cmd_badge.received"));
|
||||||
|
ServerMessage message = new BubbleAlertComposer(BubbleAlertKeys.RECEIVED_BADGE.key, keys).compose();
|
||||||
|
|
||||||
|
for (Habbo habbo : gameClient.getHabbo().getRoomUnit().getRoom().getHabbos()) {
|
||||||
|
if (habbo.isOnline()) {
|
||||||
|
if (habbo.getInventory() != null && habbo.getInventory().getBadgesComponent() != null && !habbo.getInventory().getBadgesComponent().hasBadge(badge)) {
|
||||||
|
HabboBadge b = BadgesComponent.createBadge(badge, habbo);
|
||||||
|
|
||||||
|
habbo.getClient().sendResponse(new AddUserBadgeComposer(b));
|
||||||
|
habbo.getClient().sendResponse(message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
gameClient.getHabbo().whisper(Emulator.getTexts().getValue("commands.error.cmd_roombadge.no_badge"), RoomChatMessageBubbles.ALERT);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
@ -45,7 +45,7 @@ public class UserInfoCommand extends Command {
|
|||||||
Emulator.getTexts().getValue("command.cmd_userinfo.online") + ": " + (onlineHabbo == null ? Emulator.getTexts().getValue("generic.no") : Emulator.getTexts().getValue("generic.yes")) + "\r" +
|
Emulator.getTexts().getValue("command.cmd_userinfo.online") + ": " + (onlineHabbo == null ? Emulator.getTexts().getValue("generic.no") : Emulator.getTexts().getValue("generic.yes")) + "\r" +
|
||||||
((habbo.getRank().hasPermission(Permission.ACC_HIDE_MAIL, true)) ? "" : Emulator.getTexts().getValue("command.cmd_userinfo.email") + ": " + habbo.getMail() + "\r") +
|
((habbo.getRank().hasPermission(Permission.ACC_HIDE_MAIL, true)) ? "" : Emulator.getTexts().getValue("command.cmd_userinfo.email") + ": " + habbo.getMail() + "\r") +
|
||||||
((habbo.getRank().hasPermission(Permission.ACC_HIDE_IP, true)) ? "" : Emulator.getTexts().getValue("command.cmd_userinfo.ip_register") + ": " + habbo.getIpRegister() + "\r") +
|
((habbo.getRank().hasPermission(Permission.ACC_HIDE_IP, true)) ? "" : Emulator.getTexts().getValue("command.cmd_userinfo.ip_register") + ": " + habbo.getIpRegister() + "\r") +
|
||||||
((habbo.getRank().hasPermission(Permission.ACC_HIDE_IP, true)) || onlineHabbo == null ? "" : Emulator.getTexts().getValue("command.cmd_userinfo.ip_current") + ": " + onlineHabbo.getClient().getChannel().remoteAddress().toString() + "\r") +
|
((habbo.getRank().hasPermission(Permission.ACC_HIDE_IP, true)) || onlineHabbo == null ? "" : Emulator.getTexts().getValue("command.cmd_userinfo.ip_current") + ": " + onlineHabbo.getHabboInfo().getIpLogin() + "\r") +
|
||||||
(onlineHabbo != null ? Emulator.getTexts().getValue("command.cmd_userinfo.achievement_score") + ": " + onlineHabbo.getHabboStats().achievementScore + "\r" : ""));
|
(onlineHabbo != null ? Emulator.getTexts().getValue("command.cmd_userinfo.achievement_score") + ": " + onlineHabbo.getHabboStats().achievementScore + "\r" : ""));
|
||||||
|
|
||||||
ModToolBan ban = Emulator.getGameEnvironment().getModToolManager().checkForBan(habbo.getId());
|
ModToolBan ban = Emulator.getGameEnvironment().getModToolManager().checkForBan(habbo.getId());
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package com.eu.habbo.habbohotel.items.interactions;
|
package com.eu.habbo.habbohotel.items.interactions;
|
||||||
|
|
||||||
|
import com.eu.habbo.Emulator;
|
||||||
import com.eu.habbo.habbohotel.bots.Bot;
|
import com.eu.habbo.habbohotel.bots.Bot;
|
||||||
import com.eu.habbo.habbohotel.items.Item;
|
import com.eu.habbo.habbohotel.items.Item;
|
||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
@ -7,6 +8,8 @@ import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
|||||||
import com.eu.habbo.habbohotel.rooms.RoomUnitType;
|
import com.eu.habbo.habbohotel.rooms.RoomUnitType;
|
||||||
import com.eu.habbo.habbohotel.users.Habbo;
|
import com.eu.habbo.habbohotel.users.Habbo;
|
||||||
import com.eu.habbo.habbohotel.users.HabboGender;
|
import com.eu.habbo.habbohotel.users.HabboGender;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
@ -32,7 +35,11 @@ public class InteractionEffectTile extends InteractionPressurePlate {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onWalkOff(RoomUnit roomUnit, Room room, Object[] objects) throws Exception {
|
public void onWalkOff(RoomUnit roomUnit, Room room, Object[] objects) throws Exception {
|
||||||
super.onWalkOff(roomUnit, room, objects);
|
Emulator.getThreading().run(() -> updateState(room), 100);
|
||||||
|
|
||||||
|
if(objects != null && objects.length > 0) {
|
||||||
|
WiredHandler.handle(WiredTriggerType.WALKS_OFF_FURNI, roomUnit, room, new Object[]{this});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -5,14 +5,28 @@ import com.eu.habbo.habbohotel.achievements.AchievementManager;
|
|||||||
import com.eu.habbo.habbohotel.gameclients.GameClient;
|
import com.eu.habbo.habbohotel.gameclients.GameClient;
|
||||||
import com.eu.habbo.habbohotel.items.Item;
|
import com.eu.habbo.habbohotel.items.Item;
|
||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
|
import com.eu.habbo.habbohotel.rooms.RoomLayout;
|
||||||
|
import com.eu.habbo.habbohotel.rooms.RoomTile;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.users.HabboItem;
|
import com.eu.habbo.habbohotel.users.Habbo;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.habbohotel.wired.WiredEffectType;
|
||||||
|
import com.eu.habbo.threading.runnables.RoomUnitWalkToLocation;
|
||||||
|
import org.slf4j.Logger;
|
||||||
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class InteractionFireworks extends InteractionDefault {
|
||||||
|
|
||||||
|
private static final Logger LOGGER = LoggerFactory.getLogger(InteractionFireworks.class);
|
||||||
|
|
||||||
|
private static final String STATE_EMPTY = "0"; // Not used since the removal of pixels
|
||||||
|
private static final String STATE_CHARGED = "1";
|
||||||
|
private static final String STATE_EXPLOSION = "2";
|
||||||
|
|
||||||
public class InteractionFireworks extends HabboItem {
|
|
||||||
public InteractionFireworks(ResultSet set, Item baseItem) throws SQLException {
|
public InteractionFireworks(ResultSet set, Item baseItem) throws SQLException {
|
||||||
super(set, baseItem);
|
super(set, baseItem);
|
||||||
}
|
}
|
||||||
@ -26,35 +40,103 @@ public class InteractionFireworks extends HabboItem {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
/**
|
||||||
public boolean isWalkable() {
|
* Checked in Habbo on 2021-01-03
|
||||||
return this.getBaseItem().allowWalk();
|
* - Fireworks should be charged to be able to detonate them
|
||||||
}
|
* - Habbos with Rights can detonate fireworks from anywhere in a room
|
||||||
|
* - Habbos without rights have to walk to an adjecent tile to be able to detonate (see Interaction Switch)
|
||||||
@Override
|
* - Wired can always detonate fireworks
|
||||||
public void onWalk(RoomUnit roomUnit, Room room, Object[] objects) throws Exception {
|
*/
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void serializeExtradata(ServerMessage serverMessage) {
|
|
||||||
serverMessage.appendInt((this.isLimited() ? 256 : 0));
|
|
||||||
serverMessage.appendString(this.getExtradata());
|
|
||||||
super.serializeExtradata(serverMessage); //Design flaw ;(
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onClick(GameClient client, Room room, Object[] objects) throws Exception {
|
public void onClick(GameClient client, Room room, Object[] objects) throws Exception {
|
||||||
|
if (room == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Wireds can always detonate fireworks if charged
|
||||||
|
if (objects.length >= 2 && objects[1] instanceof WiredEffectType && objects[1] == WiredEffectType.TOGGLE_STATE) {
|
||||||
|
if (this.getExtradata().equalsIgnoreCase(STATE_CHARGED)) {
|
||||||
super.onClick(client, room, objects);
|
super.onClick(client, room, objects);
|
||||||
|
|
||||||
if (client != null && this.getExtradata().equalsIgnoreCase("2")) //2 explodes I think (0 = empty, 1 = charged, 2 = effect)
|
if (this.getExtradata().equalsIgnoreCase(STATE_EXPLOSION)) {
|
||||||
|
this.reCharge(room);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (client == null)
|
||||||
|
return;
|
||||||
|
|
||||||
|
// Habbos without rights have to walk to an adjecent tile to be able to detonate the fireworks
|
||||||
|
if (!this.canToggle(client.getHabbo(), room)) {
|
||||||
|
RoomTile closestTile = null;
|
||||||
|
for (RoomTile tile : room.getLayout().getTilesAround(room.getLayout().getTile(this.getX(), this.getY()))) {
|
||||||
|
if (tile.isWalkable() && (closestTile == null || closestTile.distance(client.getHabbo().getRoomUnit().getCurrentLocation()) > tile.distance(client.getHabbo().getRoomUnit().getCurrentLocation()))) {
|
||||||
|
closestTile = tile;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (closestTile != null && !closestTile.equals(client.getHabbo().getRoomUnit().getCurrentLocation())) {
|
||||||
|
List<Runnable> onSuccess = new ArrayList<>();
|
||||||
|
onSuccess.add(() -> {
|
||||||
|
try {
|
||||||
|
this.onClick(client, room, objects);
|
||||||
|
} catch (Exception e) {
|
||||||
|
e.printStackTrace();
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
client.getHabbo().getRoomUnit().setGoalLocation(closestTile);
|
||||||
|
Emulator.getThreading().run(new RoomUnitWalkToLocation(client.getHabbo().getRoomUnit(), closestTile, room, onSuccess, new ArrayList<>()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.getExtradata().equalsIgnoreCase(STATE_CHARGED)) {
|
||||||
|
super.onClick(client, room, objects);
|
||||||
|
|
||||||
|
if (this.getExtradata().equalsIgnoreCase(STATE_EXPLOSION))
|
||||||
{
|
{
|
||||||
|
this.reCharge(room);
|
||||||
AchievementManager.progressAchievement(client.getHabbo(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("FireworksCharger"));
|
AchievementManager.progressAchievement(client.getHabbo(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("FireworksCharger"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean allowWiredResetState() {
|
public boolean allowWiredResetState() {
|
||||||
return true;
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onPlace(Room room) {
|
||||||
|
super.onPlace(room);
|
||||||
|
this.setExtradata(STATE_CHARGED);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean canToggle(Habbo habbo, Room room) {
|
||||||
|
return room.hasRights(habbo) || RoomLayout.tilesAdjecent(
|
||||||
|
room.getLayout().getTile(this.getX(), this.getY()),
|
||||||
|
habbo.getRoomUnit().getCurrentLocation()
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void reCharge(Room room) {
|
||||||
|
// Default = 5000, Nuclear Firework should have 10000 in its custom params according to Habbo
|
||||||
|
int explodeDuration = 5000;
|
||||||
|
if (!this.getBaseItem().getCustomParams().isEmpty()) {
|
||||||
|
try {
|
||||||
|
explodeDuration = Integer.parseInt(this.getBaseItem().getCustomParams());
|
||||||
|
} catch (NumberFormatException e) {
|
||||||
|
LOGGER.error("Incorrect customparams (" + this.getBaseItem().getCustomParams() + ") for base item ID (" + this.getBaseItem().getId() + ") of type (" + this.getBaseItem().getName() + ")");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
Emulator.getThreading().run(() -> {
|
||||||
|
this.setExtradata(STATE_CHARGED);
|
||||||
|
this.needsUpdate(true);
|
||||||
|
room.updateItemState(this);
|
||||||
|
}, explodeDuration);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,7 @@ import com.eu.habbo.habbohotel.wired.WiredEffectType;
|
|||||||
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
|
import com.eu.habbo.threading.runnables.games.GameTimer;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
import org.slf4j.LoggerFactory;
|
||||||
|
|
||||||
@ -63,7 +64,7 @@ public class InteractionGameTimer extends HabboItem implements Runnable {
|
|||||||
String[] data = set.getString("extra_data").split("\t");
|
String[] data = set.getString("extra_data").split("\t");
|
||||||
|
|
||||||
if (data.length >= 2) {
|
if (data.length >= 2) {
|
||||||
this.baseTime = Integer.valueOf(data[1]);
|
this.baseTime = Integer.parseInt(data[1]);
|
||||||
this.timeNow = this.baseTime;
|
this.timeNow = this.baseTime;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -149,33 +150,6 @@ public class InteractionGameTimer extends HabboItem implements Runnable {
|
|||||||
if (this.needsUpdate() || this.needsDelete()) {
|
if (this.needsUpdate() || this.needsDelete()) {
|
||||||
super.run();
|
super.run();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.getRoomId() == 0) {
|
|
||||||
this.threadActive = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId());
|
|
||||||
|
|
||||||
if (room == null || !this.isRunning || this.isPaused) {
|
|
||||||
this.threadActive = false;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
this.timeNow--;
|
|
||||||
if (this.timeNow < 0) this.timeNow = 0;
|
|
||||||
|
|
||||||
if (this.timeNow > 0) {
|
|
||||||
this.threadActive = true;
|
|
||||||
Emulator.getThreading().run(this, 1000);
|
|
||||||
} else {
|
|
||||||
this.threadActive = false;
|
|
||||||
this.timeNow = 0;
|
|
||||||
this.endGame(room);
|
|
||||||
WiredHandler.handle(WiredTriggerType.GAME_ENDS, null, room, new Object[]{});
|
|
||||||
}
|
|
||||||
|
|
||||||
room.updateItem(this);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -248,7 +222,7 @@ public class InteractionGameTimer extends HabboItem implements Runnable {
|
|||||||
|
|
||||||
if (!this.threadActive) {
|
if (!this.threadActive) {
|
||||||
this.threadActive = true;
|
this.threadActive = true;
|
||||||
Emulator.getThreading().run(this, 1000);
|
Emulator.getThreading().run(new GameTimer(this), 1000);
|
||||||
}
|
}
|
||||||
} else if (client != null) {
|
} else if (client != null) {
|
||||||
if (!(room.hasRights(client.getHabbo()) || client.getHabbo().hasPermission(Permission.ACC_ANYROOMOWNER)))
|
if (!(room.hasRights(client.getHabbo()) || client.getHabbo().hasPermission(Permission.ACC_ANYROOMOWNER)))
|
||||||
@ -271,7 +245,7 @@ public class InteractionGameTimer extends HabboItem implements Runnable {
|
|||||||
|
|
||||||
if (!this.threadActive) {
|
if (!this.threadActive) {
|
||||||
this.threadActive = true;
|
this.threadActive = true;
|
||||||
Emulator.getThreading().run(this);
|
Emulator.getThreading().run(new GameTimer(this));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -285,7 +259,7 @@ public class InteractionGameTimer extends HabboItem implements Runnable {
|
|||||||
|
|
||||||
if (!this.threadActive) {
|
if (!this.threadActive) {
|
||||||
this.threadActive = true;
|
this.threadActive = true;
|
||||||
Emulator.getThreading().run(this, 1000);
|
Emulator.getThreading().run(new GameTimer(this), 1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -350,10 +324,30 @@ public class InteractionGameTimer extends HabboItem implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean isRunning() {
|
public boolean isRunning() {
|
||||||
return isRunning;
|
return this.isRunning;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setRunning(boolean running) {
|
public void setRunning(boolean running) {
|
||||||
isRunning = running;
|
this.isRunning = running;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setThreadActive(boolean threadActive) {
|
||||||
|
this.threadActive = threadActive;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPaused() {
|
||||||
|
return this.isPaused;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void reduceTime() {
|
||||||
|
this.timeNow--;
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getTimeNow() {
|
||||||
|
return this.timeNow;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setTimeNow(int timeNow) {
|
||||||
|
this.timeNow = timeNow;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition;
|
|||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
|
|
||||||
@ -64,25 +65,46 @@ public class WiredConditionDateRangeActive extends InteractionWiredCondition {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.startDate + "\t" + this.endDate;
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.startDate,
|
||||||
|
this.endDate
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
String[] data = set.getString("wired_data").split("\t");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.startDate = data.startDate;
|
||||||
|
this.endDate = data.endDate;
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split("\t");
|
||||||
|
|
||||||
if (data.length == 2) {
|
if (data.length == 2) {
|
||||||
try {
|
try {
|
||||||
this.startDate = Integer.valueOf(data[0]);
|
this.startDate = Integer.parseInt(data[0]);
|
||||||
this.endDate = Integer.valueOf(data[1]);
|
this.endDate = Integer.parseInt(data[1]);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
this.startDate = 0;
|
this.startDate = 0;
|
||||||
this.endDate = 0;
|
this.endDate = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int startDate;
|
||||||
|
int endDate;
|
||||||
|
|
||||||
|
public JsonData(int startDate, int endDate) {
|
||||||
|
this.startDate = startDate;
|
||||||
|
this.endDate = endDate;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -15,6 +15,8 @@ import gnu.trove.set.hash.THashSet;
|
|||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredConditionFurniHaveFurni extends InteractionWiredCondition {
|
public class WiredConditionFurniHaveFurni extends InteractionWiredCondition {
|
||||||
public static final WiredConditionType type = WiredConditionType.FURNI_HAS_FURNI;
|
public static final WiredConditionType type = WiredConditionType.FURNI_HAS_FURNI;
|
||||||
@ -58,18 +60,30 @@ public class WiredConditionFurniHaveFurni extends InteractionWiredCondition {
|
|||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
this.refresh();
|
this.refresh();
|
||||||
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
StringBuilder data = new StringBuilder((this.all ? "1" : "0") + ":");
|
this.all,
|
||||||
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
for (HabboItem item : this.items)
|
));
|
||||||
data.append(item.getId()).append(";");
|
|
||||||
|
|
||||||
return data.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
String[] data = set.getString("wired_data").split(":");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.all = data.all;
|
||||||
|
|
||||||
|
for(int id : data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split(":");
|
||||||
|
|
||||||
if (data.length >= 1) {
|
if (data.length >= 1) {
|
||||||
this.all = (data[0].equals("1"));
|
this.all = (data[0].equals("1"));
|
||||||
@ -78,7 +92,7 @@ public class WiredConditionFurniHaveFurni extends InteractionWiredCondition {
|
|||||||
String[] items = data[1].split(";");
|
String[] items = data[1].split(";");
|
||||||
|
|
||||||
for (String s : items) {
|
for (String s : items) {
|
||||||
HabboItem item = room.getHabboItem(Integer.valueOf(s));
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
if (item != null)
|
if (item != null)
|
||||||
this.items.add(item);
|
this.items.add(item);
|
||||||
@ -86,6 +100,7 @@ public class WiredConditionFurniHaveFurni extends InteractionWiredCondition {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -166,4 +181,14 @@ public class WiredConditionFurniHaveFurni extends InteractionWiredCondition {
|
|||||||
this.items.remove(item);
|
this.items.remove(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
boolean all;
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(boolean all, List<Integer> itemIds) {
|
||||||
|
this.all = all;
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,13 +14,13 @@ import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
|||||||
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
import gnu.trove.map.hash.THashMap;
|
|
||||||
import gnu.trove.set.hash.THashSet;
|
import gnu.trove.set.hash.THashSet;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredConditionFurniHaveHabbo extends InteractionWiredCondition {
|
public class WiredConditionFurniHaveHabbo extends InteractionWiredCondition {
|
||||||
public static final WiredConditionType type = WiredConditionType.FURNI_HAVE_HABBO;
|
public static final WiredConditionType type = WiredConditionType.FURNI_HAVE_HABBO;
|
||||||
@ -66,21 +66,30 @@ public class WiredConditionFurniHaveHabbo extends InteractionWiredCondition {
|
|||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
this.refresh();
|
this.refresh();
|
||||||
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
StringBuilder data = new StringBuilder((this.all ? "1" : "0") + ":");
|
this.all,
|
||||||
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
for (HabboItem item : this.items) {
|
));
|
||||||
data.append(item.getId()).append(";");
|
|
||||||
}
|
|
||||||
|
|
||||||
return data.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
String[] data = set.getString("wired_data").split(":");
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.all = data.all;
|
||||||
|
|
||||||
|
for(int id : data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split(":");
|
||||||
|
|
||||||
if (data.length >= 1) {
|
if (data.length >= 1) {
|
||||||
this.all = (data[0].equals("1"));
|
this.all = (data[0].equals("1"));
|
||||||
@ -89,7 +98,7 @@ public class WiredConditionFurniHaveHabbo extends InteractionWiredCondition {
|
|||||||
String[] items = data[1].split(";");
|
String[] items = data[1].split(";");
|
||||||
|
|
||||||
for (String s : items) {
|
for (String s : items) {
|
||||||
HabboItem item = room.getHabboItem(Integer.valueOf(s));
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
if (item != null)
|
if (item != null)
|
||||||
this.items.add(item);
|
this.items.add(item);
|
||||||
@ -97,6 +106,7 @@ public class WiredConditionFurniHaveHabbo extends InteractionWiredCondition {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WiredConditionType getType() {
|
public WiredConditionType getType() {
|
||||||
@ -170,4 +180,14 @@ public class WiredConditionFurniHaveHabbo extends InteractionWiredCondition {
|
|||||||
this.items.remove(item);
|
this.items.remove(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
boolean all;
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(boolean all, List<Integer> itemIds) {
|
||||||
|
this.all = all;
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,8 @@ import gnu.trove.set.hash.THashSet;
|
|||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredConditionFurniTypeMatch extends InteractionWiredCondition {
|
public class WiredConditionFurniTypeMatch extends InteractionWiredCondition {
|
||||||
public static final WiredConditionType type = WiredConditionType.STUFF_IS;
|
public static final WiredConditionType type = WiredConditionType.STUFF_IS;
|
||||||
@ -55,23 +57,37 @@ public class WiredConditionFurniTypeMatch extends InteractionWiredCondition {
|
|||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
this.refresh();
|
this.refresh();
|
||||||
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
StringBuilder data = new StringBuilder();
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
|
));
|
||||||
for (HabboItem item : this.items)
|
|
||||||
data.append(item.getId()).append(";");
|
|
||||||
|
|
||||||
return data.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
String[] data = set.getString("wired_data").split(";");
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
|
||||||
for (String s : data)
|
for(int id : data.itemIds) {
|
||||||
this.items.add(room.getHabboItem(Integer.valueOf(s)));
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split(";");
|
||||||
|
|
||||||
|
for (String s : data) {
|
||||||
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -138,4 +154,12 @@ public class WiredConditionFurniTypeMatch extends InteractionWiredCondition {
|
|||||||
this.items.remove(item);
|
this.items.remove(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(List<Integer> itemIds) {
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition;
|
|||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
|
|
||||||
@ -34,15 +35,26 @@ public class WiredConditionHabboCount extends InteractionWiredCondition {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.lowerLimit + ":" + this.upperLimit;
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.lowerLimit,
|
||||||
|
this.upperLimit
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
String[] data = set.getString("wired_data").split(":");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
this.lowerLimit = Integer.valueOf(data[0]);
|
if (wiredData.startsWith("{")) {
|
||||||
this.upperLimit = Integer.valueOf(data[1]);
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.lowerLimit = data.lowerLimit;
|
||||||
|
this.upperLimit = data.upperLimit;
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split(":");
|
||||||
|
|
||||||
|
this.lowerLimit = Integer.parseInt(data[0]);
|
||||||
|
this.upperLimit = Integer.parseInt(data[1]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -82,4 +94,14 @@ public class WiredConditionHabboCount extends InteractionWiredCondition {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int lowerLimit;
|
||||||
|
int upperLimit;
|
||||||
|
|
||||||
|
public JsonData(int lowerLimit, int upperLimit) {
|
||||||
|
this.lowerLimit = lowerLimit;
|
||||||
|
this.upperLimit = upperLimit;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition;
|
|||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
|
|
||||||
@ -32,12 +33,21 @@ public class WiredConditionHabboHasEffect extends InteractionWiredCondition {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.effectId + "";
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.effectId
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.effectId = Integer.valueOf(set.getString("wired_data"));
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.effectId = data.effectId;
|
||||||
|
} else {
|
||||||
|
this.effectId = Integer.parseInt(wiredData);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -73,4 +83,12 @@ public class WiredConditionHabboHasEffect extends InteractionWiredCondition {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int effectId;
|
||||||
|
|
||||||
|
public JsonData(int effectId) {
|
||||||
|
this.effectId = effectId;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition;
|
|||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
@ -66,13 +67,22 @@ public class WiredConditionHabboHasHandItem extends InteractionWiredCondition {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.handItem + "";
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.handItem
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
try {
|
try {
|
||||||
this.handItem = Integer.valueOf(set.getString("wired_data"));
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.handItem = data.handItemId;
|
||||||
|
} else {
|
||||||
|
this.handItem = Integer.parseInt(wiredData);
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
LOGGER.error("Caught exception", e);
|
LOGGER.error("Caught exception", e);
|
||||||
}
|
}
|
||||||
@ -82,4 +92,12 @@ public class WiredConditionHabboHasHandItem extends InteractionWiredCondition {
|
|||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
this.handItem = 0;
|
this.handItem = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int handItemId;
|
||||||
|
|
||||||
|
public JsonData(int handItemId) {
|
||||||
|
this.handItemId = handItemId;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
|||||||
import com.eu.habbo.habbohotel.users.Habbo;
|
import com.eu.habbo.habbohotel.users.Habbo;
|
||||||
import com.eu.habbo.habbohotel.users.HabboBadge;
|
import com.eu.habbo.habbohotel.users.HabboBadge;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
|
|
||||||
@ -44,12 +45,21 @@ public class WiredConditionHabboWearsBadge extends InteractionWiredCondition {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.badge;
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.badge
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.badge = set.getString("wired_data");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.badge = data.badge;
|
||||||
|
} else {
|
||||||
|
this.badge = wiredData;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -85,4 +95,12 @@ public class WiredConditionHabboWearsBadge extends InteractionWiredCondition {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
String badge;
|
||||||
|
|
||||||
|
public JsonData(String badge) {
|
||||||
|
this.badge = badge;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition;
|
|||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
|
|
||||||
@ -32,16 +33,23 @@ public class WiredConditionLessTimeElapsed extends InteractionWiredCondition {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.cycles + "";
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.cycles
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
String data = set.getString("wired_data");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!data.equals(""))
|
if (wiredData.startsWith("{")) {
|
||||||
this.cycles = Integer.valueOf(data);
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.cycles = data.cycles;
|
||||||
|
} else {
|
||||||
|
if (!wiredData.equals(""))
|
||||||
|
this.cycles = Integer.parseInt(wiredData);
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -80,4 +88,12 @@ public class WiredConditionLessTimeElapsed extends InteractionWiredCondition {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int cycles;
|
||||||
|
|
||||||
|
public JsonData(int cycles) {
|
||||||
|
this.cycles = cycles;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -3,6 +3,7 @@ package com.eu.habbo.habbohotel.items.interactions.wired.conditions;
|
|||||||
import com.eu.habbo.Emulator;
|
import com.eu.habbo.Emulator;
|
||||||
import com.eu.habbo.habbohotel.items.Item;
|
import com.eu.habbo.habbohotel.items.Item;
|
||||||
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition;
|
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition;
|
||||||
|
import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.InteractionWiredMatchFurniSettings;
|
||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.users.HabboItem;
|
import com.eu.habbo.habbohotel.users.HabboItem;
|
||||||
@ -15,8 +16,10 @@ import gnu.trove.set.hash.THashSet;
|
|||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
public class WiredConditionMatchStatePosition extends InteractionWiredCondition {
|
public class WiredConditionMatchStatePosition extends InteractionWiredCondition implements InteractionWiredMatchFurniSettings {
|
||||||
public static final WiredConditionType type = WiredConditionType.MATCH_SSHOT;
|
public static final WiredConditionType type = WiredConditionType.MATCH_SSHOT;
|
||||||
|
|
||||||
private THashSet<WiredMatchFurniSetting> settings;
|
private THashSet<WiredMatchFurniSetting> settings;
|
||||||
@ -138,25 +141,28 @@ public class WiredConditionMatchStatePosition extends InteractionWiredCondition
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
StringBuilder data = new StringBuilder(this.settings.size() + ":");
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.state,
|
||||||
if (this.settings.isEmpty()) {
|
this.position,
|
||||||
data.append("\t;");
|
this.direction,
|
||||||
} else {
|
new ArrayList<>(this.settings)
|
||||||
for (WiredMatchFurniSetting item : this.settings)
|
));
|
||||||
data.append(item.toString()).append(";");
|
|
||||||
}
|
|
||||||
|
|
||||||
data.append(":").append(this.state ? 1 : 0).append(":").append(this.direction ? 1 : 0).append(":").append(this.position ? 1 : 0);
|
|
||||||
|
|
||||||
return data.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
String[] data = set.getString("wired_data").split(":");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
int itemCount = Integer.valueOf(data[0]);
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.state = data.state;
|
||||||
|
this.position = data.position;
|
||||||
|
this.direction = data.direction;
|
||||||
|
this.settings.addAll(data.settings);
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split(":");
|
||||||
|
|
||||||
|
int itemCount = Integer.parseInt(data[0]);
|
||||||
|
|
||||||
String[] items = data[1].split(";");
|
String[] items = data[1].split(";");
|
||||||
|
|
||||||
@ -164,13 +170,14 @@ public class WiredConditionMatchStatePosition extends InteractionWiredCondition
|
|||||||
String[] stuff = items[i].split("-");
|
String[] stuff = items[i].split("-");
|
||||||
|
|
||||||
if (stuff.length >= 5)
|
if (stuff.length >= 5)
|
||||||
this.settings.add(new WiredMatchFurniSetting(Integer.valueOf(stuff[0]), stuff[1], Integer.valueOf(stuff[2]), Integer.valueOf(stuff[3]), Integer.valueOf(stuff[4])));
|
this.settings.add(new WiredMatchFurniSetting(Integer.parseInt(stuff[0]), stuff[1], Integer.parseInt(stuff[2]), Integer.parseInt(stuff[3]), Integer.parseInt(stuff[4])));
|
||||||
}
|
}
|
||||||
|
|
||||||
this.state = data[2].equals("1");
|
this.state = data[2].equals("1");
|
||||||
this.direction = data[3].equals("1");
|
this.direction = data[3].equals("1");
|
||||||
this.position = data[4].equals("1");
|
this.position = data[4].equals("1");
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -198,4 +205,38 @@ public class WiredConditionMatchStatePosition extends InteractionWiredCondition
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public THashSet<WiredMatchFurniSetting> getMatchFurniSettings() {
|
||||||
|
return this.settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldMatchState() {
|
||||||
|
return this.state;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldMatchRotation() {
|
||||||
|
return this.direction;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldMatchPosition() {
|
||||||
|
return this.position;
|
||||||
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
boolean state;
|
||||||
|
boolean position;
|
||||||
|
boolean direction;
|
||||||
|
List<WiredMatchFurniSetting> settings;
|
||||||
|
|
||||||
|
public JsonData(boolean state, boolean position, boolean direction, List<WiredMatchFurniSetting> settings) {
|
||||||
|
this.state = state;
|
||||||
|
this.position = position;
|
||||||
|
this.direction = direction;
|
||||||
|
this.settings = settings;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition;
|
|||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
|
|
||||||
@ -32,16 +33,23 @@ public class WiredConditionMoreTimeElapsed extends InteractionWiredCondition {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.cycles + "";
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.cycles
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
String data = set.getString("wired_data");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!data.equals(""))
|
if (wiredData.startsWith("{")) {
|
||||||
this.cycles = Integer.valueOf(data);
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.cycles = data.cycles;
|
||||||
|
} else {
|
||||||
|
if (!wiredData.equals(""))
|
||||||
|
this.cycles = Integer.parseInt(wiredData);
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -80,4 +88,12 @@ public class WiredConditionMoreTimeElapsed extends InteractionWiredCondition {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int cycles;
|
||||||
|
|
||||||
|
public JsonData(int cycles) {
|
||||||
|
this.cycles = cycles;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,6 +16,8 @@ import gnu.trove.set.hash.THashSet;
|
|||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredConditionNotFurniHaveFurni extends InteractionWiredCondition {
|
public class WiredConditionNotFurniHaveFurni extends InteractionWiredCondition {
|
||||||
public static final WiredConditionType type = WiredConditionType.NOT_FURNI_HAVE_FURNI;
|
public static final WiredConditionType type = WiredConditionType.NOT_FURNI_HAVE_FURNI;
|
||||||
@ -59,20 +61,30 @@ public class WiredConditionNotFurniHaveFurni extends InteractionWiredCondition {
|
|||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
this.refresh();
|
this.refresh();
|
||||||
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
StringBuilder data = new StringBuilder((this.all ? "1" : "0") + ":");
|
this.all,
|
||||||
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
for (HabboItem item : this.items)
|
));
|
||||||
data.append(item.getId()).append(";");
|
|
||||||
|
|
||||||
return data.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
String[] data = set.getString("wired_data").split(":");
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.all = data.all;
|
||||||
|
|
||||||
|
for (int id : data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split(":");
|
||||||
|
|
||||||
if (data.length >= 1) {
|
if (data.length >= 1) {
|
||||||
this.all = (data[0].equals("1"));
|
this.all = (data[0].equals("1"));
|
||||||
@ -89,6 +101,7 @@ public class WiredConditionNotFurniHaveFurni extends InteractionWiredCondition {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -175,4 +188,14 @@ public class WiredConditionNotFurniHaveFurni extends InteractionWiredCondition {
|
|||||||
//return this.all ? WiredConditionOperator.AND : WiredConditionOperator.OR;
|
//return this.all ? WiredConditionOperator.AND : WiredConditionOperator.OR;
|
||||||
return WiredConditionOperator.AND;
|
return WiredConditionOperator.AND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
boolean all;
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(boolean all, List<Integer> itemIds) {
|
||||||
|
this.all = all;
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,13 +14,13 @@ import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
|||||||
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
import gnu.trove.map.hash.THashMap;
|
|
||||||
import gnu.trove.set.hash.THashSet;
|
import gnu.trove.set.hash.THashSet;
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Map;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredConditionNotFurniHaveHabbo extends InteractionWiredCondition {
|
public class WiredConditionNotFurniHaveHabbo extends InteractionWiredCondition {
|
||||||
public static final WiredConditionType type = WiredConditionType.NOT_FURNI_HAVE_HABBO;
|
public static final WiredConditionType type = WiredConditionType.NOT_FURNI_HAVE_HABBO;
|
||||||
@ -66,21 +66,30 @@ public class WiredConditionNotFurniHaveHabbo extends InteractionWiredCondition {
|
|||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
this.refresh();
|
this.refresh();
|
||||||
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
StringBuilder data = new StringBuilder((this.all ? "1" : "0") + ":");
|
this.all,
|
||||||
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
for (HabboItem item : this.items) {
|
));
|
||||||
data.append(item.getId()).append(";");
|
|
||||||
}
|
|
||||||
|
|
||||||
return data.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
String[] data = set.getString("wired_data").split(":");
|
if (wiredData.startsWith("{")) {
|
||||||
|
WiredConditionFurniHaveHabbo.JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, WiredConditionFurniHaveHabbo.JsonData.class);
|
||||||
|
this.all = data.all;
|
||||||
|
|
||||||
|
for(int id : data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split(":");
|
||||||
|
|
||||||
if (data.length >= 1) {
|
if (data.length >= 1) {
|
||||||
this.all = (data[0].equals("1"));
|
this.all = (data[0].equals("1"));
|
||||||
@ -89,7 +98,7 @@ public class WiredConditionNotFurniHaveHabbo extends InteractionWiredCondition {
|
|||||||
String[] items = data[1].split(";");
|
String[] items = data[1].split(";");
|
||||||
|
|
||||||
for (String s : items) {
|
for (String s : items) {
|
||||||
HabboItem item = room.getHabboItem(Integer.valueOf(s));
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
if (item != null)
|
if (item != null)
|
||||||
this.items.add(item);
|
this.items.add(item);
|
||||||
@ -97,6 +106,7 @@ public class WiredConditionNotFurniHaveHabbo extends InteractionWiredCondition {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WiredConditionType getType() {
|
public WiredConditionType getType() {
|
||||||
@ -169,4 +179,14 @@ public class WiredConditionNotFurniHaveHabbo extends InteractionWiredCondition {
|
|||||||
this.items.remove(item);
|
this.items.remove(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
boolean all;
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(boolean all, List<Integer> itemIds) {
|
||||||
|
this.all = all;
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,6 +14,8 @@ import gnu.trove.set.hash.THashSet;
|
|||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredConditionNotFurniTypeMatch extends InteractionWiredCondition {
|
public class WiredConditionNotFurniTypeMatch extends InteractionWiredCondition {
|
||||||
public static final WiredConditionType type = WiredConditionType.NOT_STUFF_IS;
|
public static final WiredConditionType type = WiredConditionType.NOT_STUFF_IS;
|
||||||
@ -50,23 +52,37 @@ public class WiredConditionNotFurniTypeMatch extends InteractionWiredCondition {
|
|||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
this.refresh();
|
this.refresh();
|
||||||
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
StringBuilder data = new StringBuilder();
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
|
));
|
||||||
for (HabboItem item : this.items)
|
|
||||||
data.append(item.getId()).append(";");
|
|
||||||
|
|
||||||
return data.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
WiredConditionFurniTypeMatch.JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, WiredConditionFurniTypeMatch.JsonData.class);
|
||||||
|
|
||||||
|
for(int id : data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
String[] data = set.getString("wired_data").split(";");
|
String[] data = set.getString("wired_data").split(";");
|
||||||
|
|
||||||
for (String s : data)
|
for (String s : data) {
|
||||||
this.items.add(room.getHabboItem(Integer.valueOf(s)));
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -138,4 +154,12 @@ public class WiredConditionNotFurniTypeMatch extends InteractionWiredCondition {
|
|||||||
this.items.remove(item);
|
this.items.remove(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(List<Integer> itemIds) {
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition;
|
|||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
|
|
||||||
@ -34,14 +35,25 @@ public class WiredConditionNotHabboCount extends InteractionWiredCondition {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.lowerLimit + ":" + this.upperLimit;
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.lowerLimit,
|
||||||
|
this.upperLimit
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
String[] data = set.getString("wired_data").split(":");
|
String wiredData = set.getString("wired_data");
|
||||||
this.lowerLimit = Integer.valueOf(data[0]);
|
|
||||||
this.upperLimit = Integer.valueOf(data[1]);
|
if (wiredData.startsWith("{")) {
|
||||||
|
WiredConditionHabboCount.JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, WiredConditionHabboCount.JsonData.class);
|
||||||
|
this.lowerLimit = data.lowerLimit;
|
||||||
|
this.upperLimit = data.upperLimit;
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split(":");
|
||||||
|
this.lowerLimit = Integer.parseInt(data[0]);
|
||||||
|
this.upperLimit = Integer.parseInt(data[1]);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -81,4 +93,14 @@ public class WiredConditionNotHabboCount extends InteractionWiredCondition {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int lowerLimit;
|
||||||
|
int upperLimit;
|
||||||
|
|
||||||
|
public JsonData(int lowerLimit, int upperLimit) {
|
||||||
|
this.lowerLimit = lowerLimit;
|
||||||
|
this.upperLimit = upperLimit;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition;
|
|||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
|
|
||||||
@ -32,12 +33,21 @@ public class WiredConditionNotHabboHasEffect extends InteractionWiredCondition {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.effectId + "";
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.effectId
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.effectId = Integer.valueOf(set.getString("wired_data"));
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.effectId = data.effectId;
|
||||||
|
} else {
|
||||||
|
this.effectId = Integer.parseInt(wiredData);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -73,4 +83,12 @@ public class WiredConditionNotHabboHasEffect extends InteractionWiredCondition {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int effectId;
|
||||||
|
|
||||||
|
public JsonData(int effectId) {
|
||||||
|
this.effectId = effectId;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
|||||||
import com.eu.habbo.habbohotel.users.Habbo;
|
import com.eu.habbo.habbohotel.users.Habbo;
|
||||||
import com.eu.habbo.habbohotel.users.HabboBadge;
|
import com.eu.habbo.habbohotel.users.HabboBadge;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
|
|
||||||
@ -45,12 +46,21 @@ public class WiredConditionNotHabboWearsBadge extends InteractionWiredCondition
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.badge;
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.badge
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.badge = set.getString("wired_data");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.badge = data.badge;
|
||||||
|
} else {
|
||||||
|
this.badge = wiredData;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -86,4 +96,12 @@ public class WiredConditionNotHabboWearsBadge extends InteractionWiredCondition
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
String badge;
|
||||||
|
|
||||||
|
public JsonData(String badge) {
|
||||||
|
this.badge = badge;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import com.eu.habbo.habbohotel.rooms.Room;
|
|||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.users.Habbo;
|
import com.eu.habbo.habbohotel.users.Habbo;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
|
|
||||||
@ -39,16 +40,23 @@ public class WiredConditionNotInTeam extends InteractionWiredCondition {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.teamColor.type + "";
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.teamColor
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
String data = set.getString("wired_data");
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!data.equals(""))
|
String wiredData = set.getString("wired_data");
|
||||||
this.teamColor = GameTeamColors.values()[Integer.valueOf(data)];
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.teamColor = data.teamColor;
|
||||||
|
} else {
|
||||||
|
if (!wiredData.equals(""))
|
||||||
|
this.teamColor = GameTeamColors.values()[Integer.parseInt(wiredData)];
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
this.teamColor = GameTeamColors.RED;
|
this.teamColor = GameTeamColors.RED;
|
||||||
}
|
}
|
||||||
@ -88,4 +96,12 @@ public class WiredConditionNotInTeam extends InteractionWiredCondition {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
GameTeamColors teamColor;
|
||||||
|
|
||||||
|
public JsonData(GameTeamColors teamColor) {
|
||||||
|
this.teamColor = teamColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,192 +1,32 @@
|
|||||||
package com.eu.habbo.habbohotel.items.interactions.wired.conditions;
|
package com.eu.habbo.habbohotel.items.interactions.wired.conditions;
|
||||||
|
|
||||||
import com.eu.habbo.Emulator;
|
|
||||||
import com.eu.habbo.habbohotel.items.Item;
|
import com.eu.habbo.habbohotel.items.Item;
|
||||||
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition;
|
import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.InteractionWiredMatchFurniSettings;
|
||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.users.HabboItem;
|
|
||||||
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
|
||||||
import com.eu.habbo.habbohotel.wired.WiredMatchFurniSetting;
|
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
|
||||||
import gnu.trove.set.hash.THashSet;
|
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
|
||||||
public class WiredConditionNotMatchStatePosition extends InteractionWiredCondition {
|
public class WiredConditionNotMatchStatePosition extends WiredConditionMatchStatePosition {
|
||||||
public static final WiredConditionType type = WiredConditionType.NOT_MATCH_SSHOT;
|
public static final WiredConditionType type = WiredConditionType.NOT_MATCH_SSHOT;
|
||||||
|
|
||||||
private THashSet<WiredMatchFurniSetting> settings;
|
|
||||||
|
|
||||||
private boolean state;
|
|
||||||
private boolean position;
|
|
||||||
private boolean rotation;
|
|
||||||
|
|
||||||
public WiredConditionNotMatchStatePosition(ResultSet set, Item baseItem) throws SQLException {
|
public WiredConditionNotMatchStatePosition(ResultSet set, Item baseItem) throws SQLException {
|
||||||
super(set, baseItem);
|
super(set, baseItem);
|
||||||
this.settings = new THashSet<>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public WiredConditionNotMatchStatePosition(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) {
|
public WiredConditionNotMatchStatePosition(int id, int userId, Item item, String extradata, int limitedStack, int limitedSells) {
|
||||||
super(id, userId, item, extradata, limitedStack, limitedSells);
|
super(id, userId, item, extradata, limitedStack, limitedSells);
|
||||||
this.settings = new THashSet<>();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) {
|
public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) {
|
||||||
if (this.settings.isEmpty())
|
return !super.execute(roomUnit, room, stuff);
|
||||||
return true;
|
|
||||||
|
|
||||||
THashSet<WiredMatchFurniSetting> s = new THashSet<>();
|
|
||||||
|
|
||||||
for (WiredMatchFurniSetting setting : this.settings) {
|
|
||||||
HabboItem item = room.getHabboItem(setting.item_id);
|
|
||||||
|
|
||||||
if (item != null) {
|
|
||||||
boolean stateMatches = !this.state || item.getExtradata().equals(setting.state);
|
|
||||||
boolean positionMatches = !this.position || (setting.x == item.getX() && setting.y == item.getY());
|
|
||||||
boolean directionMatches = !this.rotation || setting.rotation == item.getRotation();
|
|
||||||
|
|
||||||
if (!stateMatches || !positionMatches || !directionMatches)
|
|
||||||
return true;
|
|
||||||
} else {
|
|
||||||
s.add(setting);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!s.isEmpty()) {
|
|
||||||
for (WiredMatchFurniSetting setting : s) {
|
|
||||||
this.settings.remove(setting);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getWiredData() {
|
|
||||||
StringBuilder data = new StringBuilder(this.settings.size() + ":");
|
|
||||||
|
|
||||||
if (this.settings.isEmpty()) {
|
|
||||||
data.append("\t;");
|
|
||||||
} else {
|
|
||||||
for (WiredMatchFurniSetting item : this.settings)
|
|
||||||
data.append(item.toString()).append(";");
|
|
||||||
}
|
|
||||||
|
|
||||||
data.append(":").append(this.state ? 1 : 0).append(":").append(this.rotation ? 1 : 0).append(":").append(this.position ? 1 : 0);
|
|
||||||
|
|
||||||
return data.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
|
||||||
String[] data = set.getString("wired_data").split(":");
|
|
||||||
|
|
||||||
int itemCount = Integer.valueOf(data[0]);
|
|
||||||
|
|
||||||
String[] items = data[1].split(";");
|
|
||||||
|
|
||||||
for (int i = 0; i < itemCount; i++) {
|
|
||||||
String[] stuff = items[i].split("-");
|
|
||||||
|
|
||||||
if (stuff.length >= 5)
|
|
||||||
this.settings.add(new WiredMatchFurniSetting(Integer.valueOf(stuff[0]), stuff[1], Integer.valueOf(stuff[2]), Integer.valueOf(stuff[3]), Integer.valueOf(stuff[4])));
|
|
||||||
}
|
|
||||||
|
|
||||||
this.state = data[2].equals("1");
|
|
||||||
this.rotation = data[3].equals("1");
|
|
||||||
this.position = data[4].equals("1");
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPickUp() {
|
|
||||||
this.settings.clear();
|
|
||||||
this.state = false;
|
|
||||||
this.rotation = false;
|
|
||||||
this.position = false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WiredConditionType getType() {
|
public WiredConditionType getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void serializeWiredData(ServerMessage message, Room room) {
|
|
||||||
this.refresh();
|
|
||||||
|
|
||||||
message.appendBoolean(false);
|
|
||||||
message.appendInt(WiredHandler.MAXIMUM_FURNI_SELECTION);
|
|
||||||
message.appendInt(this.settings.size());
|
|
||||||
|
|
||||||
for (WiredMatchFurniSetting item : this.settings)
|
|
||||||
message.appendInt(item.item_id);
|
|
||||||
|
|
||||||
message.appendInt(this.getBaseItem().getSpriteId());
|
|
||||||
message.appendInt(this.getId());
|
|
||||||
message.appendString("");
|
|
||||||
message.appendInt(4);
|
|
||||||
message.appendInt(this.state ? 1 : 0);
|
|
||||||
message.appendInt(this.rotation ? 1 : 0);
|
|
||||||
message.appendInt(this.position ? 1 : 0);
|
|
||||||
message.appendInt(10);
|
|
||||||
message.appendInt(0);
|
|
||||||
message.appendInt(this.getType().code);
|
|
||||||
message.appendInt(0);
|
|
||||||
message.appendInt(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean saveData(ClientMessage packet) {
|
|
||||||
packet.readInt();
|
|
||||||
|
|
||||||
this.state = packet.readInt() == 1;
|
|
||||||
this.rotation = packet.readInt() == 1;
|
|
||||||
this.position = packet.readInt() == 1;
|
|
||||||
|
|
||||||
packet.readString();
|
|
||||||
|
|
||||||
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId());
|
|
||||||
|
|
||||||
if (room == null)
|
|
||||||
return true;
|
|
||||||
|
|
||||||
int count = packet.readInt();
|
|
||||||
if (count > Emulator.getConfig().getInt("hotel.wired.furni.selection.count")) return false;
|
|
||||||
|
|
||||||
this.settings.clear();
|
|
||||||
|
|
||||||
for (int i = 0; i < count; i++) {
|
|
||||||
int itemId = packet.readInt();
|
|
||||||
HabboItem item = room.getHabboItem(itemId);
|
|
||||||
|
|
||||||
if (item != null)
|
|
||||||
this.settings.add(new WiredMatchFurniSetting(item.getId(), item.getExtradata(), item.getRotation(), item.getX(), item.getY()));
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void refresh() {
|
|
||||||
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId());
|
|
||||||
|
|
||||||
if (room != null) {
|
|
||||||
THashSet<WiredMatchFurniSetting> remove = new THashSet<>();
|
|
||||||
|
|
||||||
for (WiredMatchFurniSetting setting : this.settings) {
|
|
||||||
HabboItem item = room.getHabboItem(setting.item_id);
|
|
||||||
if (item == null) {
|
|
||||||
remove.add(setting);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
for (WiredMatchFurniSetting setting : remove) {
|
|
||||||
this.settings.remove(setting);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -1,26 +1,16 @@
|
|||||||
package com.eu.habbo.habbohotel.items.interactions.wired.conditions;
|
package com.eu.habbo.habbohotel.items.interactions.wired.conditions;
|
||||||
|
|
||||||
import com.eu.habbo.Emulator;
|
|
||||||
import com.eu.habbo.habbohotel.items.Item;
|
import com.eu.habbo.habbohotel.items.Item;
|
||||||
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredCondition;
|
|
||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomLayout;
|
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.users.HabboItem;
|
|
||||||
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
|
||||||
import gnu.trove.set.hash.THashSet;
|
|
||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
|
||||||
public class WiredConditionNotTriggerOnFurni extends InteractionWiredCondition {
|
public class WiredConditionNotTriggerOnFurni extends WiredConditionTriggerOnFurni {
|
||||||
public static final WiredConditionType type = WiredConditionType.NOT_ACTOR_ON_FURNI;
|
public static final WiredConditionType type = WiredConditionType.NOT_ACTOR_ON_FURNI;
|
||||||
|
|
||||||
private THashSet<HabboItem> items = new THashSet<>();
|
|
||||||
|
|
||||||
public WiredConditionNotTriggerOnFurni(ResultSet set, Item baseItem) throws SQLException {
|
public WiredConditionNotTriggerOnFurni(ResultSet set, Item baseItem) throws SQLException {
|
||||||
super(set, baseItem);
|
super(set, baseItem);
|
||||||
}
|
}
|
||||||
@ -31,112 +21,19 @@ public class WiredConditionNotTriggerOnFurni extends InteractionWiredCondition {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) {
|
public boolean execute(RoomUnit roomUnit, Room room, Object[] stuff) {
|
||||||
if (roomUnit == null) return false;
|
if (roomUnit == null)
|
||||||
|
return false;
|
||||||
|
|
||||||
this.refresh();
|
this.refresh();
|
||||||
|
|
||||||
if (this.items.isEmpty())
|
if (this.items.isEmpty())
|
||||||
return true;
|
return true;
|
||||||
|
|
||||||
THashSet<HabboItem> itemsAtUser = room.getItemsAt(roomUnit.getCurrentLocation());
|
return !triggerOnFurni(roomUnit, room);
|
||||||
return this.items.stream().noneMatch(itemsAtUser::contains);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public String getWiredData() {
|
|
||||||
this.refresh();
|
|
||||||
|
|
||||||
StringBuilder data = new StringBuilder();
|
|
||||||
|
|
||||||
for (HabboItem item : this.items)
|
|
||||||
data.append(item.getId()).append(";");
|
|
||||||
|
|
||||||
return data.toString();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
|
||||||
this.items.clear();
|
|
||||||
|
|
||||||
String[] data = set.getString("wired_data").split(";");
|
|
||||||
|
|
||||||
for (String s : data) {
|
|
||||||
HabboItem item = room.getHabboItem(Integer.valueOf(s));
|
|
||||||
|
|
||||||
if (item != null) {
|
|
||||||
this.items.add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void onPickUp() {
|
|
||||||
this.items.clear();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public WiredConditionType getType() {
|
public WiredConditionType getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public void serializeWiredData(ServerMessage message, Room room) {
|
|
||||||
this.refresh();
|
|
||||||
|
|
||||||
message.appendBoolean(false);
|
|
||||||
message.appendInt(WiredHandler.MAXIMUM_FURNI_SELECTION);
|
|
||||||
message.appendInt(this.items.size());
|
|
||||||
|
|
||||||
for (HabboItem item : this.items)
|
|
||||||
message.appendInt(item.getId());
|
|
||||||
|
|
||||||
message.appendInt(this.getBaseItem().getSpriteId());
|
|
||||||
message.appendInt(this.getId());
|
|
||||||
message.appendString("");
|
|
||||||
message.appendInt(0);
|
|
||||||
message.appendInt(0);
|
|
||||||
message.appendInt(this.getType().code);
|
|
||||||
message.appendInt(0);
|
|
||||||
message.appendInt(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean saveData(ClientMessage packet) {
|
|
||||||
|
|
||||||
packet.readInt();
|
|
||||||
packet.readString();
|
|
||||||
|
|
||||||
int count = packet.readInt();
|
|
||||||
if (count > Emulator.getConfig().getInt("hotel.wired.furni.selection.count")) return false;
|
|
||||||
this.items.clear();
|
|
||||||
|
|
||||||
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId());
|
|
||||||
|
|
||||||
if (room != null) {
|
|
||||||
for (int i = 0; i < count; i++) {
|
|
||||||
HabboItem item = room.getHabboItem(packet.readInt());
|
|
||||||
|
|
||||||
if (item != null) {
|
|
||||||
this.items.add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
private void refresh() {
|
|
||||||
THashSet<HabboItem> items = new THashSet<>();
|
|
||||||
|
|
||||||
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId());
|
|
||||||
if (room == null) {
|
|
||||||
items.addAll(this.items);
|
|
||||||
} else {
|
|
||||||
for (HabboItem item : this.items) {
|
|
||||||
if (item.getRoomId() != room.getId())
|
|
||||||
items.add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.items.removeAll(items);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import com.eu.habbo.habbohotel.rooms.Room;
|
|||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.users.Habbo;
|
import com.eu.habbo.habbohotel.users.Habbo;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
import com.eu.habbo.habbohotel.wired.WiredConditionType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
|
|
||||||
@ -41,16 +42,23 @@ public class WiredConditionTeamMember extends InteractionWiredCondition {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.teamColor.type + "";
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.teamColor
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
String data = set.getString("wired_data");
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
if (!data.equals(""))
|
String wiredData = set.getString("wired_data");
|
||||||
this.teamColor = GameTeamColors.values()[Integer.valueOf(data)];
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.teamColor = data.teamColor;
|
||||||
|
} else {
|
||||||
|
if (!wiredData.equals(""))
|
||||||
|
this.teamColor = GameTeamColors.values()[Integer.parseInt(wiredData)];
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
this.teamColor = GameTeamColors.RED;
|
this.teamColor = GameTeamColors.RED;
|
||||||
}
|
}
|
||||||
@ -90,4 +98,12 @@ public class WiredConditionTeamMember extends InteractionWiredCondition {
|
|||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
GameTeamColors teamColor;
|
||||||
|
|
||||||
|
public JsonData(GameTeamColors teamColor) {
|
||||||
|
this.teamColor = teamColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,11 +16,13 @@ import gnu.trove.set.hash.THashSet;
|
|||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredConditionTriggerOnFurni extends InteractionWiredCondition {
|
public class WiredConditionTriggerOnFurni extends InteractionWiredCondition {
|
||||||
public static final WiredConditionType type = WiredConditionType.TRIGGER_ON_FURNI;
|
public static final WiredConditionType type = WiredConditionType.TRIGGER_ON_FURNI;
|
||||||
|
|
||||||
private THashSet<HabboItem> items = new THashSet<>();
|
protected THashSet<HabboItem> items = new THashSet<>();
|
||||||
|
|
||||||
public WiredConditionTriggerOnFurni(ResultSet set, Item baseItem) throws SQLException {
|
public WiredConditionTriggerOnFurni(ResultSet set, Item baseItem) throws SQLException {
|
||||||
super(set, baseItem);
|
super(set, baseItem);
|
||||||
@ -40,6 +42,10 @@ public class WiredConditionTriggerOnFurni extends InteractionWiredCondition {
|
|||||||
if (this.items.isEmpty())
|
if (this.items.isEmpty())
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
return triggerOnFurni(roomUnit, room);
|
||||||
|
}
|
||||||
|
|
||||||
|
protected boolean triggerOnFurni(RoomUnit roomUnit, Room room) {
|
||||||
/*
|
/*
|
||||||
* 1. If a Habbo IS NOT walking we only have to check if the Habbo is on one of the selected tiles.
|
* 1. If a Habbo IS NOT walking we only have to check if the Habbo is on one of the selected tiles.
|
||||||
* 2. If a Habbo IS walking we have to check if the next tile in the walking path is one of the selected items
|
* 2. If a Habbo IS walking we have to check if the next tile in the walking path is one of the selected items
|
||||||
@ -67,21 +73,28 @@ public class WiredConditionTriggerOnFurni extends InteractionWiredCondition {
|
|||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
this.refresh();
|
this.refresh();
|
||||||
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
StringBuilder data = new StringBuilder();
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
|
));
|
||||||
for (HabboItem item : this.items) {
|
|
||||||
data.append(item.getId()).append(";");
|
|
||||||
}
|
|
||||||
|
|
||||||
return data.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
String[] data = set.getString("wired_data").split(";");
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
|
||||||
|
for(int id : data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split(";");
|
||||||
|
|
||||||
for (String s : data) {
|
for (String s : data) {
|
||||||
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
@ -91,6 +104,7 @@ public class WiredConditionTriggerOnFurni extends InteractionWiredCondition {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -148,7 +162,7 @@ public class WiredConditionTriggerOnFurni extends InteractionWiredCondition {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void refresh() {
|
protected void refresh() {
|
||||||
THashSet<HabboItem> items = new THashSet<>();
|
THashSet<HabboItem> items = new THashSet<>();
|
||||||
|
|
||||||
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId());
|
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId());
|
||||||
@ -168,4 +182,12 @@ public class WiredConditionTriggerOnFurni extends InteractionWiredCondition {
|
|||||||
public WiredConditionOperator operator() {
|
public WiredConditionOperator operator() {
|
||||||
return WiredConditionOperator.AND;
|
return WiredConditionOperator.AND;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(List<Integer> itemIds) {
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -97,10 +97,15 @@ public class WiredEffectBotTalk extends InteractionWiredEffect {
|
|||||||
Habbo habbo = room.getHabbo(roomUnit);
|
Habbo habbo = room.getHabbo(roomUnit);
|
||||||
|
|
||||||
if (habbo != null) {
|
if (habbo != null) {
|
||||||
message = message.replace(Emulator.getTexts().getValue("wired.variable.username"), habbo.getHabboInfo().getUsername())
|
message = message.replace(Emulator.getTexts().getValue("wired.variable.username", "%username%"), habbo.getHabboInfo().getUsername())
|
||||||
.replace(Emulator.getTexts().getValue("wired.variable.credits"), habbo.getHabboInfo().getCredits() + "")
|
.replace(Emulator.getTexts().getValue("wired.variable.credits", "%credits%"), habbo.getHabboInfo().getCredits() + "")
|
||||||
.replace(Emulator.getTexts().getValue("wired.variable.pixels"), habbo.getHabboInfo().getPixels() + "")
|
.replace(Emulator.getTexts().getValue("wired.variable.pixels", "%pixels%"), habbo.getHabboInfo().getPixels() + "")
|
||||||
.replace(Emulator.getTexts().getValue("wired.variable.points"), habbo.getHabboInfo().getCurrencyAmount(Emulator.getConfig().getInt("seasonal.primary.type")) + "");
|
.replace(Emulator.getTexts().getValue("wired.variable.points", "%points%"), habbo.getHabboInfo().getCurrencyAmount(Emulator.getConfig().getInt("seasonal.primary.type")) + "")
|
||||||
|
.replace(Emulator.getTexts().getValue("wired.variable.owner", "%owner%"), room.getOwnerName())
|
||||||
|
.replace(Emulator.getTexts().getValue("wired.variable.item_count", "%item_count%"), room.itemCount() + "")
|
||||||
|
.replace(Emulator.getTexts().getValue("wired.variable.name", "%name%"), this.botName)
|
||||||
|
.replace(Emulator.getTexts().getValue("wired.variable.roomname", "%roomname%"), room.getName())
|
||||||
|
.replace(Emulator.getTexts().getValue("wired.variable.user_count", "%user_count%"), room.getUserCount() + "");
|
||||||
}
|
}
|
||||||
|
|
||||||
List<Bot> bots = room.getBots(this.botName);
|
List<Bot> bots = room.getBots(this.botName);
|
||||||
|
@ -116,10 +116,15 @@ public class WiredEffectBotTalkToHabbo extends InteractionWiredEffect {
|
|||||||
|
|
||||||
if (habbo != null) {
|
if (habbo != null) {
|
||||||
String m = this.message;
|
String m = this.message;
|
||||||
m = m.replace(Emulator.getTexts().getValue("wired.variable.username"), habbo.getHabboInfo().getUsername())
|
m = m.replace(Emulator.getTexts().getValue("wired.variable.username", "%username%"), habbo.getHabboInfo().getUsername())
|
||||||
.replace(Emulator.getTexts().getValue("wired.variable.credits"), habbo.getHabboInfo().getCredits() + "")
|
.replace(Emulator.getTexts().getValue("wired.variable.credits", "%credits%"), habbo.getHabboInfo().getCredits() + "")
|
||||||
.replace(Emulator.getTexts().getValue("wired.variable.pixels"), habbo.getHabboInfo().getPixels() + "")
|
.replace(Emulator.getTexts().getValue("wired.variable.pixels", "%pixels%"), habbo.getHabboInfo().getPixels() + "")
|
||||||
.replace(Emulator.getTexts().getValue("wired.variable.points"), habbo.getHabboInfo().getCurrencyAmount(Emulator.getConfig().getInt("seasonal.primary.type")) + "");
|
.replace(Emulator.getTexts().getValue("wired.variable.points", "%points%"), habbo.getHabboInfo().getCurrencyAmount(Emulator.getConfig().getInt("seasonal.primary.type")) + "")
|
||||||
|
.replace(Emulator.getTexts().getValue("wired.variable.owner", "%owner%"), room.getOwnerName())
|
||||||
|
.replace(Emulator.getTexts().getValue("wired.variable.item_count", "%item_count%"), room.itemCount() + "")
|
||||||
|
.replace(Emulator.getTexts().getValue("wired.variable.name", "%name%"), this.botName)
|
||||||
|
.replace(Emulator.getTexts().getValue("wired.variable.roomname", "%roomname%"), room.getName())
|
||||||
|
.replace(Emulator.getTexts().getValue("wired.variable.user_count", "%user_count%"), room.getUserCount() + "");
|
||||||
|
|
||||||
List<Bot> bots = room.getBots(this.botName);
|
List<Bot> bots = room.getBots(this.botName);
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ import com.eu.habbo.habbohotel.rooms.Room;
|
|||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.users.Habbo;
|
import com.eu.habbo.habbohotel.users.Habbo;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredEffectType;
|
import com.eu.habbo.habbohotel.wired.WiredEffectType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
import com.eu.habbo.messages.outgoing.hotelview.BonusRareComposer;
|
import com.eu.habbo.messages.outgoing.hotelview.BonusRareComposer;
|
||||||
@ -70,7 +71,7 @@ public class WiredEffectGiveHotelviewBonusRarePoints extends InteractionWiredEff
|
|||||||
packet.readInt();
|
packet.readInt();
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.amount = Integer.valueOf(packet.readString());
|
this.amount = Integer.parseInt(packet.readString());
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
@ -103,23 +104,29 @@ public class WiredEffectGiveHotelviewBonusRarePoints extends InteractionWiredEff
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.getDelay() + "\t" + this.amount;
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(this.getDelay(), this.amount));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
String wireData = set.getString("wired_data");
|
String wiredData = set.getString("wired_data");
|
||||||
this.amount = 0;
|
this.amount = 0;
|
||||||
|
|
||||||
if (wireData.split("\t").length >= 2) {
|
if(wiredData.startsWith("{")) {
|
||||||
super.setDelay(Integer.valueOf(wireData.split("\t")[0]));
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.setDelay(data.delay);
|
||||||
|
this.amount = data.amount;
|
||||||
|
} else {
|
||||||
|
if (wiredData.split("\t").length >= 2) {
|
||||||
|
super.setDelay(Integer.parseInt(wiredData.split("\t")[0]));
|
||||||
|
|
||||||
try {
|
try {
|
||||||
this.amount = Integer.valueOf(this.getWiredData().split("\t")[1]);
|
this.amount = Integer.parseInt(wiredData.split("\t")[1]);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -131,4 +138,14 @@ public class WiredEffectGiveHotelviewBonusRarePoints extends InteractionWiredEff
|
|||||||
public boolean requiresTriggeringUser() {
|
public boolean requiresTriggeringUser() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int delay;
|
||||||
|
int amount;
|
||||||
|
|
||||||
|
public JsonData(int delay, int amount) {
|
||||||
|
this.delay = delay;
|
||||||
|
this.amount = amount;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -2,9 +2,9 @@ package com.eu.habbo.habbohotel.items.interactions.wired.effects;
|
|||||||
|
|
||||||
import com.eu.habbo.Emulator;
|
import com.eu.habbo.Emulator;
|
||||||
import com.eu.habbo.habbohotel.gameclients.GameClient;
|
import com.eu.habbo.habbohotel.gameclients.GameClient;
|
||||||
import com.eu.habbo.habbohotel.games.GameTeamColors;
|
|
||||||
import com.eu.habbo.habbohotel.items.Item;
|
import com.eu.habbo.habbohotel.items.Item;
|
||||||
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect;
|
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredEffect;
|
||||||
|
import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.InteractionWiredMatchFurniSettings;
|
||||||
import com.eu.habbo.habbohotel.rooms.*;
|
import com.eu.habbo.habbohotel.rooms.*;
|
||||||
import com.eu.habbo.habbohotel.users.HabboItem;
|
import com.eu.habbo.habbohotel.users.HabboItem;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredEffectType;
|
import com.eu.habbo.habbohotel.wired.WiredEffectType;
|
||||||
@ -24,7 +24,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.regex.Pattern;
|
import java.util.regex.Pattern;
|
||||||
|
|
||||||
public class WiredEffectMatchFurni extends InteractionWiredEffect {
|
public class WiredEffectMatchFurni extends InteractionWiredEffect implements InteractionWiredMatchFurniSettings {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(WiredEffectMatchFurni.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(WiredEffectMatchFurni.class);
|
||||||
|
|
||||||
private static final WiredEffectType type = WiredEffectType.MATCH_SSHOT;
|
private static final WiredEffectType type = WiredEffectType.MATCH_SSHOT;
|
||||||
@ -241,6 +241,26 @@ public class WiredEffectMatchFurni extends InteractionWiredEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public THashSet<WiredMatchFurniSetting> getMatchFurniSettings() {
|
||||||
|
return this.settings;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldMatchState() {
|
||||||
|
return this.state;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldMatchRotation() {
|
||||||
|
return this.direction;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldMatchPosition() {
|
||||||
|
return this.position;
|
||||||
|
}
|
||||||
|
|
||||||
static class JsonData {
|
static class JsonData {
|
||||||
boolean state;
|
boolean state;
|
||||||
boolean direction;
|
boolean direction;
|
||||||
|
@ -21,6 +21,7 @@ import java.sql.SQLException;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredEffectMoveFurniAway extends InteractionWiredEffect {
|
public class WiredEffectMoveFurniAway extends InteractionWiredEffect {
|
||||||
public static final WiredEffectType type = WiredEffectType.FLEE;
|
public static final WiredEffectType type = WiredEffectType.FLEE;
|
||||||
@ -98,29 +99,36 @@ public class WiredEffectMoveFurniAway extends InteractionWiredEffect {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
StringBuilder wiredData = new StringBuilder(this.getDelay() + "\t");
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.getDelay(),
|
||||||
if (this.items != null && !this.items.isEmpty()) {
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
for (HabboItem item : this.items) {
|
));
|
||||||
wiredData.append(item.getId()).append(";");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return wiredData.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items = new THashSet<>();
|
this.items = new THashSet<>();
|
||||||
String[] wiredData = set.getString("wired_data").split("\t");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
if (wiredData.length >= 1) {
|
if (wiredData.startsWith("{")) {
|
||||||
this.setDelay(Integer.valueOf(wiredData[0]));
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.setDelay(data.delay);
|
||||||
|
for (Integer id: data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
}
|
}
|
||||||
if (wiredData.length == 2) {
|
}
|
||||||
if (wiredData[1].contains(";")) {
|
} else {
|
||||||
for (String s : wiredData[1].split(";")) {
|
String[] wiredDataOld = wiredData.split("\t");
|
||||||
HabboItem item = room.getHabboItem(Integer.valueOf(s));
|
|
||||||
|
if (wiredDataOld.length >= 1) {
|
||||||
|
this.setDelay(Integer.parseInt(wiredDataOld[0]));
|
||||||
|
}
|
||||||
|
if (wiredDataOld.length == 2) {
|
||||||
|
if (wiredDataOld[1].contains(";")) {
|
||||||
|
for (String s : wiredDataOld[1].split(";")) {
|
||||||
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
if (item != null)
|
if (item != null)
|
||||||
this.items.add(item);
|
this.items.add(item);
|
||||||
@ -128,6 +136,7 @@ public class WiredEffectMoveFurniAway extends InteractionWiredEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -206,4 +215,14 @@ public class WiredEffectMoveFurniAway extends InteractionWiredEffect {
|
|||||||
protected long requiredCooldown() {
|
protected long requiredCooldown() {
|
||||||
return 495;
|
return 495;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int delay;
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(int delay, List<Integer> itemIds) {
|
||||||
|
this.delay = delay;
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.LinkedHashMap;
|
import java.util.LinkedHashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredEffectMoveFurniTo extends InteractionWiredEffect {
|
public class WiredEffectMoveFurniTo extends InteractionWiredEffect {
|
||||||
public static final WiredEffectType type = WiredEffectType.MOVE_FURNI_TO;
|
public static final WiredEffectType type = WiredEffectType.MOVE_FURNI_TO;
|
||||||
@ -123,24 +124,23 @@ public class WiredEffectMoveFurniTo extends InteractionWiredEffect {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
THashSet<HabboItem> items = new THashSet<>();
|
THashSet<HabboItem> itemsToRemove = new THashSet<>();
|
||||||
|
|
||||||
for (HabboItem item : this.items) {
|
for (HabboItem item : this.items) {
|
||||||
if (item.getRoomId() != this.getRoomId() || Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()).getHabboItem(item.getId()) == null)
|
if (item.getRoomId() != this.getRoomId() || Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId()).getHabboItem(item.getId()) == null)
|
||||||
items.add(item);
|
itemsToRemove.add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (HabboItem item : items) {
|
for (HabboItem item : itemsToRemove) {
|
||||||
this.items.remove(item);
|
this.items.remove(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder data = new StringBuilder(this.direction + "\t" + this.spacing + "\t" + this.getDelay() + "\t");
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.direction,
|
||||||
for (HabboItem item : this.items) {
|
this.spacing,
|
||||||
data.append(item.getId()).append("\r");
|
this.getDelay(),
|
||||||
}
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
|
));
|
||||||
return data.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -176,25 +176,40 @@ public class WiredEffectMoveFurniTo extends InteractionWiredEffect {
|
|||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
String[] data = set.getString("wired_data").split("\t");
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.direction = data.direction;
|
||||||
|
this.spacing = data.spacing;
|
||||||
|
this.setDelay(data.delay);
|
||||||
|
|
||||||
|
for (Integer id: data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split("\t");
|
||||||
|
|
||||||
if (data.length == 4) {
|
if (data.length == 4) {
|
||||||
try {
|
try {
|
||||||
this.direction = Integer.valueOf(data[0]);
|
this.direction = Integer.parseInt(data[0]);
|
||||||
this.spacing = Integer.valueOf(data[1]);
|
this.spacing = Integer.parseInt(data[1]);
|
||||||
this.setDelay(Integer.valueOf(data[2]));
|
this.setDelay(Integer.parseInt(data[2]));
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
|
|
||||||
for (String s : data[3].split("\r")) {
|
for (String s : data[3].split("\r")) {
|
||||||
HabboItem item = room.getHabboItem(Integer.valueOf(s));
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
if (item != null)
|
if (item != null)
|
||||||
this.items.add(item);
|
this.items.add(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -209,4 +224,18 @@ public class WiredEffectMoveFurniTo extends InteractionWiredEffect {
|
|||||||
protected long requiredCooldown() {
|
protected long requiredCooldown() {
|
||||||
return 495;
|
return 495;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int direction;
|
||||||
|
int spacing;
|
||||||
|
int delay;
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(int direction, int spacing, int delay, List<Integer> itemIds) {
|
||||||
|
this.direction = direction;
|
||||||
|
this.spacing = spacing;
|
||||||
|
this.delay = delay;
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -22,6 +22,7 @@ import java.sql.SQLException;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Wired effect: move to closest user
|
* Wired effect: move to closest user
|
||||||
@ -233,28 +234,36 @@ public class WiredEffectMoveFurniTowards extends InteractionWiredEffect {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
StringBuilder wiredData = new StringBuilder(this.getDelay() + "\t");
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.getDelay(),
|
||||||
if (this.items != null && !this.items.isEmpty()) {
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
for (HabboItem item : this.items) {
|
));
|
||||||
wiredData.append(item.getId()).append(";");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return wiredData.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items = new THashSet<>();
|
this.items = new THashSet<>();
|
||||||
String[] wiredData = set.getString("wired_data").split("\t");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
if (wiredData.length >= 1) {
|
if (wiredData.startsWith("{")) {
|
||||||
this.setDelay(Integer.parseInt(wiredData[0]));
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.setDelay(data.delay);
|
||||||
|
|
||||||
|
for (Integer id: data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
}
|
}
|
||||||
if (wiredData.length == 2) {
|
}
|
||||||
if (wiredData[1].contains(";")) {
|
} else {
|
||||||
for (String s : wiredData[1].split(";")) {
|
String[] wiredDataOld = wiredData.split("\t");
|
||||||
|
|
||||||
|
if (wiredDataOld.length >= 1) {
|
||||||
|
this.setDelay(Integer.parseInt(wiredDataOld[0]));
|
||||||
|
}
|
||||||
|
if (wiredDataOld.length == 2) {
|
||||||
|
if (wiredDataOld[1].contains(";")) {
|
||||||
|
for (String s : wiredDataOld[1].split(";")) {
|
||||||
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
if (item != null)
|
if (item != null)
|
||||||
@ -263,6 +272,7 @@ public class WiredEffectMoveFurniTowards extends InteractionWiredEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -342,4 +352,14 @@ public class WiredEffectMoveFurniTowards extends InteractionWiredEffect {
|
|||||||
protected long requiredCooldown() {
|
protected long requiredCooldown() {
|
||||||
return 495;
|
return 495;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int delay;
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(int delay, List<Integer> itemIds) {
|
||||||
|
this.delay = delay;
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,6 +19,8 @@ import org.slf4j.LoggerFactory;
|
|||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredEffectMoveRotateFurni extends InteractionWiredEffect implements ICycleable {
|
public class WiredEffectMoveRotateFurni extends InteractionWiredEffect implements ICycleable {
|
||||||
|
|
||||||
@ -80,35 +82,45 @@ public class WiredEffectMoveRotateFurni extends InteractionWiredEffect implement
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
THashSet<HabboItem> items = new THashSet<>(this.items.size() / 2);
|
THashSet<HabboItem> itemsToRemove = new THashSet<>(this.items.size() / 2);
|
||||||
|
|
||||||
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId());
|
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId());
|
||||||
|
|
||||||
for (HabboItem item : this.items) {
|
for (HabboItem item : this.items) {
|
||||||
if (item.getRoomId() != this.getRoomId() || (room != null && room.getHabboItem(item.getId()) == null))
|
if (item.getRoomId() != this.getRoomId() || (room != null && room.getHabboItem(item.getId()) == null))
|
||||||
items.add(item);
|
itemsToRemove.add(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (HabboItem item : items) {
|
for (HabboItem item : itemsToRemove) {
|
||||||
this.items.remove(item);
|
this.items.remove(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder data = new StringBuilder(this.direction + "\t" +
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
this.rotation + "\t" +
|
this.direction,
|
||||||
this.getDelay() + "\t");
|
this.rotation,
|
||||||
|
this.getDelay(),
|
||||||
for (HabboItem item : this.items) {
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
data.append(item.getId()).append("\r");
|
));
|
||||||
}
|
|
||||||
|
|
||||||
return data.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
String[] data = set.getString("wired_data").split("\t");
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.setDelay(data.delay);
|
||||||
|
this.direction = data.direction;
|
||||||
|
this.rotation = data.rotation;
|
||||||
|
for (Integer id: data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split("\t");
|
||||||
|
|
||||||
if (data.length == 4) {
|
if (data.length == 4) {
|
||||||
try {
|
try {
|
||||||
@ -127,6 +139,7 @@ public class WiredEffectMoveRotateFurni extends InteractionWiredEffect implement
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -303,4 +316,18 @@ public class WiredEffectMoveRotateFurni extends InteractionWiredEffect implement
|
|||||||
public void cycle(Room room) {
|
public void cycle(Room room) {
|
||||||
this.itemCooldowns.clear();
|
this.itemCooldowns.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int direction;
|
||||||
|
int rotation;
|
||||||
|
int delay;
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(int direction, int rotation, int delay, List<Integer> itemIds) {
|
||||||
|
this.direction = direction;
|
||||||
|
this.rotation = rotation;
|
||||||
|
this.delay = delay;
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@ -10,6 +10,7 @@ import com.eu.habbo.habbohotel.rooms.RoomChatMessageBubbles;
|
|||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.users.Habbo;
|
import com.eu.habbo.habbohotel.users.Habbo;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredEffectType;
|
import com.eu.habbo.habbohotel.wired.WiredEffectType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
import com.eu.habbo.messages.outgoing.rooms.users.RoomUserWhisperComposer;
|
import com.eu.habbo.messages.outgoing.rooms.users.RoomUserWhisperComposer;
|
||||||
@ -79,12 +80,24 @@ public class WiredEffectMuteHabbo extends InteractionWiredEffect {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.getDelay() + "\t" + this.length + "\t" + this.message;
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.getDelay(),
|
||||||
|
this.length,
|
||||||
|
this.message
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
String[] data = set.getString("wired_data").split("\t");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.setDelay(data.delay);
|
||||||
|
this.length = data.length;
|
||||||
|
this.message = data.message;
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split("\t");
|
||||||
|
|
||||||
if (data.length >= 3) {
|
if (data.length >= 3) {
|
||||||
try {
|
try {
|
||||||
@ -95,6 +108,7 @@ public class WiredEffectMuteHabbo extends InteractionWiredEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -112,4 +126,16 @@ public class WiredEffectMuteHabbo extends InteractionWiredEffect {
|
|||||||
public boolean requiresTriggeringUser() {
|
public boolean requiresTriggeringUser() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int delay;
|
||||||
|
int length;
|
||||||
|
String message;
|
||||||
|
|
||||||
|
public JsonData(int delay, int length, String message) {
|
||||||
|
this.delay = delay;
|
||||||
|
this.length = length;
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -8,6 +8,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger;
|
|||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredEffectType;
|
import com.eu.habbo.habbohotel.wired.WiredEffectType;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
import com.eu.habbo.threading.runnables.WiredResetTimers;
|
import com.eu.habbo.threading.runnables.WiredResetTimers;
|
||||||
@ -85,18 +86,26 @@ public class WiredEffectResetTimers extends InteractionWiredEffect {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.delay + "";
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.delay
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
String data = set.getString("wired_data");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.delay = data.delay;
|
||||||
|
} else {
|
||||||
try {
|
try {
|
||||||
if (!data.equals(""))
|
if (!wiredData.equals("")) {
|
||||||
this.delay = Integer.valueOf(data);
|
this.delay = Integer.parseInt(wiredData);
|
||||||
|
}
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
this.setDelay(this.delay);
|
this.setDelay(this.delay);
|
||||||
}
|
}
|
||||||
@ -111,4 +120,12 @@ public class WiredEffectResetTimers extends InteractionWiredEffect {
|
|||||||
public WiredEffectType getType() {
|
public WiredEffectType getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int delay;
|
||||||
|
|
||||||
|
public JsonData(int delay) {
|
||||||
|
this.delay = delay;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ import java.sql.SQLException;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredEffectTeleport extends InteractionWiredEffect {
|
public class WiredEffectTeleport extends InteractionWiredEffect {
|
||||||
public static final WiredEffectType type = WiredEffectType.TELEPORT;
|
public static final WiredEffectType type = WiredEffectType.TELEPORT;
|
||||||
@ -181,29 +182,36 @@ public class WiredEffectTeleport extends InteractionWiredEffect {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
StringBuilder wiredData = new StringBuilder(this.getDelay() + "\t");
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.getDelay(),
|
||||||
if (this.items != null && !this.items.isEmpty()) {
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
for (HabboItem item : this.items) {
|
));
|
||||||
wiredData.append(item.getId()).append(";");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return wiredData.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items = new ArrayList<>();
|
this.items = new ArrayList<>();
|
||||||
String[] wiredData = set.getString("wired_data").split("\t");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
if (wiredData.length >= 1) {
|
if (wiredData.startsWith("{")) {
|
||||||
this.setDelay(Integer.valueOf(wiredData[0]));
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.setDelay(data.delay);
|
||||||
|
for (Integer id: data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
}
|
}
|
||||||
if (wiredData.length == 2) {
|
}
|
||||||
if (wiredData[1].contains(";")) {
|
} else {
|
||||||
for (String s : wiredData[1].split(";")) {
|
String[] wiredDataOld = wiredData.split("\t");
|
||||||
HabboItem item = room.getHabboItem(Integer.valueOf(s));
|
|
||||||
|
if (wiredDataOld.length >= 1) {
|
||||||
|
this.setDelay(Integer.parseInt(wiredDataOld[0]));
|
||||||
|
}
|
||||||
|
if (wiredDataOld.length == 2) {
|
||||||
|
if (wiredDataOld[1].contains(";")) {
|
||||||
|
for (String s : wiredDataOld[1].split(";")) {
|
||||||
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
if (item != null)
|
if (item != null)
|
||||||
this.items.add(item);
|
this.items.add(item);
|
||||||
@ -211,6 +219,7 @@ public class WiredEffectTeleport extends InteractionWiredEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -232,4 +241,14 @@ public class WiredEffectTeleport extends InteractionWiredEffect {
|
|||||||
protected long requiredCooldown() {
|
protected long requiredCooldown() {
|
||||||
return 50L;
|
return 50L;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int delay;
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(int delay, List<Integer> itemIds) {
|
||||||
|
this.delay = delay;
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -35,6 +35,7 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredEffectToggleFurni extends InteractionWiredEffect {
|
public class WiredEffectToggleFurni extends InteractionWiredEffect {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(WiredEffectToggleFurni.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(WiredEffectToggleFurni.class);
|
||||||
@ -193,7 +194,7 @@ public class WiredEffectToggleFurni extends InteractionWiredEffect {
|
|||||||
int state = 0;
|
int state = 0;
|
||||||
if (!item.getExtradata().isEmpty()) {
|
if (!item.getExtradata().isEmpty()) {
|
||||||
try {
|
try {
|
||||||
state = Integer.valueOf(item.getExtradata()); // assumes that extradata is state, could be something else for trophies etc.
|
state = Integer.parseInt(item.getExtradata()); // assumes that extradata is state, could be something else for trophies etc.
|
||||||
} catch (NumberFormatException ignored) {
|
} catch (NumberFormatException ignored) {
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -212,29 +213,41 @@ public class WiredEffectToggleFurni extends InteractionWiredEffect {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
StringBuilder wiredData = new StringBuilder(this.getDelay() + "\t");
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.getDelay(),
|
||||||
if (this.items != null && !this.items.isEmpty()) {
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
for (HabboItem item : this.items) {
|
));
|
||||||
wiredData.append(item.getId()).append(";");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return wiredData.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
String[] wiredData = set.getString("wired_data").split("\t");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
if (wiredData.length >= 1) {
|
if (wiredData.startsWith("{")) {
|
||||||
this.setDelay(Integer.valueOf(wiredData[0]));
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.setDelay(data.delay);
|
||||||
|
for (Integer id: data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
|
||||||
|
if (item instanceof InteractionFreezeBlock || item instanceof InteractionFreezeTile || item instanceof InteractionCrackable) {
|
||||||
|
continue;
|
||||||
}
|
}
|
||||||
if (wiredData.length == 2) {
|
|
||||||
if (wiredData[1].contains(";")) {
|
if (item != null) {
|
||||||
for (String s : wiredData[1].split(";")) {
|
this.items.add(item);
|
||||||
HabboItem item = room.getHabboItem(Integer.valueOf(s));
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String[] wiredDataOld = wiredData.split("\t");
|
||||||
|
|
||||||
|
if (wiredDataOld.length >= 1) {
|
||||||
|
this.setDelay(Integer.parseInt(wiredDataOld[0]));
|
||||||
|
}
|
||||||
|
if (wiredDataOld.length == 2) {
|
||||||
|
if (wiredDataOld[1].contains(";")) {
|
||||||
|
for (String s : wiredDataOld[1].split(";")) {
|
||||||
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
if (item instanceof InteractionFreezeBlock || item instanceof InteractionFreezeTile || item instanceof InteractionCrackable)
|
if (item instanceof InteractionFreezeBlock || item instanceof InteractionFreezeTile || item instanceof InteractionCrackable)
|
||||||
continue;
|
continue;
|
||||||
@ -245,6 +258,7 @@ public class WiredEffectToggleFurni extends InteractionWiredEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -256,4 +270,14 @@ public class WiredEffectToggleFurni extends InteractionWiredEffect {
|
|||||||
public WiredEffectType getType() {
|
public WiredEffectType getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int delay;
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(int delay, List<Integer> itemIds) {
|
||||||
|
this.delay = delay;
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -32,6 +32,7 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredEffectToggleRandom extends InteractionWiredEffect {
|
public class WiredEffectToggleRandom extends InteractionWiredEffect {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(WiredEffectToggleRandom.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(WiredEffectToggleRandom.class);
|
||||||
@ -192,29 +193,22 @@ public class WiredEffectToggleRandom extends InteractionWiredEffect {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
StringBuilder wiredData = new StringBuilder(this.getDelay() + "\t");
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.getDelay(),
|
||||||
if (!this.items.isEmpty()) {
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
for (HabboItem item : this.items) {
|
));
|
||||||
wiredData.append(item.getId()).append(";");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return wiredData.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
String[] wiredData = set.getString("wired_data").split("\t");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
if (wiredData.length >= 1) {
|
if (wiredData.startsWith("{")) {
|
||||||
this.setDelay(Integer.valueOf(wiredData[0]));
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
}
|
this.setDelay(data.delay);
|
||||||
if (wiredData.length == 2) {
|
for (Integer id: data.itemIds) {
|
||||||
if (wiredData[1].contains(";")) {
|
HabboItem item = room.getHabboItem(id);
|
||||||
for (String s : wiredData[1].split(";")) {
|
|
||||||
HabboItem item = room.getHabboItem(Integer.valueOf(s));
|
|
||||||
|
|
||||||
if (item instanceof InteractionFreezeBlock || item instanceof InteractionGameTimer || item instanceof InteractionCrackable)
|
if (item instanceof InteractionFreezeBlock || item instanceof InteractionGameTimer || item instanceof InteractionCrackable)
|
||||||
continue;
|
continue;
|
||||||
@ -222,6 +216,24 @@ public class WiredEffectToggleRandom extends InteractionWiredEffect {
|
|||||||
if (item != null)
|
if (item != null)
|
||||||
this.items.add(item);
|
this.items.add(item);
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
String[] wiredDataOld = wiredData.split("\t");
|
||||||
|
|
||||||
|
if (wiredDataOld.length >= 1) {
|
||||||
|
this.setDelay(Integer.parseInt(wiredDataOld[0]));
|
||||||
|
}
|
||||||
|
if (wiredDataOld.length == 2) {
|
||||||
|
if (wiredDataOld[1].contains(";")) {
|
||||||
|
for (String s : wiredDataOld[1].split(";")) {
|
||||||
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
|
if (item instanceof InteractionFreezeBlock || item instanceof InteractionGameTimer || item instanceof InteractionCrackable)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (item != null)
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -236,4 +248,14 @@ public class WiredEffectToggleRandom extends InteractionWiredEffect {
|
|||||||
public WiredEffectType getType() {
|
public WiredEffectType getType() {
|
||||||
return type;
|
return type;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int delay;
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(int delay, List<Integer> itemIds) {
|
||||||
|
this.delay = delay;
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredEffectTriggerStacks extends InteractionWiredEffect {
|
public class WiredEffectTriggerStacks extends InteractionWiredEffect {
|
||||||
public static final WiredEffectType type = WiredEffectType.CALL_STACKS;
|
public static final WiredEffectType type = WiredEffectType.CALL_STACKS;
|
||||||
@ -156,29 +157,36 @@ public class WiredEffectTriggerStacks extends InteractionWiredEffect {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
StringBuilder wiredData = new StringBuilder(this.getDelay() + "\t");
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.getDelay(),
|
||||||
if (this.items != null && !this.items.isEmpty()) {
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
for (HabboItem item : this.items) {
|
));
|
||||||
wiredData.append(item.getId()).append(";");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return wiredData.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items = new THashSet<>();
|
this.items = new THashSet<>();
|
||||||
String[] wiredData = set.getString("wired_data").split("\t");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
if (wiredData.length >= 1) {
|
if (wiredData.startsWith("{")) {
|
||||||
this.setDelay(Integer.valueOf(wiredData[0]));
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.setDelay(data.delay);
|
||||||
|
for (Integer id: data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
}
|
}
|
||||||
if (wiredData.length == 2) {
|
}
|
||||||
if (wiredData[1].contains(";")) {
|
} else {
|
||||||
for (String s : wiredData[1].split(";")) {
|
String[] wiredDataOld = wiredData.split("\t");
|
||||||
HabboItem item = room.getHabboItem(Integer.valueOf(s));
|
|
||||||
|
if (wiredDataOld.length >= 1) {
|
||||||
|
this.setDelay(Integer.parseInt(wiredDataOld[0]));
|
||||||
|
}
|
||||||
|
if (wiredDataOld.length == 2) {
|
||||||
|
if (wiredDataOld[1].contains(";")) {
|
||||||
|
for (String s : wiredDataOld[1].split(";")) {
|
||||||
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
if (item != null)
|
if (item != null)
|
||||||
this.items.add(item);
|
this.items.add(item);
|
||||||
@ -186,6 +194,7 @@ public class WiredEffectTriggerStacks extends InteractionWiredEffect {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -202,4 +211,14 @@ public class WiredEffectTriggerStacks extends InteractionWiredEffect {
|
|||||||
protected long requiredCooldown() {
|
protected long requiredCooldown() {
|
||||||
return 250;
|
return 250;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int delay;
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(int delay, List<Integer> itemIds) {
|
||||||
|
this.delay = delay;
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,11 @@
|
|||||||
|
package com.eu.habbo.habbohotel.items.interactions.wired.interfaces;
|
||||||
|
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredMatchFurniSetting;
|
||||||
|
import gnu.trove.set.hash.THashSet;
|
||||||
|
|
||||||
|
public interface InteractionWiredMatchFurniSettings {
|
||||||
|
public THashSet<WiredMatchFurniSetting> getMatchFurniSettings();
|
||||||
|
public boolean shouldMatchState();
|
||||||
|
public boolean shouldMatchRotation();
|
||||||
|
public boolean shouldMatchPosition();
|
||||||
|
}
|
@ -7,6 +7,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger;
|
|||||||
import com.eu.habbo.habbohotel.items.interactions.wired.WiredTriggerReset;
|
import com.eu.habbo.habbohotel.items.interactions.wired.WiredTriggerReset;
|
||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
@ -39,13 +40,22 @@ public class WiredTriggerAtSetTime extends InteractionWiredTrigger implements Wi
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.executeTime + "";
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.executeTime
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
if (set.getString("wired_data").length() >= 1) {
|
String wiredData = set.getString("wired_data");
|
||||||
this.executeTime = (Integer.valueOf(set.getString("wired_data")));
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.executeTime = data.executeTime;
|
||||||
|
} else {
|
||||||
|
if (wiredData.length() >= 1) {
|
||||||
|
this.executeTime = (Integer.parseInt(wiredData));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.executeTime < 500) {
|
if (this.executeTime < 500) {
|
||||||
@ -115,4 +125,12 @@ public class WiredTriggerAtSetTime extends InteractionWiredTrigger implements Wi
|
|||||||
|
|
||||||
Emulator.getThreading().run(new WiredExecuteTask(this, Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId())), this.executeTime);
|
Emulator.getThreading().run(new WiredExecuteTask(this, Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId())), this.executeTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int executeTime;
|
||||||
|
|
||||||
|
public JsonData(int executeTime) {
|
||||||
|
this.executeTime = executeTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger;
|
|||||||
import com.eu.habbo.habbohotel.items.interactions.wired.WiredTriggerReset;
|
import com.eu.habbo.habbohotel.items.interactions.wired.WiredTriggerReset;
|
||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
@ -38,13 +39,22 @@ public class WiredTriggerAtTimeLong extends InteractionWiredTrigger implements W
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.executeTime + "";
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.executeTime
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
if (set.getString("wired_data").length() >= 1) {
|
String wiredData = set.getString("wired_data");
|
||||||
this.executeTime = (Integer.valueOf(set.getString("wired_data")));
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.executeTime = data.executeTime;
|
||||||
|
} else {
|
||||||
|
if (wiredData.length() >= 1) {
|
||||||
|
this.executeTime = (Integer.parseInt(wiredData));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.executeTime < 500) {
|
if (this.executeTime < 500) {
|
||||||
@ -113,4 +123,12 @@ public class WiredTriggerAtTimeLong extends InteractionWiredTrigger implements W
|
|||||||
|
|
||||||
Emulator.getThreading().run(new WiredExecuteTask(this, Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId())), this.executeTime);
|
Emulator.getThreading().run(new WiredExecuteTask(this, Emulator.getGameEnvironment().getRoomManager().getRoom(this.getRoomId())), this.executeTime);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int executeTime;
|
||||||
|
|
||||||
|
public JsonData(int executeTime) {
|
||||||
|
this.executeTime = executeTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -21,6 +21,7 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredTriggerBotReachedFurni extends InteractionWiredTrigger {
|
public class WiredTriggerBotReachedFurni extends InteractionWiredTrigger {
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(WiredTriggerBotReachedFurni.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(WiredTriggerBotReachedFurni.class);
|
||||||
@ -124,22 +125,28 @@ public class WiredTriggerBotReachedFurni extends InteractionWiredTrigger {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
StringBuilder wiredData = new StringBuilder(this.botName + ":");
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.botName,
|
||||||
if (!this.items.isEmpty()) {
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
for (HabboItem item : this.items) {
|
));
|
||||||
wiredData.append(item.getId()).append(";");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return wiredData.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
String[] data = set.getString("wired_data").split(":");
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.botName = data.botName;
|
||||||
|
for (Integer id: data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split(":");
|
||||||
|
|
||||||
if (data.length == 1) {
|
if (data.length == 1) {
|
||||||
this.botName = data[0];
|
this.botName = data[0];
|
||||||
@ -148,9 +155,9 @@ public class WiredTriggerBotReachedFurni extends InteractionWiredTrigger {
|
|||||||
|
|
||||||
String[] items = data[1].split(";");
|
String[] items = data[1].split(";");
|
||||||
|
|
||||||
for (int i = 0; i < items.length; i++) {
|
for (String id : items) {
|
||||||
try {
|
try {
|
||||||
HabboItem item = room.getHabboItem(Integer.valueOf(items[i]));
|
HabboItem item = room.getHabboItem(Integer.parseInt(id));
|
||||||
|
|
||||||
if (item != null)
|
if (item != null)
|
||||||
this.items.add(item);
|
this.items.add(item);
|
||||||
@ -160,10 +167,21 @@ public class WiredTriggerBotReachedFurni extends InteractionWiredTrigger {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
this.botName = "";
|
this.botName = "";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
String botName;
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(String botName, List<Integer> itemIds) {
|
||||||
|
this.botName = botName;
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.items.Item;
|
|||||||
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger;
|
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger;
|
||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
@ -62,12 +63,21 @@ public class WiredTriggerBotReachedHabbo extends InteractionWiredTrigger {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.botName;
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.botName
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.botName = set.getString("wired_data");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.botName = data.botName;
|
||||||
|
} else {
|
||||||
|
this.botName = wiredData;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -79,4 +89,12 @@ public class WiredTriggerBotReachedHabbo extends InteractionWiredTrigger {
|
|||||||
public boolean isTriggeredByRoomUnit() {
|
public boolean isTriggeredByRoomUnit() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
String botName;
|
||||||
|
|
||||||
|
public JsonData(String botName) {
|
||||||
|
this.botName = botName;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,12 +16,13 @@ import gnu.trove.set.hash.THashSet;
|
|||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger {
|
public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger {
|
||||||
private static final WiredTriggerType type = WiredTriggerType.STATE_CHANGED;
|
private static final WiredTriggerType type = WiredTriggerType.STATE_CHANGED;
|
||||||
|
|
||||||
private THashSet<HabboItem> items;
|
private THashSet<HabboItem> items;
|
||||||
private String message = "";
|
|
||||||
|
|
||||||
public WiredTriggerFurniStateToggled(ResultSet set, Item baseItem) throws SQLException {
|
public WiredTriggerFurniStateToggled(ResultSet set, Item baseItem) throws SQLException {
|
||||||
super(set, baseItem);
|
super(set, baseItem);
|
||||||
@ -55,31 +56,31 @@ public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
StringBuilder wiredData = new StringBuilder(super.getDelay() + ":\t:");
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
if (this.items != null) {
|
));
|
||||||
if (!this.items.isEmpty()) {
|
|
||||||
for (HabboItem item : this.items) {
|
|
||||||
wiredData.append(item.getId()).append(";");
|
|
||||||
}
|
|
||||||
} else
|
|
||||||
wiredData.append("\t");
|
|
||||||
}
|
|
||||||
|
|
||||||
return wiredData.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items = new THashSet<>();
|
this.items = new THashSet<>();
|
||||||
String wiredData = set.getString("wired_data");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
for (Integer id: data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if (wiredData.split(":").length >= 3) {
|
if (wiredData.split(":").length >= 3) {
|
||||||
super.setDelay(Integer.valueOf(wiredData.split(":")[0]));
|
super.setDelay(Integer.parseInt(wiredData.split(":")[0]));
|
||||||
this.message = wiredData.split(":")[1];
|
|
||||||
|
|
||||||
if (!wiredData.split(":")[2].equals("\t")) {
|
if (!wiredData.split(":")[2].equals("\t")) {
|
||||||
for (String s : wiredData.split(":")[2].split(";")) {
|
for (String s : wiredData.split(":")[2].split(";")) {
|
||||||
HabboItem item = room.getHabboItem(Integer.valueOf(s));
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
if (item != null)
|
if (item != null)
|
||||||
this.items.add(item);
|
this.items.add(item);
|
||||||
@ -87,11 +88,11 @@ public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
this.message = "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -126,7 +127,7 @@ public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger {
|
|||||||
}
|
}
|
||||||
message.appendInt(this.getBaseItem().getSpriteId());
|
message.appendInt(this.getBaseItem().getSpriteId());
|
||||||
message.appendInt(this.getId());
|
message.appendInt(this.getId());
|
||||||
message.appendString(this.message);
|
message.appendString("");
|
||||||
message.appendInt(0);
|
message.appendInt(0);
|
||||||
message.appendInt(0);
|
message.appendInt(0);
|
||||||
message.appendInt(this.getType().code);
|
message.appendInt(this.getType().code);
|
||||||
@ -153,4 +154,12 @@ public class WiredTriggerFurniStateToggled extends InteractionWiredTrigger {
|
|||||||
public boolean isTriggeredByRoomUnit() {
|
public boolean isTriggeredByRoomUnit() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(List<Integer> itemIds) {
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger;
|
|||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.users.Habbo;
|
import com.eu.habbo.habbohotel.users.Habbo;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
@ -41,12 +42,21 @@ public class WiredTriggerHabboEntersRoom extends InteractionWiredTrigger {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.username;
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.username
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.username = set.getString("wired_data");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.username = data.username;
|
||||||
|
} else {
|
||||||
|
this.username = wiredData;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -86,4 +96,12 @@ public class WiredTriggerHabboEntersRoom extends InteractionWiredTrigger {
|
|||||||
public boolean isTriggeredByRoomUnit() {
|
public boolean isTriggeredByRoomUnit() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
String username;
|
||||||
|
|
||||||
|
public JsonData(String username) {
|
||||||
|
this.username = username;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger;
|
|||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
import com.eu.habbo.habbohotel.users.Habbo;
|
import com.eu.habbo.habbohotel.users.Habbo;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
@ -41,18 +42,29 @@ public class WiredTriggerHabboSaysKeyword extends InteractionWiredTrigger {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return (this.ownerOnly ? "1" : "0") + "\t" + this.key;
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.ownerOnly,
|
||||||
|
this.key
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
String[] data = set.getString("wired_data").split("\t");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.ownerOnly = data.ownerOnly;
|
||||||
|
this.key = data.key;
|
||||||
|
} else {
|
||||||
|
String[] data = wiredData.split("\t");
|
||||||
|
|
||||||
if (data.length == 2) {
|
if (data.length == 2) {
|
||||||
this.ownerOnly = data[0].equalsIgnoreCase("1");
|
this.ownerOnly = data[0].equalsIgnoreCase("1");
|
||||||
this.key = data[1];
|
this.key = data[1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -93,4 +105,14 @@ public class WiredTriggerHabboSaysKeyword extends InteractionWiredTrigger {
|
|||||||
public boolean isTriggeredByRoomUnit() {
|
public boolean isTriggeredByRoomUnit() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
boolean ownerOnly;
|
||||||
|
String key;
|
||||||
|
|
||||||
|
public JsonData(boolean ownerOnly, String key) {
|
||||||
|
this.ownerOnly = ownerOnly;
|
||||||
|
this.key = key;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,14 +14,13 @@ import gnu.trove.set.hash.THashSet;
|
|||||||
|
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredTriggerHabboWalkOffFurni extends InteractionWiredTrigger {
|
public class WiredTriggerHabboWalkOffFurni extends InteractionWiredTrigger {
|
||||||
public static final WiredTriggerType type = WiredTriggerType.WALKS_OFF_FURNI;
|
public static final WiredTriggerType type = WiredTriggerType.WALKS_OFF_FURNI;
|
||||||
|
|
||||||
private THashSet<HabboItem> items;
|
private THashSet<HabboItem> items;
|
||||||
private String message = "";
|
|
||||||
|
|
||||||
public WiredTriggerHabboWalkOffFurni(ResultSet set, Item baseItem) throws SQLException {
|
public WiredTriggerHabboWalkOffFurni(ResultSet set, Item baseItem) throws SQLException {
|
||||||
super(set, baseItem);
|
super(set, baseItem);
|
||||||
@ -45,32 +44,27 @@ public class WiredTriggerHabboWalkOffFurni extends InteractionWiredTrigger {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
StringBuilder wiredData = new StringBuilder(super.getDelay() + ":\t:");
|
return WiredHandler.getGsonBuilder().create().toJson(new WiredTriggerFurniStateToggled.JsonData(
|
||||||
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
if (!this.items.isEmpty()) {
|
));
|
||||||
List<HabboItem> toRemove = new ArrayList<>(0);
|
|
||||||
for (HabboItem item : this.items) {
|
|
||||||
if (item.getRoomId() == this.getRoomId()) {
|
|
||||||
wiredData.append(item.getId()).append(";");
|
|
||||||
} else {
|
|
||||||
toRemove.add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.items.removeAll(toRemove);
|
|
||||||
} else
|
|
||||||
wiredData.append("\t");
|
|
||||||
|
|
||||||
return wiredData.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
String wiredData = set.getString("wired_data");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
for (Integer id: data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if (wiredData.split(":").length >= 3) {
|
if (wiredData.split(":").length >= 3) {
|
||||||
super.setDelay(Integer.valueOf(wiredData.split(":")[0]));
|
super.setDelay(Integer.parseInt(wiredData.split(":")[0]));
|
||||||
this.message = wiredData.split(":")[1];
|
|
||||||
|
|
||||||
if (!wiredData.split(":")[2].equals("\t")) {
|
if (!wiredData.split(":")[2].equals("\t")) {
|
||||||
for (String s : wiredData.split(":")[2].split(";")) {
|
for (String s : wiredData.split(":")[2].split(";")) {
|
||||||
@ -78,7 +72,7 @@ public class WiredTriggerHabboWalkOffFurni extends InteractionWiredTrigger {
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
HabboItem item = room.getHabboItem(Integer.valueOf(s));
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
if (item != null)
|
if (item != null)
|
||||||
this.items.add(item);
|
this.items.add(item);
|
||||||
@ -87,13 +81,12 @@ public class WiredTriggerHabboWalkOffFurni extends InteractionWiredTrigger {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
this.message = "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -126,7 +119,7 @@ public class WiredTriggerHabboWalkOffFurni extends InteractionWiredTrigger {
|
|||||||
}
|
}
|
||||||
message.appendInt(this.getBaseItem().getSpriteId());
|
message.appendInt(this.getBaseItem().getSpriteId());
|
||||||
message.appendInt(this.getId());
|
message.appendInt(this.getId());
|
||||||
message.appendString(this.message);
|
message.appendString("");
|
||||||
message.appendInt(0);
|
message.appendInt(0);
|
||||||
message.appendInt(0);
|
message.appendInt(0);
|
||||||
message.appendInt(this.getType().code);
|
message.appendInt(this.getType().code);
|
||||||
@ -154,4 +147,12 @@ public class WiredTriggerHabboWalkOffFurni extends InteractionWiredTrigger {
|
|||||||
public boolean isTriggeredByRoomUnit() {
|
public boolean isTriggeredByRoomUnit() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(List<Integer> itemIds) {
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -16,12 +16,12 @@ import java.sql.ResultSet;
|
|||||||
import java.sql.SQLException;
|
import java.sql.SQLException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
public class WiredTriggerHabboWalkOnFurni extends InteractionWiredTrigger {
|
public class WiredTriggerHabboWalkOnFurni extends InteractionWiredTrigger {
|
||||||
public static final WiredTriggerType type = WiredTriggerType.WALKS_ON_FURNI;
|
public static final WiredTriggerType type = WiredTriggerType.WALKS_ON_FURNI;
|
||||||
|
|
||||||
private THashSet<HabboItem> items;
|
private THashSet<HabboItem> items;
|
||||||
private String message = "";
|
|
||||||
|
|
||||||
public WiredTriggerHabboWalkOnFurni(ResultSet set, Item baseItem) throws SQLException {
|
public WiredTriggerHabboWalkOnFurni(ResultSet set, Item baseItem) throws SQLException {
|
||||||
super(set, baseItem);
|
super(set, baseItem);
|
||||||
@ -73,7 +73,7 @@ public class WiredTriggerHabboWalkOnFurni extends InteractionWiredTrigger {
|
|||||||
}
|
}
|
||||||
message.appendInt(this.getBaseItem().getSpriteId());
|
message.appendInt(this.getBaseItem().getSpriteId());
|
||||||
message.appendInt(this.getId());
|
message.appendInt(this.getId());
|
||||||
message.appendString(this.message);
|
message.appendString("");
|
||||||
message.appendInt(0);
|
message.appendInt(0);
|
||||||
message.appendInt(0);
|
message.appendInt(0);
|
||||||
message.appendInt(this.getType().code);
|
message.appendInt(this.getType().code);
|
||||||
@ -99,32 +99,27 @@ public class WiredTriggerHabboWalkOnFurni extends InteractionWiredTrigger {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
StringBuilder wiredData = new StringBuilder(super.getDelay() + ":\t:");
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.items.stream().map(HabboItem::getId).collect(Collectors.toList())
|
||||||
if (!this.items.isEmpty()) {
|
));
|
||||||
List<HabboItem> toRemove = new ArrayList<>(0);
|
|
||||||
for (HabboItem item : this.items) {
|
|
||||||
if (item.getRoomId() == this.getRoomId()) {
|
|
||||||
wiredData.append(item.getId()).append(";");
|
|
||||||
} else {
|
|
||||||
toRemove.add(item);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
this.items.removeAll(toRemove);
|
|
||||||
} else
|
|
||||||
wiredData.append("\t");
|
|
||||||
|
|
||||||
return wiredData.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
String wiredData = set.getString("wired_data");
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
for (Integer id: data.itemIds) {
|
||||||
|
HabboItem item = room.getHabboItem(id);
|
||||||
|
if (item != null) {
|
||||||
|
this.items.add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} else {
|
||||||
if (wiredData.split(":").length >= 3) {
|
if (wiredData.split(":").length >= 3) {
|
||||||
super.setDelay(Integer.valueOf(wiredData.split(":")[0]));
|
super.setDelay(Integer.parseInt(wiredData.split(":")[0]));
|
||||||
this.message = wiredData.split(":")[1];
|
|
||||||
|
|
||||||
if (!wiredData.split(":")[2].equals("\t")) {
|
if (!wiredData.split(":")[2].equals("\t")) {
|
||||||
for (String s : wiredData.split(":")[2].split(";")) {
|
for (String s : wiredData.split(":")[2].split(";")) {
|
||||||
@ -132,7 +127,7 @@ public class WiredTriggerHabboWalkOnFurni extends InteractionWiredTrigger {
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
try {
|
try {
|
||||||
HabboItem item = room.getHabboItem(Integer.valueOf(s));
|
HabboItem item = room.getHabboItem(Integer.parseInt(s));
|
||||||
|
|
||||||
if (item != null)
|
if (item != null)
|
||||||
this.items.add(item);
|
this.items.add(item);
|
||||||
@ -142,15 +137,23 @@ public class WiredTriggerHabboWalkOnFurni extends InteractionWiredTrigger {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
this.items.clear();
|
this.items.clear();
|
||||||
this.message = "";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isTriggeredByRoomUnit() {
|
public boolean isTriggeredByRoomUnit() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
List<Integer> itemIds;
|
||||||
|
|
||||||
|
public JsonData(List<Integer> itemIds) {
|
||||||
|
this.itemIds = itemIds;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -41,13 +41,22 @@ public class WiredTriggerRepeater extends InteractionWiredTrigger implements ICy
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.repeatTime + "";
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.repeatTime
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
if (set.getString("wired_data").length() >= 1) {
|
String wiredData = set.getString("wired_data");
|
||||||
this.repeatTime = (Integer.valueOf(set.getString("wired_data")));
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.repeatTime = data.repeatTime;
|
||||||
|
} else {
|
||||||
|
if (wiredData.length() >= 1) {
|
||||||
|
this.repeatTime = (Integer.valueOf(wiredData));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.repeatTime < 500) {
|
if (this.repeatTime < 500) {
|
||||||
@ -136,4 +145,12 @@ public class WiredTriggerRepeater extends InteractionWiredTrigger implements ICy
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int repeatTime;
|
||||||
|
|
||||||
|
public JsonData(int repeatTime) {
|
||||||
|
this.repeatTime = repeatTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -40,13 +40,22 @@ public class WiredTriggerRepeaterLong extends InteractionWiredTrigger implements
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.repeatTime + "";
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.repeatTime
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
if (set.getString("wired_data").length() >= 1) {
|
String wiredData = set.getString("wired_data");
|
||||||
this.repeatTime = (Integer.valueOf(set.getString("wired_data")));
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.repeatTime = data.repeatTime;
|
||||||
|
} else {
|
||||||
|
if (wiredData.length() >= 1) {
|
||||||
|
this.repeatTime = (Integer.valueOf(wiredData));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.repeatTime < 5000) {
|
if (this.repeatTime < 5000) {
|
||||||
@ -130,4 +139,12 @@ public class WiredTriggerRepeaterLong extends InteractionWiredTrigger implements
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int repeatTime;
|
||||||
|
|
||||||
|
public JsonData(int repeatTime) {
|
||||||
|
this.repeatTime = repeatTime;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import com.eu.habbo.habbohotel.items.Item;
|
|||||||
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger;
|
import com.eu.habbo.habbohotel.items.interactions.InteractionWiredTrigger;
|
||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
import com.eu.habbo.habbohotel.rooms.RoomUnit;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
||||||
import com.eu.habbo.messages.ClientMessage;
|
import com.eu.habbo.messages.ClientMessage;
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
@ -37,16 +38,25 @@ public class WiredTriggerScoreAchieved extends InteractionWiredTrigger {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String getWiredData() {
|
public String getWiredData() {
|
||||||
return this.score + "";
|
return WiredHandler.getGsonBuilder().create().toJson(new JsonData(
|
||||||
|
this.score
|
||||||
|
));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
public void loadWiredData(ResultSet set, Room room) throws SQLException {
|
||||||
|
String wiredData = set.getString("wired_data");
|
||||||
|
|
||||||
|
if (wiredData.startsWith("{")) {
|
||||||
|
JsonData data = WiredHandler.getGsonBuilder().create().fromJson(wiredData, JsonData.class);
|
||||||
|
this.score = data.score;
|
||||||
|
} else {
|
||||||
try {
|
try {
|
||||||
this.score = Integer.valueOf(set.getString("wired_data"));
|
this.score = Integer.parseInt(wiredData);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPickUp() {
|
public void onPickUp() {
|
||||||
@ -85,4 +95,12 @@ public class WiredTriggerScoreAchieved extends InteractionWiredTrigger {
|
|||||||
public boolean isTriggeredByRoomUnit() {
|
public boolean isTriggeredByRoomUnit() {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static class JsonData {
|
||||||
|
int score;
|
||||||
|
|
||||||
|
public JsonData(int score) {
|
||||||
|
this.score = score;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -428,6 +428,16 @@ public class ModToolManager {
|
|||||||
return bans;
|
return bans;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//if machine id is empty, downgrade ban type to IP ban
|
||||||
|
if( (type == ModToolBanType.MACHINE || type == ModToolBanType.SUPER) && (offlineInfo == null || offlineInfo.getMachineID().isEmpty())) {
|
||||||
|
type = ModToolBanType.IP;
|
||||||
|
}
|
||||||
|
|
||||||
|
//if ip address is empty, downgrade ban type to account ban
|
||||||
|
if( (type == ModToolBanType.IP || type == ModToolBanType.SUPER) && (offlineInfo == null || offlineInfo.getIpLogin().isEmpty())) {
|
||||||
|
type = ModToolBanType.ACCOUNT;
|
||||||
|
}
|
||||||
|
|
||||||
ModToolBan ban = new ModToolBan(targetUserId, offlineInfo != null ? offlineInfo.getIpLogin() : "offline", offlineInfo != null ? offlineInfo.getMachineID() : "offline", moderator.getHabboInfo().getId(), Emulator.getIntUnixTimestamp() + duration, reason, type, cfhTopic);
|
ModToolBan ban = new ModToolBan(targetUserId, offlineInfo != null ? offlineInfo.getIpLogin() : "offline", offlineInfo != null ? offlineInfo.getMachineID() : "offline", moderator.getHabboInfo().getId(), Emulator.getIntUnixTimestamp() + duration, reason, type, cfhTopic);
|
||||||
Emulator.getPluginManager().fireEvent(new SupportUserBannedEvent(moderator, target, ban));
|
Emulator.getPluginManager().fireEvent(new SupportUserBannedEvent(moderator, target, ban));
|
||||||
Emulator.getThreading().run(ban);
|
Emulator.getThreading().run(ban);
|
||||||
@ -505,6 +515,7 @@ public class ModToolManager {
|
|||||||
return ban;
|
return ban;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Deprecated
|
||||||
public boolean hasIPBan(Channel habbo) {
|
public boolean hasIPBan(Channel habbo) {
|
||||||
if (habbo == null)
|
if (habbo == null)
|
||||||
return false;
|
return false;
|
||||||
@ -512,9 +523,13 @@ public class ModToolManager {
|
|||||||
if (habbo.remoteAddress() == null || ((InetSocketAddress) habbo.remoteAddress()).getAddress() == null)
|
if (habbo.remoteAddress() == null || ((InetSocketAddress) habbo.remoteAddress()).getAddress() == null)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
|
return this.hasIPBan(((InetSocketAddress) habbo.remoteAddress()).getAddress().getHostAddress());
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasIPBan(String ipAddress) {
|
||||||
boolean banned = false;
|
boolean banned = false;
|
||||||
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM bans WHERE ip = ? AND (type = 'ip' OR type = 'super') AND ban_expire > ? LIMIT 1")) {
|
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM bans WHERE ip = ? AND (type = 'ip' OR type = 'super') AND ban_expire > ? LIMIT 1")) {
|
||||||
statement.setString(1, ((InetSocketAddress) habbo.remoteAddress()).getAddress().getHostAddress());
|
statement.setString(1, ipAddress);
|
||||||
statement.setInt(2, Emulator.getIntUnixTimestamp());
|
statement.setInt(2, Emulator.getIntUnixTimestamp());
|
||||||
|
|
||||||
try (ResultSet set = statement.executeQuery()) {
|
try (ResultSet set = statement.executeQuery()) {
|
||||||
@ -525,7 +540,6 @@ public class ModToolManager {
|
|||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
LOGGER.error("Caught SQL exception", e);
|
LOGGER.error("Caught SQL exception", e);
|
||||||
}
|
}
|
||||||
|
|
||||||
return banned;
|
return banned;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -383,6 +383,11 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
|
|||||||
this.updateItem(item);
|
this.updateItem(item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
for (HabboItem item : this.roomSpecialTypes.getItemsOfType(InteractionFireworks.class)) {
|
||||||
|
item.setExtradata("1");
|
||||||
|
this.updateItem(item);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Emulator.getPluginManager().fireEvent(new RoomLoadedEvent(this));
|
Emulator.getPluginManager().fireEvent(new RoomLoadedEvent(this));
|
||||||
@ -1205,7 +1210,10 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
|
|||||||
habbo.getRoomUnit().increaseIdleTimer();
|
habbo.getRoomUnit().increaseIdleTimer();
|
||||||
|
|
||||||
if (habbo.getRoomUnit().isIdle()) {
|
if (habbo.getRoomUnit().isIdle()) {
|
||||||
|
boolean danceIsNone = (habbo.getRoomUnit().getDanceType() == DanceType.NONE);
|
||||||
|
if (danceIsNone)
|
||||||
this.sendComposer(new RoomUnitIdleComposer(habbo.getRoomUnit()).compose());
|
this.sendComposer(new RoomUnitIdleComposer(habbo.getRoomUnit()).compose());
|
||||||
|
if (danceIsNone && !Emulator.getConfig().getBoolean("hotel.roomuser.idle.not_dancing.ignore.wired_idle"))
|
||||||
WiredHandler.handle(WiredTriggerType.IDLES, habbo.getRoomUnit(), this, new Object[]{habbo});
|
WiredHandler.handle(WiredTriggerType.IDLES, habbo.getRoomUnit(), this, new Object[]{habbo});
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
@ -2424,7 +2432,10 @@ public class Room implements Comparable<Room>, ISerialize, Runnable {
|
|||||||
this.roomSpecialTypes.addUndefined(item);
|
this.roomSpecialTypes.addUndefined(item);
|
||||||
} else if (item instanceof InteractionSnowboardSlope) {
|
} else if (item instanceof InteractionSnowboardSlope) {
|
||||||
this.roomSpecialTypes.addUndefined(item);
|
this.roomSpecialTypes.addUndefined(item);
|
||||||
|
} else if (item instanceof InteractionFireworks) {
|
||||||
|
this.roomSpecialTypes.addUndefined(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -14,8 +14,10 @@ import com.eu.habbo.messages.outgoing.rooms.FloodCounterComposer;
|
|||||||
import com.eu.habbo.messages.outgoing.rooms.ForwardToRoomComposer;
|
import com.eu.habbo.messages.outgoing.rooms.ForwardToRoomComposer;
|
||||||
import com.eu.habbo.messages.outgoing.rooms.users.*;
|
import com.eu.habbo.messages.outgoing.rooms.users.*;
|
||||||
import com.eu.habbo.messages.outgoing.users.*;
|
import com.eu.habbo.messages.outgoing.users.*;
|
||||||
|
import com.eu.habbo.plugin.events.furniture.FurnitureBuildheightEvent;
|
||||||
import com.eu.habbo.plugin.events.users.UserCreditsEvent;
|
import com.eu.habbo.plugin.events.users.UserCreditsEvent;
|
||||||
import com.eu.habbo.plugin.events.users.UserDisconnectEvent;
|
import com.eu.habbo.plugin.events.users.UserDisconnectEvent;
|
||||||
|
import com.eu.habbo.plugin.events.users.UserGetIPAddressEvent;
|
||||||
import com.eu.habbo.plugin.events.users.UserPointsEvent;
|
import com.eu.habbo.plugin.events.users.UserPointsEvent;
|
||||||
import gnu.trove.TIntCollection;
|
import gnu.trove.TIntCollection;
|
||||||
import gnu.trove.map.hash.THashMap;
|
import gnu.trove.map.hash.THashMap;
|
||||||
@ -114,11 +116,31 @@ public class Habbo implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void connect() {
|
public boolean connect() {
|
||||||
|
String ip = "";
|
||||||
|
|
||||||
if (!Emulator.getConfig().getBoolean("networking.tcp.proxy") && this.client.getChannel().remoteAddress() != null) {
|
if (!Emulator.getConfig().getBoolean("networking.tcp.proxy") && this.client.getChannel().remoteAddress() != null) {
|
||||||
SocketAddress address = this.client.getChannel().remoteAddress();
|
SocketAddress address = this.client.getChannel().remoteAddress();
|
||||||
|
ip = ((InetSocketAddress) address).getAddress().getHostAddress();
|
||||||
|
}
|
||||||
|
|
||||||
if (address != null) this.habboInfo.setIpLogin(((InetSocketAddress) address).getAddress().getHostAddress());
|
if (Emulator.getPluginManager().isRegistered(UserGetIPAddressEvent.class, true)) {
|
||||||
|
UserGetIPAddressEvent event = Emulator.getPluginManager().fireEvent(new UserGetIPAddressEvent(this, ip));
|
||||||
|
if (event.hasChangedIP()) {
|
||||||
|
ip = event.getUpdatedIp();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ip.isEmpty()) {
|
||||||
|
this.habboInfo.setIpLogin(ip);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Emulator.getGameEnvironment().getModToolManager().hasMACBan(this.client)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Emulator.getGameEnvironment().getModToolManager().hasIPBan(this.habboInfo.getIpLogin())) {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
this.habboInfo.setMachineID(this.client.getMachineId());
|
this.habboInfo.setMachineID(this.client.getMachineId());
|
||||||
@ -128,6 +150,7 @@ public class Habbo implements Runnable {
|
|||||||
|
|
||||||
Emulator.getGameEnvironment().getRoomManager().loadRoomsForHabbo(this);
|
Emulator.getGameEnvironment().getRoomManager().loadRoomsForHabbo(this);
|
||||||
LOGGER.info("{} logged in from IP {}", this.habboInfo.getUsername(), this.habboInfo.getIpLogin());
|
LOGGER.info("{} logged in from IP {}", this.habboInfo.getUsername(), this.habboInfo.getIpLogin());
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -205,7 +205,7 @@ public class HabboManager {
|
|||||||
|
|
||||||
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM users WHERE ip_register = ? OR ip_current = ? AND id != ? ORDER BY id DESC LIMIT ?")) {
|
try (Connection connection = Emulator.getDatabase().getDataSource().getConnection(); PreparedStatement statement = connection.prepareStatement("SELECT * FROM users WHERE ip_register = ? OR ip_current = ? AND id != ? ORDER BY id DESC LIMIT ?")) {
|
||||||
statement.setString(1, habbo.getHabboInfo().getIpRegister());
|
statement.setString(1, habbo.getHabboInfo().getIpRegister());
|
||||||
statement.setString(2, habbo.getClient().getChannel().remoteAddress().toString());
|
statement.setString(2, habbo.getHabboInfo().getIpLogin());
|
||||||
statement.setInt(3, habbo.getHabboInfo().getId());
|
statement.setInt(3, habbo.getHabboInfo().getId());
|
||||||
statement.setInt(4, limit);
|
statement.setInt(4, limit);
|
||||||
|
|
||||||
|
@ -64,6 +64,7 @@ import com.eu.habbo.messages.incoming.trading.*;
|
|||||||
import com.eu.habbo.messages.incoming.unknown.RequestResolutionEvent;
|
import com.eu.habbo.messages.incoming.unknown.RequestResolutionEvent;
|
||||||
import com.eu.habbo.messages.incoming.unknown.UnknownEvent1;
|
import com.eu.habbo.messages.incoming.unknown.UnknownEvent1;
|
||||||
import com.eu.habbo.messages.incoming.users.*;
|
import com.eu.habbo.messages.incoming.users.*;
|
||||||
|
import com.eu.habbo.messages.incoming.wired.WiredApplySetConditionsEvent;
|
||||||
import com.eu.habbo.messages.incoming.wired.WiredConditionSaveDataEvent;
|
import com.eu.habbo.messages.incoming.wired.WiredConditionSaveDataEvent;
|
||||||
import com.eu.habbo.messages.incoming.wired.WiredEffectSaveDataEvent;
|
import com.eu.habbo.messages.incoming.wired.WiredEffectSaveDataEvent;
|
||||||
import com.eu.habbo.messages.incoming.wired.WiredTriggerSaveDataEvent;
|
import com.eu.habbo.messages.incoming.wired.WiredTriggerSaveDataEvent;
|
||||||
@ -579,6 +580,7 @@ public class PacketManager {
|
|||||||
this.registerHandler(Incoming.WiredTriggerSaveDataEvent, WiredTriggerSaveDataEvent.class);
|
this.registerHandler(Incoming.WiredTriggerSaveDataEvent, WiredTriggerSaveDataEvent.class);
|
||||||
this.registerHandler(Incoming.WiredEffectSaveDataEvent, WiredEffectSaveDataEvent.class);
|
this.registerHandler(Incoming.WiredEffectSaveDataEvent, WiredEffectSaveDataEvent.class);
|
||||||
this.registerHandler(Incoming.WiredConditionSaveDataEvent, WiredConditionSaveDataEvent.class);
|
this.registerHandler(Incoming.WiredConditionSaveDataEvent, WiredConditionSaveDataEvent.class);
|
||||||
|
this.registerHandler(Incoming.WiredApplySetConditionsEvent, WiredApplySetConditionsEvent.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
void registerUnknown() throws Exception {
|
void registerUnknown() throws Exception {
|
||||||
|
@ -155,6 +155,7 @@ public class Incoming {
|
|||||||
public static final int RequestInventoryItemsEvent = 3150;
|
public static final int RequestInventoryItemsEvent = 3150;
|
||||||
public static final int ModToolRoomAlertEvent = 3842;
|
public static final int ModToolRoomAlertEvent = 3842;
|
||||||
public static final int WiredEffectSaveDataEvent = 2281;
|
public static final int WiredEffectSaveDataEvent = 2281;
|
||||||
|
public static final int WiredApplySetConditionsEvent = 3373;
|
||||||
public static final int CheckPetNameEvent = 2109;
|
public static final int CheckPetNameEvent = 2109;
|
||||||
public static final int SecureLoginEvent = 2419;
|
public static final int SecureLoginEvent = 2419;
|
||||||
public static final int BotSaveSettingsEvent = 2624;
|
public static final int BotSaveSettingsEvent = 2624;
|
||||||
|
@ -336,7 +336,10 @@ public class CatalogBuyItemAsGiftEvent extends MessageHandler {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.client.getHabbo().getHabboInfo().getId() != userId) {
|
||||||
AchievementManager.progressAchievement(this.client.getHabbo(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("GiftGiver"));
|
AchievementManager.progressAchievement(this.client.getHabbo(), Emulator.getGameEnvironment().getAchievementManager().getAchievement("GiftGiver"));
|
||||||
|
}
|
||||||
|
|
||||||
if (habbo != null) {
|
if (habbo != null) {
|
||||||
habbo.getClient().sendResponse(new AddHabboItemComposer(gift));
|
habbo.getClient().sendResponse(new AddHabboItemComposer(gift));
|
||||||
habbo.getClient().getHabbo().getInventory().getItemsComponent().addItem(gift);
|
habbo.getClient().getHabbo().getInventory().getItemsComponent().addItem(gift);
|
||||||
@ -351,7 +354,9 @@ public class CatalogBuyItemAsGiftEvent extends MessageHandler {
|
|||||||
habbo.getClient().sendResponse(new BubbleAlertComposer(BubbleAlertKeys.RECEIVED_BADGE.key, keys));
|
habbo.getClient().sendResponse(new BubbleAlertComposer(BubbleAlertKeys.RECEIVED_BADGE.key, keys));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (this.client.getHabbo().getHabboInfo().getId() != userId) {
|
||||||
AchievementManager.progressAchievement(userId, Emulator.getGameEnvironment().getAchievementManager().getAchievement("GiftReceiver"));
|
AchievementManager.progressAchievement(userId, Emulator.getGameEnvironment().getAchievementManager().getAchievement("GiftReceiver"));
|
||||||
|
}
|
||||||
|
|
||||||
if (!this.client.getHabbo().hasPermission(Permission.ACC_INFINITE_CREDITS)) {
|
if (!this.client.getHabbo().hasPermission(Permission.ACC_INFINITE_CREDITS)) {
|
||||||
if (totalCredits > 0) {
|
if (totalCredits > 0) {
|
||||||
|
@ -21,7 +21,7 @@ import com.eu.habbo.messages.outgoing.generic.alerts.MessagesForYouComposer;
|
|||||||
import com.eu.habbo.messages.outgoing.habboway.nux.NewUserIdentityComposer;
|
import com.eu.habbo.messages.outgoing.habboway.nux.NewUserIdentityComposer;
|
||||||
import com.eu.habbo.messages.outgoing.handshake.DebugConsoleComposer;
|
import com.eu.habbo.messages.outgoing.handshake.DebugConsoleComposer;
|
||||||
import com.eu.habbo.messages.outgoing.handshake.SecureLoginOKComposer;
|
import com.eu.habbo.messages.outgoing.handshake.SecureLoginOKComposer;
|
||||||
import com.eu.habbo.messages.outgoing.handshake.SessionRightsComposer;
|
import com.eu.habbo.messages.outgoing.handshake.AvailabilityStatusMessageComposer;
|
||||||
import com.eu.habbo.messages.outgoing.handshake.PingComposer;
|
import com.eu.habbo.messages.outgoing.handshake.PingComposer;
|
||||||
import com.eu.habbo.messages.outgoing.inventory.InventoryAchievementsComposer;
|
import com.eu.habbo.messages.outgoing.inventory.InventoryAchievementsComposer;
|
||||||
import com.eu.habbo.messages.outgoing.inventory.InventoryRefreshComposer;
|
import com.eu.habbo.messages.outgoing.inventory.InventoryRefreshComposer;
|
||||||
@ -57,8 +57,9 @@ public class SecureLoginEvent extends MessageHandler {
|
|||||||
if (!Emulator.isReady)
|
if (!Emulator.isReady)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if (Emulator.getCrypto().isEnabled() && !this.client.isHandshakeFinished()) {
|
if (Emulator.getConfig().getBoolean("encryption.forced", false) && Emulator.getCrypto().isEnabled() && !this.client.isHandshakeFinished()) {
|
||||||
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
||||||
|
LOGGER.warn("Encryption is forced and TLS Handshake isn't finished! Closed connection...");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -66,30 +67,26 @@ public class SecureLoginEvent extends MessageHandler {
|
|||||||
|
|
||||||
if (Emulator.getPluginManager().fireEvent(new SSOAuthenticationEvent(sso)).isCancelled()) {
|
if (Emulator.getPluginManager().fireEvent(new SSOAuthenticationEvent(sso)).isCancelled()) {
|
||||||
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
||||||
|
LOGGER.info("SSO Authentication is cancelled by a plugin. Closed connection...");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sso.isEmpty()) {
|
if (sso.isEmpty()) {
|
||||||
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
||||||
|
LOGGER.warn("Client is trying to connect without SSO ticket! Closed connection...");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this.client.getHabbo() == null) {
|
if (this.client.getHabbo() == null) {
|
||||||
Habbo habbo = Emulator.getGameEnvironment().getHabboManager().loadHabbo(sso);
|
Habbo habbo = Emulator.getGameEnvironment().getHabboManager().loadHabbo(sso);
|
||||||
if (habbo != null) {
|
if (habbo != null) {
|
||||||
if (Emulator.getGameEnvironment().getModToolManager().hasMACBan(this.client)) {
|
|
||||||
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (Emulator.getGameEnvironment().getModToolManager().hasIPBan(this.client.getChannel())) {
|
|
||||||
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
habbo.setClient(this.client);
|
habbo.setClient(this.client);
|
||||||
this.client.setHabbo(habbo);
|
this.client.setHabbo(habbo);
|
||||||
this.client.getHabbo().connect();
|
if(!this.client.getHabbo().connect()) {
|
||||||
|
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (this.client.getHabbo().getHabboInfo() == null) {
|
if (this.client.getHabbo().getHabboInfo() == null) {
|
||||||
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
||||||
@ -123,7 +120,7 @@ public class SecureLoginEvent extends MessageHandler {
|
|||||||
messages.add(new UserClothesComposer(this.client.getHabbo()).compose());
|
messages.add(new UserClothesComposer(this.client.getHabbo()).compose());
|
||||||
messages.add(new NewUserIdentityComposer(habbo).compose());
|
messages.add(new NewUserIdentityComposer(habbo).compose());
|
||||||
messages.add(new UserPermissionsComposer(this.client.getHabbo()).compose());
|
messages.add(new UserPermissionsComposer(this.client.getHabbo()).compose());
|
||||||
messages.add(new SessionRightsComposer().compose());
|
messages.add(new AvailabilityStatusMessageComposer(true, false, true).compose());
|
||||||
messages.add(new PingComposer().compose());
|
messages.add(new PingComposer().compose());
|
||||||
messages.add(new DebugConsoleComposer(Emulator.debugging).compose());
|
messages.add(new DebugConsoleComposer(Emulator.debugging).compose());
|
||||||
messages.add(new UserAchievementScoreComposer(this.client.getHabbo()).compose());
|
messages.add(new UserAchievementScoreComposer(this.client.getHabbo()).compose());
|
||||||
@ -191,7 +188,7 @@ public class SecureLoginEvent extends MessageHandler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Emulator.getPluginManager().fireEvent(new UserLoginEvent(habbo, this.client.getChannel().localAddress()));
|
Emulator.getPluginManager().fireEvent(new UserLoginEvent(habbo, this.client.getHabbo().getHabboInfo().getIpLogin()));
|
||||||
|
|
||||||
if (Emulator.getConfig().getBoolean("hotel.welcome.alert.enabled")) {
|
if (Emulator.getConfig().getBoolean("hotel.welcome.alert.enabled")) {
|
||||||
final Habbo finalHabbo = habbo;
|
final Habbo finalHabbo = habbo;
|
||||||
@ -222,6 +219,7 @@ public class SecureLoginEvent extends MessageHandler {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
||||||
|
LOGGER.warn("Someone tried to login with a non-existing SSO token! Closed connection...");
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
Emulator.getGameServer().getGameClientManager().disposeClient(this.client);
|
||||||
|
@ -1,89 +0,0 @@
|
|||||||
package com.eu.habbo.messages.incoming.handshake;
|
|
||||||
|
|
||||||
import com.eu.habbo.Emulator;
|
|
||||||
import com.eu.habbo.habbohotel.permissions.Permission;
|
|
||||||
import com.eu.habbo.habbohotel.users.Habbo;
|
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
|
||||||
import com.eu.habbo.messages.incoming.MessageHandler;
|
|
||||||
import com.eu.habbo.messages.outgoing.friends.FriendsComposer;
|
|
||||||
import com.eu.habbo.messages.outgoing.generic.alerts.GenericAlertComposer;
|
|
||||||
import com.eu.habbo.messages.outgoing.habboway.nux.NewUserIdentityComposer;
|
|
||||||
import com.eu.habbo.messages.outgoing.handshake.DebugConsoleComposer;
|
|
||||||
import com.eu.habbo.messages.outgoing.handshake.SecureLoginOKComposer;
|
|
||||||
import com.eu.habbo.messages.outgoing.handshake.SessionRightsComposer;
|
|
||||||
import com.eu.habbo.messages.outgoing.modtool.ModToolComposer;
|
|
||||||
import com.eu.habbo.messages.outgoing.navigator.*;
|
|
||||||
import com.eu.habbo.messages.outgoing.users.*;
|
|
||||||
import com.eu.habbo.plugin.events.users.UserLoginEvent;
|
|
||||||
|
|
||||||
import java.util.ArrayList;
|
|
||||||
|
|
||||||
public class SecureLoginEvent_BACKUP extends MessageHandler {
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void handle() throws Exception {
|
|
||||||
|
|
||||||
if (!Emulator.isReady)
|
|
||||||
return;
|
|
||||||
|
|
||||||
String sso = this.packet.readString();
|
|
||||||
|
|
||||||
if (this.client.getHabbo() == null) {
|
|
||||||
Habbo habbo = Emulator.getGameEnvironment().getHabboManager().loadHabbo(sso);
|
|
||||||
if (habbo != null) {
|
|
||||||
habbo.setClient(this.client);
|
|
||||||
this.client.setHabbo(habbo);
|
|
||||||
this.client.getHabbo().connect();
|
|
||||||
//this.client.sendResponse(new DebugConsoleComposer());
|
|
||||||
Emulator.getThreading().run(habbo);
|
|
||||||
Emulator.getGameEnvironment().getHabboManager().addHabbo(habbo);
|
|
||||||
|
|
||||||
ArrayList<ServerMessage> messages = new ArrayList<>();
|
|
||||||
|
|
||||||
|
|
||||||
messages.add(new SecureLoginOKComposer().compose());
|
|
||||||
messages.add(new UserHomeRoomComposer(this.client.getHabbo().getHabboInfo().getHomeRoom(), 0).compose());
|
|
||||||
messages.add(new UserPermissionsComposer(this.client.getHabbo()).compose());
|
|
||||||
messages.add(new UserClubComposer(this.client.getHabbo()).compose());
|
|
||||||
messages.add(new DebugConsoleComposer(Emulator.debugging).compose());
|
|
||||||
messages.add(new UserAchievementScoreComposer(this.client.getHabbo()).compose());
|
|
||||||
messages.add(new NewUserIdentityComposer(habbo).compose());
|
|
||||||
messages.add(new UserPerksComposer(habbo).compose());
|
|
||||||
messages.add(new SessionRightsComposer().compose());
|
|
||||||
messages.add(new FavoriteRoomsCountComposer(habbo).compose());
|
|
||||||
//messages.add(new FriendsComposer(this.client.getHabbo()).compose());
|
|
||||||
//messages.add(new NewUserIdentityComposer().compose());
|
|
||||||
//messages.add(new UserDataComposer(this.client.getHabbo()).compose());
|
|
||||||
//messages.add(new SessionRightsComposer().compose());
|
|
||||||
//messages.add(new MinimailCountComposer().compose());
|
|
||||||
//messages.add(new MessengerInitComposer(this.client.getHabbo()).compose());
|
|
||||||
//messages.add(new FriendsComposer(this.client.getHabbo()).compose());
|
|
||||||
|
|
||||||
if (this.client.getHabbo().hasPermission(Permission.ACC_SUPPORTTOOL)) {
|
|
||||||
messages.add(new ModToolComposer(this.client.getHabbo()).compose());
|
|
||||||
}
|
|
||||||
|
|
||||||
this.client.sendResponses(messages);
|
|
||||||
|
|
||||||
//Hardcoded
|
|
||||||
this.client.sendResponse(new NewNavigatorMetaDataComposer());
|
|
||||||
this.client.sendResponse(new NewNavigatorLiftedRoomsComposer());
|
|
||||||
this.client.sendResponse(new NewNavigatorCollapsedCategoriesComposer());
|
|
||||||
this.client.sendResponse(new NewNavigatorSavedSearchesComposer(this.client.getHabbo().getHabboInfo().getSavedSearches()));
|
|
||||||
this.client.sendResponse(new NewNavigatorEventCategoriesComposer());
|
|
||||||
//this.client.sendResponse(new HotelViewComposer());
|
|
||||||
//this.client.sendResponse(new UserHomeRoomComposer(this.client.getHabbo().getHabboInfo().getHomeRoom(), this.client.getHabbo().getHabboInfo().getHomeRoom()));
|
|
||||||
//this.client.sendResponse(new UserEffectsListComposer());
|
|
||||||
|
|
||||||
|
|
||||||
Emulator.getPluginManager().fireEvent(new UserLoginEvent(habbo, this.client.getChannel().localAddress()));
|
|
||||||
|
|
||||||
} else {
|
|
||||||
this.client.sendResponse(new GenericAlertComposer("Can't connect *sadpanda*"));
|
|
||||||
|
|
||||||
this.client.getChannel().close();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
@ -2,15 +2,17 @@ package com.eu.habbo.messages.incoming.rooms.items;
|
|||||||
|
|
||||||
import com.eu.habbo.Emulator;
|
import com.eu.habbo.Emulator;
|
||||||
import com.eu.habbo.habbohotel.rooms.Room;
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
|
import com.eu.habbo.habbohotel.users.Habbo;
|
||||||
import com.eu.habbo.habbohotel.users.HabboItem;
|
import com.eu.habbo.habbohotel.users.HabboItem;
|
||||||
import com.eu.habbo.messages.incoming.MessageHandler;
|
import com.eu.habbo.messages.incoming.MessageHandler;
|
||||||
|
|
||||||
public class MannequinSaveLookEvent extends MessageHandler {
|
public class MannequinSaveLookEvent extends MessageHandler {
|
||||||
@Override
|
@Override
|
||||||
public void handle() throws Exception {
|
public void handle() throws Exception {
|
||||||
Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom();
|
Habbo habbo = this.client.getHabbo();
|
||||||
|
Room room = habbo.getHabboInfo().getCurrentRoom();
|
||||||
|
|
||||||
if (room == null || this.client.getHabbo().getHabboInfo().getId() != room.getOwnerId())
|
if (room == null || !room.isOwner(habbo))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
HabboItem item = room.getHabboItem(this.packet.readInt());
|
HabboItem item = room.getHabboItem(this.packet.readInt());
|
||||||
@ -22,7 +24,7 @@ public class MannequinSaveLookEvent extends MessageHandler {
|
|||||||
|
|
||||||
StringBuilder look = new StringBuilder();
|
StringBuilder look = new StringBuilder();
|
||||||
|
|
||||||
for (String s : this.client.getHabbo().getHabboInfo().getLook().split("\\.")) {
|
for (String s : habbo.getHabboInfo().getLook().split("\\.")) {
|
||||||
if (!s.contains("hr") && !s.contains("hd") && !s.contains("he") && !s.contains("ea") && !s.contains("ha") && !s.contains("fa")) {
|
if (!s.contains("hr") && !s.contains("hd") && !s.contains("he") && !s.contains("ea") && !s.contains("ha") && !s.contains("fa")) {
|
||||||
look.append(s).append(".");
|
look.append(s).append(".");
|
||||||
}
|
}
|
||||||
@ -33,9 +35,9 @@ public class MannequinSaveLookEvent extends MessageHandler {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (data.length == 3) {
|
if (data.length == 3) {
|
||||||
item.setExtradata(this.client.getHabbo().getHabboInfo().getGender().name().toLowerCase() + ":" + look + ":" + data[2]);
|
item.setExtradata(habbo.getHabboInfo().getGender().name().toLowerCase() + ":" + look + ":" + data[2]);
|
||||||
} else {
|
} else {
|
||||||
item.setExtradata(this.client.getHabbo().getHabboInfo().getGender().name().toLowerCase() + ":" + look + ":" + this.client.getHabbo().getHabboInfo().getUsername() + "'s look.");
|
item.setExtradata(habbo.getHabboInfo().getGender().name().toLowerCase() + ":" + look + ":" + habbo.getHabboInfo().getUsername() + "'s look.");
|
||||||
}
|
}
|
||||||
|
|
||||||
item.needsUpdate(true);
|
item.needsUpdate(true);
|
||||||
|
@ -9,7 +9,7 @@ public class MannequinSaveNameEvent extends MessageHandler {
|
|||||||
@Override
|
@Override
|
||||||
public void handle() throws Exception {
|
public void handle() throws Exception {
|
||||||
Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom();
|
Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom();
|
||||||
if (room == null || this.client.getHabbo().getHabboInfo().getId() != room.getOwnerId())
|
if (room == null || !room.isOwner(this.client.getHabbo()))
|
||||||
return;
|
return;
|
||||||
|
|
||||||
HabboItem item = room.getHabboItem(this.packet.readInt());
|
HabboItem item = room.getHabboItem(this.packet.readInt());
|
||||||
|
@ -0,0 +1,103 @@
|
|||||||
|
package com.eu.habbo.messages.incoming.wired;
|
||||||
|
|
||||||
|
import com.eu.habbo.habbohotel.items.interactions.wired.interfaces.InteractionWiredMatchFurniSettings;
|
||||||
|
import com.eu.habbo.habbohotel.rooms.FurnitureMovementError;
|
||||||
|
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.users.HabboItem;
|
||||||
|
import com.eu.habbo.messages.incoming.MessageHandler;
|
||||||
|
import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertComposer;
|
||||||
|
import com.eu.habbo.messages.outgoing.generic.alerts.BubbleAlertKeys;
|
||||||
|
import com.eu.habbo.messages.outgoing.rooms.items.FloorItemOnRollerComposer;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
public class WiredApplySetConditionsEvent extends MessageHandler {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int getRatelimit() {
|
||||||
|
return 500;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void handle() throws Exception {
|
||||||
|
int itemId = this.packet.readInt();
|
||||||
|
|
||||||
|
// Executing Habbo has to be in a Room
|
||||||
|
if (!this.client.getHabbo().getRoomUnit().isInRoom()) {
|
||||||
|
this.client.sendResponse(new BubbleAlertComposer(
|
||||||
|
BubbleAlertKeys.FURNITURE_PLACEMENT_ERROR.key,
|
||||||
|
FurnitureMovementError.NO_RIGHTS.errorCode
|
||||||
|
));
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Room room = this.client.getHabbo().getHabboInfo().getCurrentRoom();
|
||||||
|
|
||||||
|
if (room != null) {
|
||||||
|
|
||||||
|
// Executing Habbo should be able to edit wireds
|
||||||
|
if (room.hasRights(this.client.getHabbo()) || room.isOwner(this.client.getHabbo())) {
|
||||||
|
|
||||||
|
List<HabboItem> wireds = new ArrayList<>();
|
||||||
|
wireds.addAll(room.getRoomSpecialTypes().getConditions());
|
||||||
|
wireds.addAll(room.getRoomSpecialTypes().getEffects());
|
||||||
|
|
||||||
|
// Find the item with the given ID in the room
|
||||||
|
Optional<HabboItem> item = wireds.stream()
|
||||||
|
.filter(wired -> wired.getId() == itemId)
|
||||||
|
.findFirst();
|
||||||
|
|
||||||
|
// If the item exists
|
||||||
|
if (item.isPresent()) {
|
||||||
|
HabboItem wiredItem = item.get();
|
||||||
|
|
||||||
|
// The item should have settings to match furni state, position and rotation
|
||||||
|
if (wiredItem instanceof InteractionWiredMatchFurniSettings) {
|
||||||
|
|
||||||
|
InteractionWiredMatchFurniSettings wired = (InteractionWiredMatchFurniSettings) wiredItem;
|
||||||
|
|
||||||
|
// Try to apply the set settings to each item
|
||||||
|
wired.getMatchFurniSettings().forEach(setting -> {
|
||||||
|
HabboItem matchItem = room.getHabboItem(setting.item_id);
|
||||||
|
|
||||||
|
// Match state
|
||||||
|
if (wired.shouldMatchState() && matchItem.allowWiredResetState()) {
|
||||||
|
if (!setting.state.equals(" ") && !matchItem.getExtradata().equals(setting.state)) {
|
||||||
|
matchItem.setExtradata(setting.state);
|
||||||
|
room.updateItemState(matchItem);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
RoomTile oldLocation = room.getLayout().getTile(matchItem.getX(), matchItem.getY());
|
||||||
|
double oldZ = matchItem.getZ();
|
||||||
|
|
||||||
|
// Match Position & Rotation
|
||||||
|
if(wired.shouldMatchRotation() && !wired.shouldMatchPosition()) {
|
||||||
|
if(matchItem.getRotation() != setting.rotation && room.furnitureFitsAt(oldLocation, matchItem, setting.rotation, false) == FurnitureMovementError.NONE) {
|
||||||
|
room.moveFurniTo(matchItem, oldLocation, setting.rotation, null, true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if(wired.shouldMatchPosition()) {
|
||||||
|
boolean slideAnimation = !wired.shouldMatchRotation() || matchItem.getRotation() == setting.rotation;
|
||||||
|
RoomTile newLocation = room.getLayout().getTile((short) setting.x, (short) setting.y);
|
||||||
|
int newRotation = wired.shouldMatchRotation() ? setting.rotation : matchItem.getRotation();
|
||||||
|
|
||||||
|
if(newLocation != null && newLocation.state != RoomTileState.INVALID && (newLocation != oldLocation || newRotation != matchItem.getRotation()) && room.furnitureFitsAt(newLocation, matchItem, newRotation, true) == FurnitureMovementError.NONE) {
|
||||||
|
if(room.moveFurniTo(matchItem, newLocation, newRotation, null, !slideAnimation) == FurnitureMovementError.NONE) {
|
||||||
|
if(slideAnimation) {
|
||||||
|
room.sendComposer(new FloorItemOnRollerComposer(matchItem, null, oldLocation, oldZ, newLocation, matchItem.getZ(), 0, room).compose());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -84,7 +84,7 @@ public class Outgoing {
|
|||||||
public final static int RoomScoreComposer = 482;
|
public final static int RoomScoreComposer = 482;
|
||||||
public final static int DoorbellAddUserComposer = 2309;
|
public final static int DoorbellAddUserComposer = 2309;
|
||||||
public final static int SecureLoginOKComposer = 2491;
|
public final static int SecureLoginOKComposer = 2491;
|
||||||
public final static int SessionRightsComposer = 2033;
|
public final static int AvailabilityStatusMessageComposer = 2033;
|
||||||
public final static int GuildMemberUpdateComposer = 265;
|
public final static int GuildMemberUpdateComposer = 265;
|
||||||
public final static int RoomFloorItemsComposer = 1778;
|
public final static int RoomFloorItemsComposer = 1778;
|
||||||
public final static int InventoryItemsComposer = 994;
|
public final static int InventoryItemsComposer = 994;
|
||||||
|
@ -0,0 +1,27 @@
|
|||||||
|
package com.eu.habbo.messages.outgoing.handshake;
|
||||||
|
|
||||||
|
import com.eu.habbo.messages.ServerMessage;
|
||||||
|
import com.eu.habbo.messages.outgoing.MessageComposer;
|
||||||
|
import com.eu.habbo.messages.outgoing.Outgoing;
|
||||||
|
|
||||||
|
public class AvailabilityStatusMessageComposer extends MessageComposer {
|
||||||
|
private final boolean isOpen;
|
||||||
|
private final boolean isShuttingDown;
|
||||||
|
private final boolean isAuthenticHabbo;
|
||||||
|
|
||||||
|
public AvailabilityStatusMessageComposer(boolean isOpen, boolean isShuttingDown, boolean isAuthenticHabbo) {
|
||||||
|
this.isOpen = isOpen;
|
||||||
|
this.isShuttingDown = isShuttingDown;
|
||||||
|
this.isAuthenticHabbo = isAuthenticHabbo;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected ServerMessage composeInternal() {
|
||||||
|
this.response.init(Outgoing.AvailabilityStatusMessageComposer);
|
||||||
|
|
||||||
|
this.response.appendBoolean(isOpen);//isOpen
|
||||||
|
this.response.appendBoolean(isShuttingDown);//onShutdown
|
||||||
|
this.response.appendBoolean(isAuthenticHabbo);//isAuthenticHabbo
|
||||||
|
return this.response;
|
||||||
|
}
|
||||||
|
}
|
@ -1,20 +0,0 @@
|
|||||||
package com.eu.habbo.messages.outgoing.handshake;
|
|
||||||
|
|
||||||
import com.eu.habbo.messages.ServerMessage;
|
|
||||||
import com.eu.habbo.messages.outgoing.MessageComposer;
|
|
||||||
import com.eu.habbo.messages.outgoing.Outgoing;
|
|
||||||
|
|
||||||
public class SessionRightsComposer extends MessageComposer {
|
|
||||||
private static final boolean unknownBooleanOne = true; //true
|
|
||||||
private static final boolean unknownBooleanTwo = false;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected ServerMessage composeInternal() {
|
|
||||||
this.response.init(Outgoing.SessionRightsComposer);
|
|
||||||
|
|
||||||
this.response.appendBoolean(unknownBooleanOne);
|
|
||||||
this.response.appendBoolean(true);
|
|
||||||
this.response.appendBoolean(true);
|
|
||||||
return this.response;
|
|
||||||
}
|
|
||||||
}
|
|
@ -59,13 +59,13 @@ public class GameMessageHandler extends ChannelInboundHandlerAdapter {
|
|||||||
ctx.channel().close();
|
ctx.channel().close();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (Emulator.getConfig().getBoolean("debug.mode")) {
|
||||||
if (cause instanceof TooLongFrameException) {
|
if (cause instanceof TooLongFrameException) {
|
||||||
LOGGER.error("Disconnecting client, reason: \"" + cause.getMessage() + "\".");
|
LOGGER.error("Disconnecting client, reason: \"" + cause.getMessage() + "\".");
|
||||||
} else {
|
} else {
|
||||||
LOGGER.error("Disconnecting client, exception in GameMessageHander.", cause);
|
LOGGER.error("Disconnecting client, exception in GameMessageHander.", cause);
|
||||||
}
|
}
|
||||||
|
}
|
||||||
ctx.channel().close();
|
ctx.channel().close();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,28 @@
|
|||||||
|
package com.eu.habbo.plugin.events.users;
|
||||||
|
|
||||||
|
import com.eu.habbo.habbohotel.users.Habbo;
|
||||||
|
|
||||||
|
public class UserGetIPAddressEvent extends UserEvent{
|
||||||
|
public final String oldIp;
|
||||||
|
|
||||||
|
private String updatedIp;
|
||||||
|
private boolean changedIP = false;
|
||||||
|
|
||||||
|
public UserGetIPAddressEvent(Habbo habbo, String ip) {
|
||||||
|
super(habbo);
|
||||||
|
this.oldIp = ip;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setUpdatedIp(String updatedIp) {
|
||||||
|
this.updatedIp = updatedIp;
|
||||||
|
this.changedIP = true;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean hasChangedIP() {
|
||||||
|
return changedIP;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUpdatedIp() {
|
||||||
|
return updatedIp;
|
||||||
|
}
|
||||||
|
}
|
@ -6,10 +6,9 @@ import java.net.SocketAddress;
|
|||||||
|
|
||||||
public class UserLoginEvent extends UserEvent {
|
public class UserLoginEvent extends UserEvent {
|
||||||
|
|
||||||
public final SocketAddress ip;
|
public final String ip;
|
||||||
|
|
||||||
|
public UserLoginEvent(Habbo habbo, String ip) {
|
||||||
public UserLoginEvent(Habbo habbo, SocketAddress ip) {
|
|
||||||
super(habbo);
|
super(habbo);
|
||||||
|
|
||||||
this.ip = ip;
|
this.ip = ip;
|
||||||
|
@ -42,17 +42,15 @@ public class RoomUnitWalkToRoomUnit implements Runnable {
|
|||||||
if (this.goalTile == null) {
|
if (this.goalTile == null) {
|
||||||
this.findNewLocation();
|
this.findNewLocation();
|
||||||
Emulator.getThreading().run(this, 500);
|
Emulator.getThreading().run(this, 500);
|
||||||
}
|
|
||||||
|
|
||||||
if (this.goalTile == null)
|
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (this.walker.getGoal().equals(this.goalTile)) { // check that the action hasn't been cancelled by changing the goal
|
if (this.walker.getGoal().equals(this.goalTile)) { // check that the action hasn't been cancelled by changing the goal
|
||||||
if (this.walker.getCurrentLocation().distance(this.goalTile) <= this.minDistance) {
|
if (this.walker.getCurrentLocation().distance(this.goalTile) <= this.minDistance) {
|
||||||
for (Runnable r : this.targetReached) {
|
for (Runnable r : this.targetReached) {
|
||||||
Emulator.getThreading().run(r);
|
Emulator.getThreading().run(r);
|
||||||
|
|
||||||
WiredHandler.handle(WiredTriggerType.BOT_REACHED_AVTR, this.target, this.room, new Object[]{this.walker});
|
WiredHandler.handle(WiredTriggerType.BOT_REACHED_AVTR, this.target, this.room, new Object[]{ this.walker });
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Emulator.getThreading().run(this, 500);
|
Emulator.getThreading().run(this, 500);
|
||||||
|
@ -0,0 +1,46 @@
|
|||||||
|
package com.eu.habbo.threading.runnables.games;
|
||||||
|
|
||||||
|
import com.eu.habbo.Emulator;
|
||||||
|
import com.eu.habbo.habbohotel.items.interactions.games.InteractionGameTimer;
|
||||||
|
import com.eu.habbo.habbohotel.rooms.Room;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredHandler;
|
||||||
|
import com.eu.habbo.habbohotel.wired.WiredTriggerType;
|
||||||
|
|
||||||
|
public class GameTimer implements Runnable {
|
||||||
|
|
||||||
|
private final InteractionGameTimer timer;
|
||||||
|
|
||||||
|
public GameTimer(InteractionGameTimer timer) {
|
||||||
|
this.timer = timer;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
if (timer.getRoomId() == 0) {
|
||||||
|
timer.setRunning(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Room room = Emulator.getGameEnvironment().getRoomManager().getRoom(timer.getRoomId());
|
||||||
|
|
||||||
|
if (room == null || !timer.isRunning() || timer.isPaused()) {
|
||||||
|
timer.setThreadActive(false);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
timer.reduceTime();
|
||||||
|
if (timer.getTimeNow() < 0) timer.setTimeNow(0);
|
||||||
|
|
||||||
|
if (timer.getTimeNow() > 0) {
|
||||||
|
timer.setThreadActive(true);
|
||||||
|
Emulator.getThreading().run(this, 1000);
|
||||||
|
} else {
|
||||||
|
timer.setThreadActive(false);
|
||||||
|
timer.setTimeNow(0);
|
||||||
|
timer.endGame(room);
|
||||||
|
WiredHandler.handle(WiredTriggerType.GAME_ENDS, null, room, new Object[]{});
|
||||||
|
}
|
||||||
|
|
||||||
|
room.updateItem(timer);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user