From 7dcb9b67ea0f6d15d996f83c9d6ae3097cf0acd5 Mon Sep 17 00:00:00 2001 From: Zach Brown Date: Thu, 28 Jul 2016 20:54:48 -0500 Subject: [PATCH] Make alternative falling block ground detection configurable Workaround for GH-336 --- ...-FallingBlocks-being-stuck-on-fences.patch | 26 +++++++++++++++---- .../0158-Make-entities-look-for-hoppers.patch | 14 +++++----- ...unk-Unloads-based-on-Player-Movement.patch | 18 ++++++------- .../0161-Toggleable-Elytra-Wall-Damage.patch | 12 ++++----- 4 files changed, 42 insertions(+), 28 deletions(-) diff --git a/Spigot-Server-Patches/0157-Fix-FallingBlocks-being-stuck-on-fences.patch b/Spigot-Server-Patches/0157-Fix-FallingBlocks-being-stuck-on-fences.patch index f6cac0951..0d73bbe96 100644 --- a/Spigot-Server-Patches/0157-Fix-FallingBlocks-being-stuck-on-fences.patch +++ b/Spigot-Server-Patches/0157-Fix-FallingBlocks-being-stuck-on-fences.patch @@ -1,4 +1,4 @@ -From d11bdc71163cd991a87f8268bbf0a7f9ac06a9ff Mon Sep 17 00:00:00 2001 +From 1dc4a1ddd3ac2e061a97fc046481082e8e9a9f07 Mon Sep 17 00:00:00 2001 From: Martin Panzer Date: Fri, 3 Jun 2016 23:13:39 +0200 Subject: [PATCH] Fix FallingBlocks being stuck on fences @@ -10,6 +10,20 @@ resulted in them always thinking they would be on air. We now first check, if if we are already on the ground. if not, we check if the falling block is inside of the hitbox of the block at y - 1. +diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +index cc5e299..3500b6c 100644 +--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java ++++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +@@ -358,4 +358,9 @@ public class PaperWorldConfig { + log("Old Cannon Behaviors: This feature may not be working entirely properly at the moment"); + } + } ++ ++ public boolean altFallingBlockOnGround; ++ private void altFallingBlockOnGround() { ++ altFallingBlockOnGround = getBoolean("use-alternate-fallingblock-onGround-detection", false); ++ } + } diff --git a/src/main/java/net/minecraft/server/BlockFalling.java b/src/main/java/net/minecraft/server/BlockFalling.java index 8f22dab..d3a0d70 100644 --- a/src/main/java/net/minecraft/server/BlockFalling.java @@ -27,7 +41,7 @@ index 8f22dab..d3a0d70 100644 public void a_(World world, BlockPosition blockposition) {} } diff --git a/src/main/java/net/minecraft/server/EntityFallingBlock.java b/src/main/java/net/minecraft/server/EntityFallingBlock.java -index 4fd4371..c4d90b0 100644 +index 4fd4371..dcfdd31 100644 --- a/src/main/java/net/minecraft/server/EntityFallingBlock.java +++ b/src/main/java/net/minecraft/server/EntityFallingBlock.java @@ -2,7 +2,9 @@ package net.minecraft.server; @@ -49,19 +63,21 @@ index 4fd4371..c4d90b0 100644 + if (!isOnGround()) { this.onGround = false; - // return; // CraftBukkit -+ return; // Paper ++ if (this.world.paperConfig.altFallingBlockOnGround) return; // Paper } this.motX *= 0.699999988079071D; -@@ -158,6 +159,30 @@ public class EntityFallingBlock extends Entity { +@@ -158,6 +159,32 @@ public class EntityFallingBlock extends Entity { } } + // Paper start + private boolean isOnGround() { + BlockPosition where = new BlockPosition(this.locX, this.locY - 0.009999999776482582D, this.locZ); ++ boolean cannotMoveThrough = !BlockFalling.canMoveThrough(this.world.getType(where)); ++ if (!this.world.paperConfig.altFallingBlockOnGround) return cannotMoveThrough; + -+ if (!BlockFalling.canMoveThrough(this.world.getType(where))) { ++ if (cannotMoveThrough) { + return true; + } + diff --git a/Spigot-Server-Patches/0158-Make-entities-look-for-hoppers.patch b/Spigot-Server-Patches/0158-Make-entities-look-for-hoppers.patch index cf8efab73..8a6d16b7e 100644 --- a/Spigot-Server-Patches/0158-Make-entities-look-for-hoppers.patch +++ b/Spigot-Server-Patches/0158-Make-entities-look-for-hoppers.patch @@ -1,4 +1,4 @@ -From 0f33dcc2f6a2a72926f3554e1b1ccab73a0203fa Mon Sep 17 00:00:00 2001 +From a23f74a3dfe8b30db36e7700bc380db109cbb060 Mon Sep 17 00:00:00 2001 From: Techcable Date: Sat, 18 Jun 2016 01:01:37 -0500 Subject: [PATCH] Make entities look for hoppers @@ -78,12 +78,12 @@ index 0000000..aef7c2b + double getZ(); +} diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index cc5e299..b811775 100644 +index 3500b6c..86fda1a 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -@@ -358,4 +358,9 @@ public class PaperWorldConfig { - log("Old Cannon Behaviors: This feature may not be working entirely properly at the moment"); - } +@@ -363,4 +363,9 @@ public class PaperWorldConfig { + private void altFallingBlockOnGround() { + altFallingBlockOnGround = getBoolean("use-alternate-fallingblock-onGround-detection", false); } + + public boolean isHopperPushBased; @@ -132,7 +132,7 @@ index d6cc51b..5bbaa87 100644 this.b = i; this.c = j; diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index e21769f..93f9eab 100644 +index fbf114f..d26ffa7 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -77,6 +77,19 @@ public abstract class Entity implements ICommandListener { @@ -370,5 +370,5 @@ index a651961..1f5de89 100644 if (!list.isEmpty()) { -- -2.9.2.windows.1 +2.9.0 diff --git a/Spigot-Server-Patches/0160-Delay-Chunk-Unloads-based-on-Player-Movement.patch b/Spigot-Server-Patches/0160-Delay-Chunk-Unloads-based-on-Player-Movement.patch index 9347521f4..2245a5bcc 100644 --- a/Spigot-Server-Patches/0160-Delay-Chunk-Unloads-based-on-Player-Movement.patch +++ b/Spigot-Server-Patches/0160-Delay-Chunk-Unloads-based-on-Player-Movement.patch @@ -1,4 +1,4 @@ -From dfc2ef2e5fbd2e862167bcfe062a7f92d591ec3b Mon Sep 17 00:00:00 2001 +From 30b54896e79fe497994706d5ddabd083b11201e6 Mon Sep 17 00:00:00 2001 From: Aikar Date: Sat, 18 Jun 2016 23:22:12 -0400 Subject: [PATCH] Delay Chunk Unloads based on Player Movement @@ -17,13 +17,14 @@ This allows servers with smaller worlds who do less long distance exploring to s wasting cpu cycles on saving/unloading/reloading chunks repeatedly. diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index b811775..60a7dec 100644 +index 86fda1a..17b90a0 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -@@ -359,6 +359,15 @@ public class PaperWorldConfig { - } +@@ -368,4 +368,13 @@ public class PaperWorldConfig { + private void isHopperPushBased() { + isHopperPushBased = getBoolean("hopper.push-based", true); } - ++ + public long delayChunkUnloadsBy; + private void delayChunkUnloadsBy() { + delayChunkUnloadsBy = PaperConfig.getSeconds(getString("delay-chunk-unloads-by", "0s")); @@ -32,12 +33,9 @@ index b811775..60a7dec 100644 + delayChunkUnloadsBy *= 1000; + } + } -+ - public boolean isHopperPushBased; - private void isHopperPushBased() { - isHopperPushBased = getBoolean("hopper.push-based", true); + } diff --git a/src/main/java/net/minecraft/server/Chunk.java b/src/main/java/net/minecraft/server/Chunk.java -index a1f7e83..30c3d6c 100644 +index a9f6efa..6bad7eb 100644 --- a/src/main/java/net/minecraft/server/Chunk.java +++ b/src/main/java/net/minecraft/server/Chunk.java @@ -30,6 +30,7 @@ public class Chunk { diff --git a/Spigot-Server-Patches/0161-Toggleable-Elytra-Wall-Damage.patch b/Spigot-Server-Patches/0161-Toggleable-Elytra-Wall-Damage.patch index 42c1c3e71..76f3741ce 100644 --- a/Spigot-Server-Patches/0161-Toggleable-Elytra-Wall-Damage.patch +++ b/Spigot-Server-Patches/0161-Toggleable-Elytra-Wall-Damage.patch @@ -1,4 +1,4 @@ -From a0d46c98b0317cfaea271d536f0fa0cf8dc79167 Mon Sep 17 00:00:00 2001 +From 4fa65e457e2d2b791017ad4e013447b940fbd137 Mon Sep 17 00:00:00 2001 From: Jadon Fowler Date: Sat, 18 Jun 2016 23:13:59 -0700 Subject: [PATCH] Toggleable Elytra Wall Damage @@ -7,12 +7,12 @@ Instead of calculating the damage taken from hitting a wall, you can disable it in the config. diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -index 60a7dec..ef08901 100644 +index 17b90a0..af776b3 100644 --- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java -@@ -372,4 +372,9 @@ public class PaperWorldConfig { - private void isHopperPushBased() { - isHopperPushBased = getBoolean("hopper.push-based", true); +@@ -377,4 +377,9 @@ public class PaperWorldConfig { + delayChunkUnloadsBy *= 1000; + } } + + public boolean elytraHitWallDamage = true; @@ -21,7 +21,7 @@ index 60a7dec..ef08901 100644 + } } diff --git a/src/main/java/net/minecraft/server/EntityLiving.java b/src/main/java/net/minecraft/server/EntityLiving.java -index 837bc25..7162a9e 100644 +index c0c60a7..8c98a19 100644 --- a/src/main/java/net/minecraft/server/EntityLiving.java +++ b/src/main/java/net/minecraft/server/EntityLiving.java @@ -1615,6 +1615,7 @@ public abstract class EntityLiving extends Entity {