Pull out safe tile entity getter into utility class.
This commit is contained in:
@@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
20
src/main/java/li/cil/oc2/common/util/WorldUtils.java
Normal file
20
src/main/java/li/cil/oc2/common/util/WorldUtils.java
Normal 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);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user