geforkt von Mirrors/Paper
aa52bf9e33
Mojang made some changes to priorities in 1.17 and it seems that these changes conflict with the changes made in this patch, which in some cases appears to cause excessive rescheduling of tasks. This, however, is not confirmed as such but seems to be the behavior that we're seeing to cause this issue, if mojang has adopted the changes we suggested, then a good chunk of this patch may be unneeded, but, this needs a much better look than I'm currently able to do
79 Zeilen
3.2 KiB
Diff
79 Zeilen
3.2 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/org/bukkit/craftbukkit/entity/CraftBoat.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java
|
|
index 47f95fb26793fbf6c5c37187d4958ee5ba93f060..39e7aeb409a39bd8cd8200b18dd3da1e427519ab 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftBoat.java
|
|
@@ -65,6 +65,13 @@ public class CraftBoat extends CraftVehicle implements Boat {
|
|
this.getHandle().landBoats = workOnLand;
|
|
}
|
|
|
|
+ // Paper start
|
|
+ @Override
|
|
+ public org.bukkit.Material getBoatMaterial() {
|
|
+ return org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(getHandle().getDropItem());
|
|
+ }
|
|
+ // Paper end
|
|
+
|
|
@Override
|
|
public net.minecraft.world.entity.vehicle.Boat getHandle() {
|
|
return (net.minecraft.world.entity.vehicle.Boat) entity;
|
|
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecart.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecart.java
|
|
index 053112d7411caa6f439bd344e74aff8c844d93ac..5b8a83b250987fe5c939ab06b1021621820ad56e 100644
|
|
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecart.java
|
|
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecart.java
|
|
@@ -1,8 +1,10 @@
|
|
package org.bukkit.craftbukkit.entity;
|
|
|
|
import net.minecraft.world.entity.vehicle.AbstractMinecart;
|
|
+import net.minecraft.world.item.Items; // Paper
|
|
import net.minecraft.world.level.block.Blocks;
|
|
import net.minecraft.world.level.block.state.BlockState;
|
|
+import org.bukkit.Material; // Paper
|
|
import org.bukkit.block.data.BlockData;
|
|
import org.bukkit.craftbukkit.CraftServer;
|
|
import org.bukkit.craftbukkit.block.data.CraftBlockData;
|
|
@@ -68,6 +70,38 @@ public abstract class CraftMinecart extends CraftVehicle implements Minecart {
|
|
this.getHandle().setDerailedVelocityMod(derailed);
|
|
}
|
|
|
|
+ // Paper start
|
|
+ @Override
|
|
+ public Material getMinecartMaterial() {
|
|
+ net.minecraft.world.item.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 AbstractMinecart getHandle() {
|
|
return (AbstractMinecart) entity;
|