Fix some NPE for EntityCompostItemEvent (#9169)

This commit is contained in:
Lulu13022002 2023-05-03 13:07:51 +02:00
parent af12848e70
commit 2ba17103b9
2 changed files with 18 additions and 18 deletions

View File

@ -12,14 +12,14 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
@@ -0,0 +0,0 @@ @@ -0,0 +0,0 @@
+package io.papermc.paper.entity; +package io.papermc.paper.entity;
+ +
+import org.bukkit.Location; +import io.papermc.paper.math.Position;
+import org.bukkit.entity.Entity; +import org.bukkit.entity.Entity;
+import org.bukkit.entity.LivingEntity; +import org.bukkit.entity.LivingEntity;
+ +
+/** +/**
+ * Represents what part of the entity should be used when determining where to face a location/entity. + * Represents what part of the entity should be used when determining where to face a position/entity.
+ * + *
+ * @see org.bukkit.entity.Player#lookAt(Location, LookAnchor) + * @see org.bukkit.entity.Player#lookAt(Position, LookAnchor)
+ * @see org.bukkit.entity.Player#lookAt(Entity, LookAnchor, LookAnchor) + * @see org.bukkit.entity.Player#lookAt(Entity, LookAnchor, LookAnchor)
+ */ + */
+@org.jetbrains.annotations.ApiStatus.Experimental +@org.jetbrains.annotations.ApiStatus.Experimental
@ -194,10 +194,10 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
+ void lookAt(double x, double y, double z, @NotNull io.papermc.paper.entity.LookAnchor playerAnchor); + void lookAt(double x, double y, double z, @NotNull io.papermc.paper.entity.LookAnchor playerAnchor);
+ +
+ /** + /**
+ * Causes the player to look towards the given location. + * Causes the player to look towards the given position.
+ * + *
+ * @param position Position to look at in the player's current world + * @param position Position to look at in the player's current world
+ * @param playerAnchor What part of player should face the location + * @param playerAnchor What part of the player should face the given position
+ */ + */
+ @org.jetbrains.annotations.ApiStatus.Experimental + @org.jetbrains.annotations.ApiStatus.Experimental
+ default void lookAt(@NotNull io.papermc.paper.math.Position position, @NotNull io.papermc.paper.entity.LookAnchor playerAnchor) { + default void lookAt(@NotNull io.papermc.paper.math.Position position, @NotNull io.papermc.paper.entity.LookAnchor playerAnchor) {

View File

@ -9,27 +9,27 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000
--- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java --- a/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
+++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java +++ b/src/main/java/net/minecraft/world/level/block/ComposterBlock.java
@@ -0,0 +0,0 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { @@ -0,0 +0,0 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
return InteractionResult.sidedSuccess(world.isClientSide); // Paper start - EntityChangeBlockEvent
} double rand = world.getRandom().nextDouble();
BlockState iblockdata1 = ComposterBlock.addItem(player, state, world, pos, itemstack, rand); BlockState dummyBlockState = ComposterBlock.addItem(player, state, org.bukkit.craftbukkit.util.DummyGeneratorAccess.INSTANCE, pos, itemstack, rand);
+ if (iblockdata1 == null) { + if (dummyBlockState == null) {
+ return InteractionResult.PASS; + return InteractionResult.PASS;
+ } + }
// Paper end if (state != dummyBlockState && org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(player, pos, dummyBlockState).isCancelled()) { // if block state will change and event cancelled
return InteractionResult.sidedSuccess(world.isClientSide);
world.levelEvent(1500, pos, state != iblockdata1 ? 1 : 0); }
@@ -0,0 +0,0 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { @@ -0,0 +0,0 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
return state; // CraftBukkit start
} double rand = world.getRandom().nextDouble();
iblockdata1 = ComposterBlock.addItem(user, state, world, pos, stack, rand); BlockState iblockdata1 = ComposterBlock.addItem(user, state, DummyGeneratorAccess.INSTANCE, pos, stack, rand);
+ // Paper start + // Paper start
+ if (iblockdata1 == null) { + if (iblockdata1 == null) {
+ return state; + return state;
+ } + }
+ // Paper end + // Paper end
// CraftBukkit end if (state == iblockdata1 || org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(user, pos, iblockdata1).isCancelled()) {
return state;
stack.shrink(1); }
@@ -0,0 +0,0 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder { @@ -0,0 +0,0 @@ public class ComposterBlock extends Block implements WorldlyContainerHolder {
int i = (Integer) iblockdata.getValue(ComposterBlock.LEVEL); int i = (Integer) iblockdata.getValue(ComposterBlock.LEVEL);
float f = ComposterBlock.COMPOSTABLES.getFloat(itemstack.getItem()); float f = ComposterBlock.COMPOSTABLES.getFloat(itemstack.getItem());