src/main/java/viper/ButtonListener.java aktualisiert

This commit is contained in:
2025-08-13 16:35:33 +00:00
parent b1de85aa22
commit 221151dfd2

View File

@@ -35,15 +35,20 @@ public class ButtonListener implements Listener {
ItemStack item = event.getItem(); ItemStack item = event.getItem();
Block block = event.getClickedBlock(); Block block = event.getClickedBlock();
// Block wird gesteuert (Button / Tageslichtsensor) // Block wird gesteuert (Button, Tageslichtsensor oder Bewegungsmelder)
if (event.getAction() == Action.RIGHT_CLICK_BLOCK && block != null && if (event.getAction() == Action.RIGHT_CLICK_BLOCK && block != null) {
(block.getType() == Material.STONE_BUTTON || block.getType() == Material.DAYLIGHT_DETECTOR)) {
String blockLocation = block.getWorld().getName() + "," + block.getX() + "," + block.getY() + "," + block.getZ(); String blockLocation = block.getWorld().getName() + "," + block.getX() + "," + block.getY() + "," + block.getZ();
String buttonId = dataManager.getButtonIdForPlacedController(playerUUID, blockLocation); String buttonId = dataManager.getButtonIdForPlacedController(playerUUID, blockLocation);
if (buttonId != null) { if (buttonId != null) {
event.setCancelled(true); event.setCancelled(true);
// Bewegungsmelder: GUI öffnen
if (block.getType() == Material.TRIPWIRE_HOOK) {
new MotionSensorGUI(plugin, event.getPlayer(), blockLocation, buttonId).open();
return;
}
// Button oder Tageslichtsensor: Normale Steuerung
if (block.getType() == Material.STONE_BUTTON || block.getType() == Material.DAYLIGHT_DETECTOR) {
List<String> connectedBlocks = dataManager.getConnectedBlocks(playerUUID, buttonId); List<String> connectedBlocks = dataManager.getConnectedBlocks(playerUUID, buttonId);
if (connectedBlocks != null && !connectedBlocks.isEmpty()) { if (connectedBlocks != null && !connectedBlocks.isEmpty()) {
boolean anyDoorOpened = false; boolean anyDoorOpened = false;
@@ -65,7 +70,6 @@ public class ButtonListener implements Listener {
Integer.parseInt(parts[3])); Integer.parseInt(parts[3]));
Block targetBlock = location.getBlock(); Block targetBlock = location.getBlock();
// Türen, Gates, Trapdoors
if (isDoor(targetBlock.getType()) || isGate(targetBlock.getType()) || isTrapdoor(targetBlock.getType())) { if (isDoor(targetBlock.getType()) || isGate(targetBlock.getType()) || isTrapdoor(targetBlock.getType())) {
if (targetBlock.getBlockData() instanceof Openable) { if (targetBlock.getBlockData() instanceof Openable) {
Openable openable = (Openable) targetBlock.getBlockData(); Openable openable = (Openable) targetBlock.getBlockData();
@@ -81,32 +85,25 @@ public class ButtonListener implements Listener {
if (!wasOpen) anyTrapOpened = true; else anyTrapClosed = true; if (!wasOpen) anyTrapOpened = true; else anyTrapClosed = true;
} }
} }
} } else if (targetBlock.getType() == Material.REDSTONE_LAMP) {
// Lampen
else if (targetBlock.getType() == Material.REDSTONE_LAMP) {
Lightable lamp = (Lightable) targetBlock.getBlockData(); Lightable lamp = (Lightable) targetBlock.getBlockData();
boolean wasLit = lamp.isLit(); boolean wasLit = lamp.isLit();
lamp.setLit(!wasLit); lamp.setLit(!wasLit);
targetBlock.setBlockData(lamp); targetBlock.setBlockData(lamp);
if (!wasLit) anyLampOn = true; else anyLampOff = true; if (!wasLit) anyLampOn = true; else anyLampOff = true;
} } else if (targetBlock.getType() == Material.NOTE_BLOCK) {
// Notenblock
else if (targetBlock.getType() == Material.NOTE_BLOCK) {
String instrument = dataManager.getPlayerInstrument(event.getPlayer().getUniqueId()); String instrument = dataManager.getPlayerInstrument(event.getPlayer().getUniqueId());
if (instrument == null) { if (instrument == null) {
instrument = configManager.getConfig().getString("default-note", "PIANO"); instrument = configManager.getConfig().getString("default-note", "PIANO");
} }
plugin.playDoorbellSound(location, instrument); plugin.playDoorbellSound(location, instrument);
anyNoteBlockPlayed = true; anyNoteBlockPlayed = true;
} } else if (targetBlock.getType() == Material.BELL) {
// Glocke
else if (targetBlock.getType() == Material.BELL) {
targetBlock.getWorld().playSound(location, org.bukkit.Sound.BLOCK_BELL_USE, 3.0f, 1.0f); targetBlock.getWorld().playSound(location, org.bukkit.Sound.BLOCK_BELL_USE, 3.0f, 1.0f);
anyBellPlayed = true; anyBellPlayed = true;
} }
} }
// Rückmeldungen (ALLE farbig per lang.yml)
if (anyDoorOpened) event.getPlayer().sendMessage(configManager.getMessage("tueren-geoeffnet")); if (anyDoorOpened) event.getPlayer().sendMessage(configManager.getMessage("tueren-geoeffnet"));
if (anyDoorClosed) event.getPlayer().sendMessage(configManager.getMessage("tueren-geschlossen")); if (anyDoorClosed) event.getPlayer().sendMessage(configManager.getMessage("tueren-geschlossen"));
if (anyGateOpened) event.getPlayer().sendMessage(configManager.getMessage("gates-geoeffnet")); if (anyGateOpened) event.getPlayer().sendMessage(configManager.getMessage("gates-geoeffnet"));
@@ -117,18 +114,19 @@ public class ButtonListener implements Listener {
if (anyLampOff) event.getPlayer().sendMessage(configManager.getMessage("lampen-ausgeschaltet")); if (anyLampOff) event.getPlayer().sendMessage(configManager.getMessage("lampen-ausgeschaltet"));
if (anyNoteBlockPlayed) event.getPlayer().sendMessage(configManager.getMessage("notenblock-ausgeloest")); if (anyNoteBlockPlayed) event.getPlayer().sendMessage(configManager.getMessage("notenblock-ausgeloest"));
if (anyBellPlayed) event.getPlayer().sendMessage(configManager.getMessage("glocke-gelaeutet")); if (anyBellPlayed) event.getPlayer().sendMessage(configManager.getMessage("glocke-gelaeutet"));
} else { } else {
event.getPlayer().sendMessage(configManager.getMessage("keine-bloecke-verbunden")); event.getPlayer().sendMessage(configManager.getMessage("keine-bloecke-verbunden"));
} }
} }
return; return;
} }
}
// Verbindung herstellen // Verbindung herstellen
if (item == null || (!item.getType().equals(Material.STONE_BUTTON) && if (item == null || (!item.getType().equals(Material.STONE_BUTTON) &&
!item.getType().equals(Material.DAYLIGHT_DETECTOR) && !item.getType().equals(Material.DAYLIGHT_DETECTOR) &&
!item.getType().equals(Material.NOTE_BLOCK))) { !item.getType().equals(Material.NOTE_BLOCK) &&
!item.getType().equals(Material.TRIPWIRE_HOOK))) {
return; return;
} }
@@ -212,7 +210,8 @@ public class ButtonListener implements Listener {
if (item == null || (!item.getType().equals(Material.STONE_BUTTON) && if (item == null || (!item.getType().equals(Material.STONE_BUTTON) &&
!item.getType().equals(Material.DAYLIGHT_DETECTOR) && !item.getType().equals(Material.DAYLIGHT_DETECTOR) &&
!item.getType().equals(Material.NOTE_BLOCK))) { !item.getType().equals(Material.NOTE_BLOCK) &&
!item.getType().equals(Material.TRIPWIRE_HOOK))) {
return; return;
} }
@@ -236,6 +235,7 @@ public class ButtonListener implements Listener {
if (buttonId != null) { if (buttonId != null) {
dataManager.removePlacedController(playerUUID, blockLocation); dataManager.removePlacedController(playerUUID, blockLocation);
dataManager.setConnectedBlocks(playerUUID, buttonId, null); dataManager.setConnectedBlocks(playerUUID, buttonId, null);
dataManager.removeMotionSensorSettings(blockLocation); // Entferne Bewegungsmelder-Einstellungen
event.getPlayer().sendMessage(configManager.getMessage("controller-entfernt")); event.getPlayer().sendMessage(configManager.getMessage("controller-entfernt"));
} }
} }