#1325: Use CraftBlockType and CraftItemType instead of CraftMagicNumbers to convert between minecraft and bukkit block / item representation

By: DerFrZocker <derrieple@gmail.com>
This commit is contained in:
CraftBukkit/Spigot
2023-12-29 08:36:38 +11:00
parent b245f22351
commit d15575db91
32 changed files with 137 additions and 102 deletions

View File

@@ -29,8 +29,8 @@
+import org.bukkit.craftbukkit.entity.CraftPlayer;
+import org.bukkit.craftbukkit.event.CraftEventFactory;
+import org.bukkit.craftbukkit.inventory.CraftItemStack;
+import org.bukkit.craftbukkit.inventory.CraftItemType;
+import org.bukkit.craftbukkit.util.CraftChatMessage;
+import org.bukkit.craftbukkit.util.CraftMagicNumbers;
+import org.bukkit.craftbukkit.util.CraftNamespacedKey;
+import org.bukkit.craftbukkit.util.LazyPlayerSet;
+import org.bukkit.craftbukkit.util.Waitable;
@@ -1462,7 +1462,7 @@
+ ItemStack cursor = this.player.containerMenu.getCarried();
+ action = InventoryAction.NOTHING;
+ // Quick check for if we have any of the item
+ if (inventory.getTopInventory().contains(CraftMagicNumbers.getMaterial(cursor.getItem())) || inventory.getBottomInventory().contains(CraftMagicNumbers.getMaterial(cursor.getItem()))) {
+ if (inventory.getTopInventory().contains(CraftItemType.minecraftToBukkit(cursor.getItem())) || inventory.getBottomInventory().contains(CraftItemType.minecraftToBukkit(cursor.getItem()))) {
+ action = InventoryAction.COLLECT_TO_CURSOR;
+ }
+ }

View File

@@ -1,6 +1,6 @@
--- a/net/minecraft/world/level/block/entity/TileEntityFurnace.java
+++ b/net/minecraft/world/level/block/entity/TileEntityFurnace.java
@@ -47,6 +47,20 @@
@@ -47,6 +47,21 @@
import net.minecraft.world.level.block.state.IBlockData;
import net.minecraft.world.phys.Vec3D;
@@ -8,6 +8,7 @@
+import org.bukkit.craftbukkit.block.CraftBlock;
+import org.bukkit.craftbukkit.entity.CraftHumanEntity;
+import org.bukkit.craftbukkit.inventory.CraftItemStack;
+import org.bukkit.craftbukkit.inventory.CraftItemType;
+import org.bukkit.entity.HumanEntity;
+import org.bukkit.entity.Player;
+import org.bukkit.event.block.BlockExpEvent;
@@ -21,7 +22,7 @@
public abstract class TileEntityFurnace extends TileEntityContainer implements IWorldInventory, RecipeCraftingHolder, AutoRecipeOutput {
protected static final int SLOT_INPUT = 0;
@@ -115,7 +129,7 @@
@@ -115,7 +130,7 @@
}
};
this.recipesUsed = new Object2IntOpenHashMap();
@@ -30,7 +31,7 @@
}
public static Map<Item, Integer> getFuel() {
@@ -183,6 +197,40 @@
@@ -183,6 +198,40 @@
return map;
}
@@ -71,7 +72,7 @@
private static boolean isNeverAFurnaceFuel(Item item) {
return item.builtInRegistryHolder().is(TagsItem.NON_FLAMMABLE_WOOD);
}
@@ -271,7 +319,7 @@
@@ -271,7 +320,7 @@
RecipeHolder recipeholder;
if (flag2) {
@@ -80,7 +81,7 @@
} else {
recipeholder = null;
}
@@ -279,9 +327,20 @@
@@ -279,9 +328,20 @@
int i = tileentityfurnace.getMaxStackSize();
if (!tileentityfurnace.isLit() && canBurn(world.registryAccess(), recipeholder, tileentityfurnace.items, i)) {
@@ -103,7 +104,7 @@
flag1 = true;
if (flag3) {
Item item = itemstack.getItem();
@@ -297,11 +356,23 @@
@@ -297,11 +357,23 @@
}
if (tileentityfurnace.isLit() && canBurn(world.registryAccess(), recipeholder, tileentityfurnace.items, i)) {
@@ -128,7 +129,7 @@
tileentityfurnace.setRecipeUsed(recipeholder);
}
@@ -340,17 +411,44 @@
@@ -340,17 +412,44 @@
}
}
@@ -174,7 +175,7 @@
if (itemstack.is(Blocks.WET_SPONGE.asItem()) && !((ItemStack) nonnulllist.get(1)).isEmpty() && ((ItemStack) nonnulllist.get(1)).is(Items.BUCKET)) {
nonnulllist.set(1, new ItemStack(Items.WATER_BUCKET));
@@ -374,6 +472,7 @@
@@ -374,6 +473,7 @@
}
private static int getTotalCookTime(World world, TileEntityFurnace tileentityfurnace) {
@@ -182,7 +183,7 @@
return (Integer) tileentityfurnace.quickCheck.getRecipeFor(tileentityfurnace, world).map((recipeholder) -> {
return ((RecipeCooking) recipeholder.value()).getCookingTime();
}).orElse(200);
@@ -495,8 +594,8 @@
@@ -495,8 +595,8 @@
@Override
public void awardUsedRecipes(EntityHuman entityhuman, List<ItemStack> list) {}
@@ -193,7 +194,7 @@
entityplayer.awardRecipes(list);
Iterator iterator = list.iterator();
@@ -513,6 +612,12 @@
@@ -513,6 +613,12 @@
}
public List<RecipeHolder<?>> getRecipesToAwardAndPopExperience(WorldServer worldserver, Vec3D vec3d) {
@@ -206,7 +207,7 @@
List<RecipeHolder<?>> list = Lists.newArrayList();
ObjectIterator objectiterator = this.recipesUsed.object2IntEntrySet().iterator();
@@ -521,14 +626,14 @@
@@ -521,14 +627,14 @@
worldserver.getRecipeManager().byKey((MinecraftKey) entry.getKey()).ifPresent((recipeholder) -> {
list.add(recipeholder);
@@ -223,14 +224,14 @@
int j = MathHelper.floor((float) i * f);
float f1 = MathHelper.frac((float) i * f);
@@ -536,6 +641,17 @@
@@ -536,6 +642,17 @@
++j;
}
+ // CraftBukkit start - fire FurnaceExtractEvent / BlockExpEvent
+ BlockExpEvent event;
+ if (amount != 0) {
+ event = new FurnaceExtractEvent((Player) entityhuman.getBukkitEntity(), CraftBlock.at(worldserver, blockposition), org.bukkit.craftbukkit.util.CraftMagicNumbers.getMaterial(itemstack.getItem()), amount, j);
+ event = new FurnaceExtractEvent((Player) entityhuman.getBukkitEntity(), CraftBlock.at(worldserver, blockposition), CraftItemType.minecraftToBukkit(itemstack.getItem()), amount, j);
+ } else {
+ event = new BlockExpEvent(CraftBlock.at(worldserver, blockposition), j);
+ }