mirror of
https://github.com/barkeser2002/CatServer.git
synced 2026-09-25 07:19:56 +03:00
47 lines
2.2 KiB
Diff
47 lines
2.2 KiB
Diff
--- ../src-base/minecraft/net/minecraft/item/ItemArmor.java
|
|
+++ ../src-work/minecraft/net/minecraft/item/ItemArmor.java
|
|
@@ -4,6 +4,10 @@
|
|
import com.google.common.collect.Multimap;
|
|
import java.util.List;
|
|
import java.util.UUID;
|
|
+
|
|
+import org.bukkit.craftbukkit.inventory.CraftItemStack;
|
|
+import org.bukkit.event.block.BlockDispenseEvent;
|
|
+
|
|
import net.minecraft.block.BlockDispenser;
|
|
import net.minecraft.creativetab.CreativeTabs;
|
|
import net.minecraft.dispenser.BehaviorDefaultDispenseItem;
|
|
@@ -62,7 +66,31 @@
|
|
{
|
|
EntityLivingBase entitylivingbase = (EntityLivingBase)list.get(0);
|
|
EntityEquipmentSlot entityequipmentslot = EntityLiving.getSlotForItemStack(stack);
|
|
- ItemStack itemstack = stack.copy();
|
|
+ // CraftBukkit start
|
|
+ ItemStack itemstack = stack.splitStack(1);
|
|
+ World world = blockSource.getWorld();
|
|
+ org.bukkit.block.Block block = world.getWorld().getBlockAt(blockSource.getBlockPos().getX(), blockSource.getBlockPos().getY(), blockSource.getBlockPos().getZ());
|
|
+ CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack);
|
|
+
|
|
+ BlockDispenseEvent event = new BlockDispenseEvent(block, craftItem.clone(), new org.bukkit.util.Vector(0, 0, 0));
|
|
+ world.getServer().getPluginManager().callEvent(event);
|
|
+
|
|
+ if (event.isCancelled()) {
|
|
+ itemstack.stackSize++;
|
|
+ return itemstack;
|
|
+ }
|
|
+
|
|
+ if (!event.getItem().equals(craftItem)) {
|
|
+ itemstack.stackSize++;
|
|
+ // Chain to handler for new item
|
|
+ ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
|
|
+ IBehaviorDispenseItem idispensebehavior = (IBehaviorDispenseItem) BlockDispenser.DISPENSE_BEHAVIOR_REGISTRY.getObject(eventStack.getItem());
|
|
+ if (idispensebehavior != IBehaviorDispenseItem.DEFAULT_BEHAVIOR && idispensebehavior != ItemArmor.DISPENSER_BEHAVIOR) {
|
|
+ idispensebehavior.dispense(blockSource, eventStack);
|
|
+ return itemstack;
|
|
+ }
|
|
+ }
|
|
+ // CraftBukkit end
|
|
itemstack.stackSize = 1;
|
|
entitylivingbase.setItemStackToSlot(entityequipmentslot, itemstack);
|
|
|