Dynamically get beacon base blocks in MC 1.18.2+
This commit is contained in:
+33
-3
@@ -41,6 +41,7 @@ import java.io.IOException;
|
|||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.concurrent.ConcurrentHashMap;
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
@@ -49,12 +50,14 @@ import net.minecraft.core.Registry;
|
|||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.world.level.EmptyBlockGetter;
|
import net.minecraft.world.level.EmptyBlockGetter;
|
||||||
#elif MC_VER == MC_1_18_2 || MC_VER == MC_1_19_2
|
#elif MC_VER == MC_1_18_2 || MC_VER == MC_1_19_2
|
||||||
|
import net.minecraft.tags.TagKey;
|
||||||
import net.minecraft.client.Minecraft;
|
import net.minecraft.client.Minecraft;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.Registry;
|
import net.minecraft.core.Registry;
|
||||||
import net.minecraft.world.level.EmptyBlockGetter;
|
import net.minecraft.world.level.EmptyBlockGetter;
|
||||||
#else
|
#else
|
||||||
|
import net.minecraft.tags.TagKey;
|
||||||
import net.minecraft.world.level.Level;
|
import net.minecraft.world.level.Level;
|
||||||
import net.minecraft.core.BlockPos;
|
import net.minecraft.core.BlockPos;
|
||||||
import net.minecraft.core.registries.Registries;
|
import net.minecraft.core.registries.Registries;
|
||||||
@@ -88,6 +91,15 @@ public class BlockStateWrapper implements IBlockStateWrapper
|
|||||||
public static final String DIRT_RESOURCE_LOCATION_STRING = "minecraft:dirt";
|
public static final String DIRT_RESOURCE_LOCATION_STRING = "minecraft:dirt";
|
||||||
public static final String WATER_RESOURCE_LOCATION_STRING = "minecraft:water";
|
public static final String WATER_RESOURCE_LOCATION_STRING = "minecraft:water";
|
||||||
|
|
||||||
|
/** Used to handle older MC versions that don't have an simple way of getting the block's tags */
|
||||||
|
public static final List<String> OLD_BEACON_BASE_BLOCK_NAME_LIST = Arrays.asList(
|
||||||
|
"iron_block",
|
||||||
|
"gold_block",
|
||||||
|
"diamond_block",
|
||||||
|
"emerald_block",
|
||||||
|
"netherite_block"
|
||||||
|
);
|
||||||
|
|
||||||
public static HashSet<IBlockStateWrapper> rendererIgnoredBlocks = null;
|
public static HashSet<IBlockStateWrapper> rendererIgnoredBlocks = null;
|
||||||
public static HashSet<IBlockStateWrapper> rendererIgnoredCaveBlocks = null;
|
public static HashSet<IBlockStateWrapper> rendererIgnoredCaveBlocks = null;
|
||||||
|
|
||||||
@@ -176,11 +188,14 @@ public class BlockStateWrapper implements IBlockStateWrapper
|
|||||||
String lowercaseSerial = this.serialString.toLowerCase();
|
String lowercaseSerial = this.serialString.toLowerCase();
|
||||||
|
|
||||||
|
|
||||||
// beacon blocks
|
|
||||||
|
// beacon base blocks
|
||||||
|
#if MC_VER <= MC_1_18_2
|
||||||
|
// Older MC versions are harder to get block tags, so just use a static list to determine beacon blocks
|
||||||
boolean isBeaconBaseBlock = false;
|
boolean isBeaconBaseBlock = false;
|
||||||
for (int i = 0; i < LodUtil.BEACON_BASE_BLOCK_NAME_LIST.size(); i++)
|
for (int i = 0; i < OLD_BEACON_BASE_BLOCK_NAME_LIST.size(); i++)
|
||||||
{
|
{
|
||||||
String baseBlockName = LodUtil.BEACON_BASE_BLOCK_NAME_LIST.get(i);
|
String baseBlockName = OLD_BEACON_BASE_BLOCK_NAME_LIST.get(i);
|
||||||
if (lowercaseSerial.contains(baseBlockName))
|
if (lowercaseSerial.contains(baseBlockName))
|
||||||
{
|
{
|
||||||
isBeaconBaseBlock = true;
|
isBeaconBaseBlock = true;
|
||||||
@@ -188,8 +203,23 @@ public class BlockStateWrapper implements IBlockStateWrapper
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
this.isBeaconBaseBlock = isBeaconBaseBlock;
|
this.isBeaconBaseBlock = isBeaconBaseBlock;
|
||||||
|
#else
|
||||||
|
if (blockState != null)
|
||||||
|
{
|
||||||
|
// check if this block has any tags
|
||||||
|
Stream<TagKey<Block>> tags = blockState.getTags();
|
||||||
|
this.isBeaconBaseBlock = tags.anyMatch((TagKey<Block> tag) -> tag.location().getPath().toLowerCase().contains("beacon_base_blocks"));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
this.isBeaconBaseBlock = false;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// beacon block
|
||||||
this.isBeaconBlock = lowercaseSerial.contains("minecraft:beacon");
|
this.isBeaconBlock = lowercaseSerial.contains("minecraft:beacon");
|
||||||
|
|
||||||
|
|
||||||
// beacon tint color
|
// beacon tint color
|
||||||
Color beaconTintColor = null;
|
Color beaconTintColor = null;
|
||||||
if (this.blockState != null
|
if (this.blockState != null
|
||||||
|
|||||||
Reference in New Issue
Block a user