src/main/java/viper/ButtonListener.java aktualisiert
This commit is contained in:
@@ -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"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user