diff --git a/patches/server/0037-Controllable-Minecarts.patch b/patches/server/0037-Controllable-Minecarts.patch index 8d4fd8c82..04e0b1066 100644 --- a/patches/server/0037-Controllable-Minecarts.patch +++ b/patches/server/0037-Controllable-Minecarts.patch @@ -1,4 +1,4 @@ -From 85436bf8d0c03d671b7afc8abfcade610999485d Mon Sep 17 00:00:00 2001 +From 7204fb2997a43b3e8fe7784b4e79e335ded47ea7 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Sat, 29 Jun 2019 02:32:40 -0500 Subject: [PATCH] Controllable Minecarts @@ -6,11 +6,12 @@ Subject: [PATCH] Controllable Minecarts --- .../java/net/minecraft/server/Entity.java | 1 + .../server/EntityMinecartAbstract.java | 35 +++++++++++++++++++ - .../java/net/pl3x/purpur/PurpurConfig.java | 25 +++++++++++++ - 3 files changed, 61 insertions(+) + .../net/minecraft/server/ItemMinecart.java | 8 +++-- + .../java/net/pl3x/purpur/PurpurConfig.java | 27 ++++++++++++++ + 4 files changed, 68 insertions(+), 3 deletions(-) diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java -index ca429be7db..ee099b6728 100644 +index ca429be7d..ee099b672 100644 --- a/src/main/java/net/minecraft/server/Entity.java +++ b/src/main/java/net/minecraft/server/Entity.java @@ -1294,6 +1294,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke @@ -22,7 +23,7 @@ index ca429be7db..ee099b6728 100644 return this.inLava; } diff --git a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java -index 6df2930e2d..d300c05333 100644 +index 6df2930e2..d300c0533 100644 --- a/src/main/java/net/minecraft/server/EntityMinecartAbstract.java +++ b/src/main/java/net/minecraft/server/EntityMinecartAbstract.java @@ -4,6 +4,7 @@ import java.util.Iterator; @@ -80,8 +81,33 @@ index 6df2930e2d..d300c05333 100644 // CraftBukkit start - replace magic numbers with our variables this.setMot(new Vec3D(this.getMot().x * this.derailedX, this.getMot().y * this.derailedY, this.getMot().z * this.derailedZ)); // CraftBukkit end +diff --git a/src/main/java/net/minecraft/server/ItemMinecart.java b/src/main/java/net/minecraft/server/ItemMinecart.java +index 764427456..456eced16 100644 +--- a/src/main/java/net/minecraft/server/ItemMinecart.java ++++ b/src/main/java/net/minecraft/server/ItemMinecart.java +@@ -103,8 +103,10 @@ public class ItemMinecart extends Item { + IBlockData iblockdata = world.getType(blockposition); + + if (!iblockdata.a(TagsBlock.RAILS)) { +- return EnumInteractionResult.FAIL; +- } else { ++ // Purpur start - place minecarts anywhere ++ if (!net.pl3x.purpur.PurpurConfig.controllableMinecartsPlaceAnywhere) return EnumInteractionResult.FAIL; ++ if (iblockdata.getMaterial().isSolid()) blockposition = blockposition.shift(itemactioncontext.getClickedFace()); ++ } //else { // Purpur end - place minecarts anywhere + ItemStack itemstack = itemactioncontext.getItemStack(); + + if (!world.isClientSide) { +@@ -131,6 +133,6 @@ public class ItemMinecart extends Item { + + itemstack.subtract(1); + return EnumInteractionResult.SUCCESS; +- } ++ //} // Purpur - place minecarts anywhere + } + } diff --git a/src/main/java/net/pl3x/purpur/PurpurConfig.java b/src/main/java/net/pl3x/purpur/PurpurConfig.java -index 448d21d9e1..b5aa94e802 100644 +index 448d21d9e..3fe6cef02 100644 --- a/src/main/java/net/pl3x/purpur/PurpurConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurConfig.java @@ -1,9 +1,13 @@ @@ -98,16 +124,18 @@ index 448d21d9e1..b5aa94e802 100644 import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; -@@ -293,4 +297,25 @@ public class PurpurConfig { +@@ -293,4 +297,27 @@ public class PurpurConfig { ridableZombiePigman = getBoolean("settings.ridable.zombie_pigman", ridableZombiePigman); ridableZombieVillager = getBoolean("settings.ridable.zombie_villager", ridableZombieVillager); } + + public static boolean controllableMinecarts = true; ++ public static boolean controllableMinecartsPlaceAnywhere = true; + public static double controllableMinecartsBaseSpeed = 0.1F; + public static Map controllableMinecartsBlockSpeeds = new HashMap<>(); + private static void controllableMinecarts() { + controllableMinecarts = getBoolean("settings.controllable-minecarts.enabled", controllableMinecarts); ++ controllableMinecartsPlaceAnywhere = getBoolean("settings.controllable-minecarts.place-anywhere", controllableMinecartsPlaceAnywhere); + controllableMinecartsBaseSpeed = getDouble("settings.controllable-minecarts.base-speed", controllableMinecartsBaseSpeed); + if (!config.contains("settings.controllable-minecarts.block-speed")) { + config.createSection("settings.controllable-minecarts.block-speed");