Commits

md_5 authored 6d4b25bf197
Increase diff stability
No tags

nms-patches/net/minecraft/core/dispenser/IDispenseBehavior.patch

Modified
189 189 }
190 190
191 191 entityhorsechestedabstract = (EntityHorseChestedAbstract) iterator1.next();
192 192 - } while (!entityhorsechestedabstract.isTamed() || !entityhorsechestedabstract.getSlot(499).set(itemstack));
193 193 + // CraftBukkit start
194 194 + } while (!entityhorsechestedabstract.isTamed());
195 195 + ItemStack itemstack1 = itemstack.split(1);
196 196 + World world = sourceblock.level();
197 197 + org.bukkit.block.Block block = CraftBlock.at(world, sourceblock.pos());
198 198 + CraftItemStack craftItem = CraftItemStack.asCraftMirror(itemstack1);
199 -+
199 +
200 +- itemstack.shrink(1);
200 201 + BlockDispenseArmorEvent event = new BlockDispenseArmorEvent(block, craftItem.clone(), (org.bukkit.craftbukkit.entity.CraftLivingEntity) entityhorsechestedabstract.getBukkitEntity());
201 202 + if (!BlockDispenser.eventFired) {
202 203 + world.getCraftServer().getPluginManager().callEvent(event);
203 204 + }
204 -
205 -- itemstack.shrink(1);
205 ++
206 206 + if (event.isCancelled()) {
207 207 + return itemstack;
208 208 + }
209 209 +
210 210 + if (!event.getItem().equals(craftItem)) {
211 211 + // Chain to handler for new item
212 212 + ItemStack eventStack = CraftItemStack.asNMSCopy(event.getItem());
213 213 + IDispenseBehavior idispensebehavior = (IDispenseBehavior) BlockDispenser.DISPENSER_REGISTRY.get(eventStack.getItem());
214 214 + if (idispensebehavior != IDispenseBehavior.NOOP && idispensebehavior != ItemArmor.DISPENSE_ITEM_BEHAVIOR) {
215 215 + idispensebehavior.dispense(sourceblock, eventStack);

Everything looks good. We'll let you know here if there's anything you should know about.

Add shortcut