papermc/Spigot-Server-Patches/0626-Implement-API-to-get-Material-from-Boats-and-Minecar.patch
Shane Freeder e886d8118e
Updated Upstream ()
Upstream has released updates that appear to apply and compile correctly.
This update has not been tested by PaperMC and as with ANY update, please do your own testing
2021-02-06 00:00:18 +00:00

100 lines
3.9 KiB
Diff

From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Matthew Miller <mnmiller1@me.com>
Date: Thu, 31 Dec 2020 12:48:19 +1000
Subject: [PATCH] Implement API to get Material from Boats and Minecarts
diff --git a/src/main/java/net/minecraft/server/EntityBoat.java b/src/main/java/net/minecraft/server/EntityBoat.java
index fdfdf83c28c3065fa89fba9e44b3da99f9791e0e..da84cf98022b771bdf0c9d0b284aa7d4d59318e0 100644
--- a/src/main/java/net/minecraft/server/EntityBoat.java
+++ b/src/main/java/net/minecraft/server/EntityBoat.java
@@ -216,6 +216,7 @@ public class EntityBoat extends Entity {
}
+ public final Item getBoatItem() { return this.g(); } // Paper - OBFHELPER
public Item g() {
switch (this.getType()) {
case OAK:
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java
index 271950903e8541194e4f6447f0d2aaae63920678..4a994dacd57bb4630b9c5645c084726045d64bcd 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java
@@ -1,8 +1,10 @@
package org.bukkit.craftbukkit.entity;
import net.minecraft.server.EntityBoat;
+import org.bukkit.Material;
import org.bukkit.TreeSpecies;
import org.bukkit.craftbukkit.CraftServer;
+import org.bukkit.craftbukkit.util.CraftMagicNumbers;
import org.bukkit.entity.Boat;
import org.bukkit.entity.EntityType;
@@ -66,6 +68,13 @@ public class CraftBoat extends CraftVehicle implements Boat {
getHandle().landBoats = workOnLand;
}
+ // Paper start
+ @Override
+ public Material getBoatMaterial() {
+ return CraftMagicNumbers.getMaterial(getHandle().getBoatItem());
+ }
+ // Paper end
+
@Override
public EntityBoat getHandle() {
return (EntityBoat) entity;
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecart.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecart.java
index d23f994f579bdd34e15703cc11bdd36572841146..52b4b15b2003f19f605e98a99396d1baedfe5f42 100644
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecart.java
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecart.java
@@ -3,6 +3,9 @@ package org.bukkit.craftbukkit.entity;
import net.minecraft.server.Blocks;
import net.minecraft.server.EntityMinecartAbstract;
import net.minecraft.server.IBlockData;
+import net.minecraft.server.Item;
+import net.minecraft.server.Items;
+import org.bukkit.Material;
import org.bukkit.block.data.BlockData;
import org.bukkit.craftbukkit.CraftServer;
import org.bukkit.craftbukkit.block.data.CraftBlockData;
@@ -68,6 +71,38 @@ public abstract class CraftMinecart extends CraftVehicle implements Minecart {
getHandle().setDerailedVelocityMod(derailed);
}
+ // Paper start
+ @Override
+ public Material getMinecartMaterial() {
+ Item minecartItem;
+ switch (getHandle().getMinecartType()) {
+ case CHEST:
+ minecartItem = Items.CHEST_MINECART;
+ break;
+ case FURNACE:
+ minecartItem = Items.FURNACE_MINECART;
+ break;
+ case TNT:
+ minecartItem = Items.TNT_MINECART;
+ break;
+ case HOPPER:
+ minecartItem = Items.HOPPER_MINECART;
+ break;
+ case COMMAND_BLOCK:
+ minecartItem = Items.COMMAND_BLOCK_MINECART;
+ break;
+ case RIDEABLE:
+ case SPAWNER:
+ minecartItem = Items.MINECART;
+ break;
+ default:
+ throw new IllegalStateException("Unexpected value: " + getHandle().getMinecartType());
+ }
+
+ return CraftMagicNumbers.getMaterial(minecartItem);
+ }
+ // Paper end
+
@Override
public EntityMinecartAbstract getHandle() {
return (EntityMinecartAbstract) entity;