Ver código fonte

Fishing TNT traps should not destroy blocks

TfT_02 11 anos atrás
pai
commit
67e9d9c535

+ 16 - 0
src/main/java/com/gmail/nossr50/listeners/EntityListener.java

@@ -459,6 +459,22 @@ public class EntityListener implements Listener {
         }
     }
 
+    /**
+     * Monitor EntityExplode events.
+     *
+     * @param event The event to monitor
+     */
+    @EventHandler(priority = EventPriority.MONITOR, ignoreCancelled = true)
+    public void onEnitityExplodeMonitor(EntityExplodeEvent event) {
+        Entity entity = event.getEntity();
+
+        if (!entity.hasMetadata(mcMMO.tntsafeMetadataKey)) {
+            return;
+        }
+
+        event.blockList().clear();
+    }
+
     /**
      * Handle FoodLevelChange events that involve modifying the event.
      *

+ 1 - 0
src/main/java/com/gmail/nossr50/mcMMO.java

@@ -91,6 +91,7 @@ public class mcMMO extends JavaPlugin {
     public final static String blockMetadataKey    = "mcMMO: Piston Tracking";
     public final static String furnaceMetadataKey  = "mcMMO: Tracked Furnace";
     public final static String tntMetadataKey      = "mcMMO: Tracked TNT";
+    public final static String tntsafeMetadataKey  = "mcMMO: Safe TNT";
     public final static String customNameKey       = "mcMMO: Custom Name";
     public final static String customVisibleKey    = "mcMMO: Name Visibility";
     public final static String droppedItemKey      = "mcMMO: Tracked Item";

+ 1 - 0
src/main/java/com/gmail/nossr50/skills/fishing/FishingManager.java

@@ -499,6 +499,7 @@ public class FishingManager extends SkillManager {
             double magnitude = velocity.length();
             fishingCatch.setVelocity(velocity.multiply((magnitude + 1) / magnitude));
 
+            tnt.setMetadata(mcMMO.tntsafeMetadataKey, mcMMO.metadataValue);
             tnt.setFuseTicks(3 * Misc.TICK_CONVERSION_FACTOR);
         }
         else {