浏览代码

Fixed dupe exploit with pistons (again).

GJ 13 年之前
父节点
当前提交
23d916f191
共有 2 个文件被更改,包括 5 次插入3 次删除
  1. 1 0
      Changelog.txt
  2. 4 3
      src/main/java/com/gmail/nossr50/listeners/BlockListener.java

+ 1 - 0
Changelog.txt

@@ -10,6 +10,7 @@ Key:
 Version 1.3.09
  = Fixed issue with NoCheatPlus and Serrated Strikes / Skull Splitter (fight.noswing)
  = Fixed bug where you could receive Archery XP from Potions
+ = Fixed bug with duping blocks via piston pushing
  ! Changed Spout settings to be in their own config file (spout.yml)
 
 Version 1.3.08

+ 4 - 3
src/main/java/com/gmail/nossr50/listeners/BlockListener.java

@@ -36,6 +36,7 @@ import org.bukkit.event.block.BlockPistonExtendEvent;
 import org.bukkit.event.block.BlockPistonRetractEvent;
 import org.bukkit.event.block.BlockPlaceEvent;
 import org.bukkit.inventory.ItemStack;
+import org.bukkit.metadata.FixedMetadataValue;
 
 import org.getspout.spoutapi.sound.SoundEffect;
 
@@ -58,15 +59,15 @@ public class BlockListener implements Listener {
 
         for (Block b : blocks) {
             if (mcMMO.placeStore.isTrue(b)) {
-                mcMMO.placeStore.setTrue(b.getRelative(direction));
+                b.getRelative(direction).setMetadata("pistonTrack", new FixedMetadataValue(plugin, true));
                 mcMMO.placeStore.setFalse(b);
             }
         }
 
         for (Block b : blocks) {
-            if (mcMMO.placeStore.isTrue(b.getRelative(direction))) {
+            if (b.getRelative(direction).hasMetadata("pistonTrack")) {
                 mcMMO.placeStore.setTrue(b.getRelative(direction));
-                mcMMO.placeStore.setFalse(b);
+                b.getRelative(direction).removeMetadata("pistonTrack", plugin);
             }
         }
     }