From b2cb09b4ee548c51e73094b741400fe65d6e7451 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Tue, 1 Dec 2020 02:40:44 +0100 Subject: [PATCH] Utility for grabbing a name for a tile entity or block. --- .../bus/TileEntityDeviceBusElement.java | 11 ++----- .../li/cil/oc2/common/util/WorldUtils.java | 32 +++++++++++++++++++ 2 files changed, 34 insertions(+), 9 deletions(-) diff --git a/src/main/java/li/cil/oc2/common/bus/TileEntityDeviceBusElement.java b/src/main/java/li/cil/oc2/common/bus/TileEntityDeviceBusElement.java index 28a9639d..021cc051 100644 --- a/src/main/java/li/cil/oc2/common/bus/TileEntityDeviceBusElement.java +++ b/src/main/java/li/cil/oc2/common/bus/TileEntityDeviceBusElement.java @@ -9,12 +9,10 @@ import li.cil.oc2.common.device.Providers; import li.cil.oc2.common.util.NBTTagIds; import li.cil.oc2.common.util.TileEntityUtils; import li.cil.oc2.common.util.WorldUtils; -import net.minecraft.block.Block; import net.minecraft.nbt.CompoundNBT; import net.minecraft.nbt.ListNBT; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.Direction; -import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; import net.minecraftforge.common.util.INBTSerializable; @@ -66,13 +64,8 @@ public final class TileEntityDeviceBusElement implements INBTSerializable handleNeighborChanged(pos)); } else { identifiableDevice = null; diff --git a/src/main/java/li/cil/oc2/common/util/WorldUtils.java b/src/main/java/li/cil/oc2/common/util/WorldUtils.java index 4c75b09b..0e31e159 100644 --- a/src/main/java/li/cil/oc2/common/util/WorldUtils.java +++ b/src/main/java/li/cil/oc2/common/util/WorldUtils.java @@ -1,6 +1,8 @@ package li.cil.oc2.common.util; +import net.minecraft.block.Block; import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.ChunkPos; import net.minecraft.world.World; @@ -17,4 +19,34 @@ public final class WorldUtils { return world.getTileEntity(pos); } + + @Nullable + public static String getBlockName(final World world, final BlockPos pos) { + final ChunkPos chunkPos = new ChunkPos(pos); + if (!world.chunkExists(chunkPos.x, chunkPos.z)) { + return null; + } + + final TileEntity tileEntity = world.getTileEntity(pos); + if (tileEntity != null) { + final ResourceLocation registryName = tileEntity.getType().getRegistryName(); + if (registryName != null) { + return registryName.toString(); + } + } + + final Block block = world.getBlockState(pos).getBlock(); + { + final ResourceLocation registryName = block.getRegistryName(); + if (registryName != null) { + return registryName.toString(); + } + } + + if (tileEntity != null) { + return tileEntity.getClass().getSimpleName(); + } + + return block.getClass().getSimpleName(); + } }