diff --git a/BauSystem_Main/src/BauSystem.properties b/BauSystem_Main/src/BauSystem.properties index 5d654d65..7a4f9681 100644 --- a/BauSystem_Main/src/BauSystem.properties +++ b/BauSystem_Main/src/BauSystem.properties @@ -924,6 +924,17 @@ PANZERN_NO_WORLDEDIT = §cDu hast keine WorldEdit Selection PANZERN_PROGRESS = §e{0} §7Blöcke übrig, §e{1} §7Blöcke pro Sekunde, §e{2} §7Block Delta PANZERN_DONE = §aZuende gepanzert +# UTILS +TNT_CLICK_HEADER = §8---=== §eTNT §8===--- +TNT_CLICK_ORDER = §eEntity Order§8: §e{0} +TNT_CLICK_FUSE_TIME = §eFuseTime§8: §e{0} +TNT_CLICK_POSITION_X = §7Position §eX§8: §e{0} +TNT_CLICK_POSITION_Y = §7Position §eY§8: §e{0} +TNT_CLICK_POSITION_Z = §7Position §eZ§8: §e{0} +TNT_CLICK_VELOCITY_X = §7Velocity §eX§8: §e{0} +TNT_CLICK_VELOCITY_Y = §7Velocity §eY§8: §e{0} +TNT_CLICK_VELOCITY_Z = §7Velocity §eZ§8: §e{0} + # Warp WARP_DISALLOWED = §cDu darfst hier nicht das Warp System nutzen WARP_LOC_X = §7X§8: §e{0} diff --git a/BauSystem_Main/src/de/steamwar/bausystem/features/util/TNTClickListener.java b/BauSystem_Main/src/de/steamwar/bausystem/features/util/TNTClickListener.java new file mode 100644 index 00000000..1849658f --- /dev/null +++ b/BauSystem_Main/src/de/steamwar/bausystem/features/util/TNTClickListener.java @@ -0,0 +1,58 @@ +/* + * This file is a part of the SteamWar software. + * + * Copyright (C) 2021 SteamWar.de-Serverteam + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU Affero General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Affero General Public License for more details. + * + * You should have received a copy of the GNU Affero General Public License + * along with this program. If not, see . + */ + +package de.steamwar.bausystem.features.util; + +import de.steamwar.bausystem.BauSystem; +import de.steamwar.bausystem.linkage.LinkageType; +import de.steamwar.bausystem.linkage.Linked; +import org.bukkit.entity.Entity; +import org.bukkit.entity.TNTPrimed; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; +import org.bukkit.event.player.PlayerInteractEntityEvent; +import org.bukkit.inventory.EquipmentSlot; + +@Linked(LinkageType.LISTENER) +public class TNTClickListener implements Listener { + + @EventHandler + public void onPlayerInteractEntity(PlayerInteractEntityEvent event) { + if (event.getHand() != EquipmentSlot.HAND) { + return; + } + Entity entity = event.getRightClicked(); + if (event.getRightClicked() instanceof TNTPrimed) { + TNTPrimed tntPrimed = (TNTPrimed) entity; + BauSystem.MESSAGE.sendPrefixless("TNT_CLICK_HEADER", event.getPlayer()); + BauSystem.MESSAGE.sendPrefixless("TNT_CLICK_ORDER", event.getPlayer(), getOrder(tntPrimed)); + BauSystem.MESSAGE.sendPrefixless("TNT_CLICK_FUSE_TIME", event.getPlayer(), tntPrimed.getFuseTicks()); + BauSystem.MESSAGE.sendPrefixless("TNT_CLICK_POSITION_X", event.getPlayer(), tntPrimed.getLocation().getX() + ""); + BauSystem.MESSAGE.sendPrefixless("TNT_CLICK_POSITION_Y", event.getPlayer(), tntPrimed.getLocation().getY() + ""); + BauSystem.MESSAGE.sendPrefixless("TNT_CLICK_POSITION_Z", event.getPlayer(), tntPrimed.getLocation().getZ() + ""); + BauSystem.MESSAGE.sendPrefixless("TNT_CLICK_VELOCITY_X", event.getPlayer(), tntPrimed.getVelocity().getX() + ""); + BauSystem.MESSAGE.sendPrefixless("TNT_CLICK_VELOCITY_Y", event.getPlayer(), tntPrimed.getVelocity().getX() + ""); + BauSystem.MESSAGE.sendPrefixless("TNT_CLICK_VELOCITY_Z", event.getPlayer(), tntPrimed.getVelocity().getX() + ""); + } + } + + private int getOrder(Entity entity) { + return entity.getEntityId() - entity.getLocation().getWorld().getEntities().stream().filter(TNTPrimed.class::isInstance).map(Entity::getEntityId).min(Integer::compareTo).orElse(0); + } +}