2024-12-11 22:26:55 +01:00
|
|
|
--- a/net/minecraft/world/item/EndCrystalItem.java
|
|
|
|
+++ b/net/minecraft/world/item/EndCrystalItem.java
|
2023-08-15 21:04:55 +02:00
|
|
|
@@ -30,7 +30,7 @@
|
|
|
|
if (!iblockdata.is(Blocks.OBSIDIAN) && !iblockdata.is(Blocks.BEDROCK)) {
|
|
|
|
return InteractionResult.FAIL;
|
|
|
|
} else {
|
|
|
|
- BlockPos blockposition1 = blockposition.above();
|
|
|
|
+ BlockPos blockposition1 = blockposition.above(); final BlockPos aboveBlockPosition = blockposition1; // Paper - OBFHELPER
|
|
|
|
|
|
|
|
if (!world.isEmptyBlock(blockposition1)) {
|
|
|
|
return InteractionResult.FAIL;
|
|
|
|
@@ -47,12 +47,18 @@
|
2024-12-11 22:26:55 +01:00
|
|
|
EndCrystal entityendercrystal = new EndCrystal(world, d0 + 0.5D, d1, d2 + 0.5D);
|
|
|
|
|
|
|
|
entityendercrystal.setShowBottom(false);
|
|
|
|
+ // CraftBukkit start
|
|
|
|
+ if (org.bukkit.craftbukkit.event.CraftEventFactory.callEntityPlaceEvent(context, entityendercrystal).isCancelled()) {
|
2023-08-23 22:22:09 +02:00
|
|
|
+ if (context.getPlayer() != null) context.getPlayer().containerMenu.sendAllDataToRemote(); // Paper - Fix inventory desync
|
2024-12-11 22:26:55 +01:00
|
|
|
+ return InteractionResult.FAIL;
|
|
|
|
+ }
|
|
|
|
+ // CraftBukkit end
|
|
|
|
world.addFreshEntity(entityendercrystal);
|
|
|
|
world.gameEvent((Entity) context.getPlayer(), (Holder) GameEvent.ENTITY_PLACE, blockposition1);
|
|
|
|
EndDragonFight enderdragonbattle = ((ServerLevel) world).getDragonFight();
|
2023-08-15 21:04:55 +02:00
|
|
|
|
|
|
|
if (enderdragonbattle != null) {
|
|
|
|
- enderdragonbattle.tryRespawn();
|
|
|
|
+ enderdragonbattle.tryRespawn(aboveBlockPosition); // Paper - Perf: Do crystal-portal proximity check before entity lookup
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|