Archiviert
13
0

SPIGOT-1505: PlayerItemMendEvent

Dieser Commit ist enthalten in:
Senmori 2017-11-21 10:17:31 +11:00 committet von md_5
Ursprung 19ed80cef7
Commit bdb8822625
2 geänderte Dateien mit 26 neuen und 3 gelöschten Zeilen

Datei anzeigen

@ -46,8 +46,22 @@
} }
this.move(EnumMoveType.SELF, this.motX, this.motY, this.motZ); this.move(EnumMoveType.SELF, this.motX, this.motY, this.motZ);
@@ -153,7 +172,7 @@ @@ -148,12 +167,18 @@
} if (!itemstack.isEmpty() && itemstack.h()) {
int i = Math.min(this.d(this.value), itemstack.i());
- this.value -= this.c(i);
- itemstack.setData(itemstack.i() - i);
- }
+ // CraftBukkit start
+ org.bukkit.event.player.PlayerItemMendEvent event = CraftEventFactory.callPlayerItemMendEvent(entityhuman, this, itemstack, i);
+ i = event.getRepairAmount();
+ if (!event.isCancelled()) {
+ this.value -= this.c(i);
+ itemstack.setData(itemstack.i() - i);
+ }
+ // CraftBukkit end
+ }
if (this.value > 0) { if (this.value > 0) {
- entityhuman.giveExp(this.value); - entityhuman.giveExp(this.value);
@ -55,7 +69,7 @@
} }
this.die(); this.die();
@@ -175,6 +194,24 @@ @@ -175,6 +200,24 @@
} }
public static int getOrbValue(int i) { public static int getOrbValue(int i) {

Datei anzeigen

@ -36,6 +36,7 @@ import org.bukkit.entity.AreaEffectCloud;
import org.bukkit.entity.Arrow; import org.bukkit.entity.Arrow;
import org.bukkit.entity.Creeper; import org.bukkit.entity.Creeper;
import org.bukkit.entity.EntityType; import org.bukkit.entity.EntityType;
import org.bukkit.entity.ExperienceOrb;
import org.bukkit.entity.Firework; import org.bukkit.entity.Firework;
import org.bukkit.entity.LightningStrike; import org.bukkit.entity.LightningStrike;
import org.bukkit.entity.LivingEntity; import org.bukkit.entity.LivingEntity;
@ -647,6 +648,14 @@ public class CraftEventFactory {
return event; return event;
} }
public static PlayerItemMendEvent callPlayerItemMendEvent(EntityHuman entity, EntityExperienceOrb orb, net.minecraft.server.ItemStack nmsMendedItem, int repairAmount) {
Player player = (Player) entity.getBukkitEntity();
org.bukkit.inventory.ItemStack bukkitStack = CraftItemStack.asCraftMirror(nmsMendedItem);
PlayerItemMendEvent event = new PlayerItemMendEvent(player, bukkitStack, (ExperienceOrb) orb.getBukkitEntity(), repairAmount);
Bukkit.getPluginManager().callEvent(event);
return event;
}
public static boolean handleBlockGrowEvent(World world, int x, int y, int z, net.minecraft.server.Block type, int data) { public static boolean handleBlockGrowEvent(World world, int x, int y, int z, net.minecraft.server.Block type, int data) {
Block block = world.getWorld().getBlockAt(x, y, z); Block block = world.getWorld().getBlockAt(x, y, z);
CraftBlockState state = (CraftBlockState) block.getState(); CraftBlockState state = (CraftBlockState) block.getState();