diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java index 7232b560aa..5d4faad9df 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftBlockEntityState.java @@ -74,7 +74,7 @@ public abstract class CraftBlockEntityState extends Craft this.loadData(state.getSnapshotNBT()); } - private RegistryAccess getRegistryAccess() { + public RegistryAccess getRegistryAccess() { LevelAccessor worldHandle = this.getWorldHandle(); return (worldHandle != null) ? worldHandle.registryAccess() : CraftRegistry.getMinecraftRegistry(); } diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java index 74a39d826a..b824e8527b 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/block/CraftCreatureSpawner.java @@ -50,7 +50,7 @@ public class CraftCreatureSpawner extends CraftBlockEntityState "spawner@" + getLocation(), LOGGER)) { - ValueInput valueInput = TagValueInput.create(scopedCollector, this.getInternalWorld().registryAccess(), spawnData.entityToSpawn()); + ValueInput valueInput = TagValueInput.create(scopedCollector, this.getRegistryAccess(), spawnData.entityToSpawn()); Optional> type = net.minecraft.world.entity.EntityType.by(valueInput); return type.map(CraftEntityType::minecraftToBukkit).orElse(null); } @@ -182,7 +182,7 @@ public class CraftCreatureSpawner extends CraftBlockEntityState "spawner@" + getLocation(), LOGGER)) { - ValueInput valueInput = TagValueInput.create(scopedCollector, this.getInternalWorld().registryAccess(), spawnData.getEntityToSpawn()); + ValueInput valueInput = TagValueInput.create(scopedCollector, this.getRegistryAccess(), spawnData.getEntityToSpawn()); Optional> type = net.minecraft.world.entity.EntityType.by(valueInput); return type.map(CraftEntityType::minecraftToBukkit).map(CraftEntityType::bukkitToString).orElse(null); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartMobSpawner.java b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartMobSpawner.java index c353cb4ad8..ab1a4dceae 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartMobSpawner.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/entity/CraftMinecartMobSpawner.java @@ -4,6 +4,7 @@ import com.google.common.base.Preconditions; import java.util.Collection; import java.util.List; import java.util.Optional; +import net.minecraft.core.RegistryAccess; import net.minecraft.util.ProblemReporter; import net.minecraft.util.RandomSource; import net.minecraft.util.random.WeightedList; @@ -186,6 +187,11 @@ public class CraftMinecartMobSpawner extends CraftMinecart implements SpawnerMin return this.getHandle().level(); } + @Override + public RegistryAccess getRegistryAccess() { + return this.getHandle().registryAccess(); + } + @Override public net.minecraft.core.BlockPos getInternalPosition() { return this.getHandle().blockPosition(); diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/spawner/PaperSharedSpawnerLogic.java b/paper-server/src/main/java/org/bukkit/craftbukkit/spawner/PaperSharedSpawnerLogic.java index 11c7990422..13807ed945 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/spawner/PaperSharedSpawnerLogic.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/spawner/PaperSharedSpawnerLogic.java @@ -34,6 +34,8 @@ public interface PaperSharedSpawnerLogic extends Spawner { Level getInternalWorld(); + RegistryAccess getRegistryAccess(); + BlockPos getInternalPosition(); default boolean isActivated() { return this.getSpawner().isNearPlayer(this.getInternalWorld(), this.getInternalPosition());