Pull out safe tile entity getter into utility class.

This commit is contained in:
Florian Nücke
2020-11-29 13:39:12 +01:00
parent 68666c6751
commit 11e612c789
3 changed files with 25 additions and 8 deletions

View File

@@ -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);
}
}

View File

@@ -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.

View File

@@ -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);
}
}