🆙 Fix by Florent Banneux: allow continue walking while double clicking wired

This commit is contained in:
duckietm 2025-02-05 13:24:57 +01:00
parent 36c26f72e8
commit c072cc772b

View File

@ -1,7 +1,6 @@
package com.eu.habbo.messages.incoming.rooms.items; package com.eu.habbo.messages.incoming.rooms.items;
import com.eu.habbo.Emulator; import com.eu.habbo.Emulator;
import com.eu.habbo.habbohotel.items.interactions.InteractionCannon;
import com.eu.habbo.habbohotel.items.interactions.InteractionDice; import com.eu.habbo.habbohotel.items.interactions.InteractionDice;
import com.eu.habbo.habbohotel.items.interactions.InteractionWired; import com.eu.habbo.habbohotel.items.interactions.InteractionWired;
import com.eu.habbo.habbohotel.items.interactions.pets.InteractionMonsterPlantSeed; import com.eu.habbo.habbohotel.items.interactions.pets.InteractionMonsterPlantSeed;
@ -19,9 +18,15 @@ import com.eu.habbo.threading.runnables.QueryDeleteHabboItem;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
public class ToggleFloorItemEvent extends MessageHandler { public class ToggleFloorItemEvent extends MessageHandler {
private static final Logger LOGGER = LoggerFactory.getLogger(ToggleFloorItemEvent.class); private static final Logger LOGGER = LoggerFactory.getLogger(ToggleFloorItemEvent.class);
private static HashSet<String> PET_BOXES = new HashSet<>(Arrays.asList("val11_present", "gnome_box", "leprechaun_box", "velociraptor_egg", "pterosaur_egg", "petbox_epic"));
@Override @Override
public void handle() throws Exception { public void handle() throws Exception {
try { try {
@ -35,7 +40,7 @@ public class ToggleFloorItemEvent extends MessageHandler {
HabboItem item = room.getHabboItem(itemId); HabboItem item = room.getHabboItem(itemId);
if (item == null || (item instanceof InteractionDice && !(item instanceof InteractionCannon))) if (item == null || item instanceof InteractionDice)
return; return;
Event furnitureToggleEvent = new FurnitureToggleEvent(item, this.client.getHabbo(), state); Event furnitureToggleEvent = new FurnitureToggleEvent(item, this.client.getHabbo(), state);
@ -94,14 +99,13 @@ public class ToggleFloorItemEvent extends MessageHandler {
// Do not move to onClick(). Wired could trigger it. // Do not move to onClick(). Wired could trigger it.
if (item instanceof InteractionMonsterPlantSeed) { if (item instanceof InteractionMonsterPlantSeed) {
Emulator.getThreading().run(new QueryDeleteHabboItem(item.getId())); Emulator.getThreading().run(new QueryDeleteHabboItem(item.getId()));
int rarity = 0;
boolean isRare = item.getBaseItem().getName().contains("rare"); boolean isRare = item.getBaseItem().getName().contains("rare");
int rarity = 0;
if ((!item.getExtradata().isEmpty() && Integer.parseInt(item.getExtradata()) - 1 < 0) || item.getExtradata().isEmpty()) { if (item.getExtradata().isEmpty() || Integer.parseInt(item.getExtradata()) - 1 < 0) {
rarity = isRare ? InteractionMonsterPlantSeed.randomGoldenRarityLevel() : InteractionMonsterPlantSeed.randomRarityLevel(); rarity = isRare ? InteractionMonsterPlantSeed.randomGoldenRarityLevel() : InteractionMonsterPlantSeed.randomRarityLevel();
} } else {
else {
try { try {
rarity = Integer.parseInt(item.getExtradata()) - 1; rarity = Integer.parseInt(item.getExtradata()) - 1;
} catch (Exception e) { } catch (Exception e) {
@ -117,22 +121,12 @@ public class ToggleFloorItemEvent extends MessageHandler {
return; return;
} }
if ( if (PET_BOXES.contains(item.getBaseItem().getName()) && room.getCurrentPets().size() < Room.MAXIMUM_PETS) {
(item.getBaseItem().getName().equalsIgnoreCase("val11_present") ||
item.getBaseItem().getName().equalsIgnoreCase("gnome_box") ||
item.getBaseItem().getName().equalsIgnoreCase("leprechaun_box") ||
item.getBaseItem().getName().equalsIgnoreCase("velociraptor_egg") ||
item.getBaseItem().getName().equalsIgnoreCase("pterosaur_egg") ||
item.getBaseItem().getName().equalsIgnoreCase("petbox_epic")) && room.getCurrentPets().size() < Room.MAXIMUM_PETS) {
this.client.sendResponse(new PetPackageComposer(item)); this.client.sendResponse(new PetPackageComposer(item));
return; return;
} }
item.onClick(this.client, room, new Object[]{state}); item.onClick(this.client, room, new Object[]{state});
if (item instanceof InteractionWired) {
this.client.getHabbo().getRoomUnit().setGoalLocation(this.client.getHabbo().getRoomUnit().getCurrentLocation());
}
} catch (Exception e) { } catch (Exception e) {
LOGGER.error("Caught exception", e); LOGGER.error("Caught exception", e);
} }