From 11e612c789ef0c727f2d9bcf2d5b4433536ece02 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Sun, 29 Nov 2020 13:39:12 +0100 Subject: [PATCH] Pull out safe tile entity getter into utility class. --- .../cil/oc2/common/network/MessageUtils.java | 11 ++++------ ...TileEntities.java => TileEntityUtils.java} | 2 +- .../li/cil/oc2/common/util/WorldUtils.java | 20 +++++++++++++++++++ 3 files changed, 25 insertions(+), 8 deletions(-) rename src/main/java/li/cil/oc2/common/util/{TileEntities.java => TileEntityUtils.java} (97%) create mode 100644 src/main/java/li/cil/oc2/common/util/WorldUtils.java diff --git a/src/main/java/li/cil/oc2/common/network/MessageUtils.java b/src/main/java/li/cil/oc2/common/network/MessageUtils.java index 7b3a7ebb..e8eeb5eb 100644 --- a/src/main/java/li/cil/oc2/common/network/MessageUtils.java +++ b/src/main/java/li/cil/oc2/common/network/MessageUtils.java @@ -1,11 +1,11 @@ package li.cil.oc2.common.network; +import li.cil.oc2.common.util.WorldUtils; import net.minecraft.client.Minecraft; import net.minecraft.client.world.ClientWorld; import net.minecraft.entity.player.ServerPlayerEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.ChunkPos; import net.minecraft.world.server.ServerWorld; import net.minecraftforge.fml.network.NetworkEvent; @@ -21,12 +21,9 @@ public final class MessageUtils { } final ServerWorld world = player.getServerWorld(); - final ChunkPos chunkPos = new ChunkPos(pos); - if (world.chunkExists(chunkPos.x, chunkPos.z)) { - final TileEntity tileEntity = world.getTileEntity(pos); - if (type.isInstance(tileEntity)) { - callback.accept((T) tileEntity); - } + final TileEntity tileEntity = WorldUtils.getTileEntityIfChunkExists(world, pos); + if (type.isInstance(tileEntity)) { + callback.accept((T) tileEntity); } } diff --git a/src/main/java/li/cil/oc2/common/util/TileEntities.java b/src/main/java/li/cil/oc2/common/util/TileEntityUtils.java similarity index 97% rename from src/main/java/li/cil/oc2/common/util/TileEntities.java rename to src/main/java/li/cil/oc2/common/util/TileEntityUtils.java index 0692b9c9..5430b051 100644 --- a/src/main/java/li/cil/oc2/common/util/TileEntities.java +++ b/src/main/java/li/cil/oc2/common/util/TileEntityUtils.java @@ -16,7 +16,7 @@ import java.util.Map; import java.util.Optional; import java.util.function.Supplier; -public final class TileEntities { +public final class TileEntityUtils { private static final Logger LOGGER = LogManager.getLogger(); // We map to suppliers for tests, where assigned capability statics may change. diff --git a/src/main/java/li/cil/oc2/common/util/WorldUtils.java b/src/main/java/li/cil/oc2/common/util/WorldUtils.java new file mode 100644 index 00000000..4c75b09b --- /dev/null +++ b/src/main/java/li/cil/oc2/common/util/WorldUtils.java @@ -0,0 +1,20 @@ +package li.cil.oc2.common.util; + +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.math.BlockPos; +import net.minecraft.util.math.ChunkPos; +import net.minecraft.world.World; + +import javax.annotation.Nullable; + +public final class WorldUtils { + @Nullable + public static TileEntity getTileEntityIfChunkExists(final World world, final BlockPos pos) { + final ChunkPos chunkPos = new ChunkPos(pos); + if (!world.chunkExists(chunkPos.x, chunkPos.z)) { + return null; + } + + return world.getTileEntity(pos); + } +}