mirror of
https://gitlab.bixilon.de/bixilon/pixlyzer.git
synced 2025-09-09 07:07:39 -04:00
1.20 blocks: extract replaceable and requiresTool
This commit is contained in:
parent
cb8273ab55
commit
3369d48d6e
@ -1 +1 @@
|
||||
Subproject commit a0d489e919bd62e169474e34cf60dfdfebeb6954
|
||||
Subproject commit 728e6e6adf0e4586067bfb595ce43232e00c302c
|
@ -63,6 +63,8 @@ object BlockGenerator : Generator(
|
||||
blockData["jump_velocity_multiplier"] = it
|
||||
}
|
||||
}
|
||||
BLOCK_STATE_REQUIRES_TOOL?.getBoolean(block.defaultState)?.let { if (it) blockData["requires_tool"] = it }
|
||||
BLOCK_STATE_REPLACEABLE?.getBoolean(block.defaultState)?.let { if (it) blockData["replaceable"] = it }
|
||||
blockData["default_state"] = Block.getRawIdFromState(block.defaultState)
|
||||
if (block.hasDynamicBounds()) {
|
||||
blockData["has_dynamic_shape"] = block.hasDynamicBounds()
|
||||
@ -90,7 +92,7 @@ object BlockGenerator : Generator(
|
||||
|
||||
val hasColorProperties = (TINT_PROPERTIES_METHOD?.invoke(DEFAULT_BLOCK_COLORS, block) as Set<*>?)?.size?.let { it > 0 } ?: let {
|
||||
val blockColorProviderList = BLOCK_COLORS_PROVIDERS_ID_LIST!!.get(DEFAULT_BLOCK_COLORS)
|
||||
ID_LIST_GET_METHOD.invoke(blockColorProviderList, BlockGenerator.REGISTRY.getRawId(block)) != null
|
||||
ID_LIST_GET_METHOD.invoke(blockColorProviderList, REGISTRY.getRawId(block)) != null
|
||||
}
|
||||
|
||||
MATERIAL?.let { blockData["material"] = MaterialGenerator.MATERIALS.inverse()[it.invoke(block)].toString() }
|
||||
@ -107,12 +109,15 @@ object BlockGenerator : Generator(
|
||||
Blocks.GRASS_BLOCK, Blocks.FERN, Blocks.GRASS, Blocks.POTTED_FERN -> {
|
||||
blockData["tint"] = "minecraft:grass_tint"
|
||||
}
|
||||
|
||||
Blocks.SPRUCE_LEAVES, Blocks.BIRCH_LEAVES, Blocks.ATTACHED_MELON_STEM, Blocks.ATTACHED_PUMPKIN_STEM -> {
|
||||
blockData["tint_color"] = DEFAULT_BLOCK_COLORS.getColor(block.defaultState, null, null, 1)
|
||||
}
|
||||
|
||||
Blocks.OAK_LEAVES, Blocks.JUNGLE_LEAVES, Blocks.ACACIA_LEAVES, Blocks.DARK_OAK_LEAVES, Blocks.VINE -> {
|
||||
blockData["tint"] = "minecraft:foliage_tint"
|
||||
}
|
||||
|
||||
Blocks.WATER, Blocks.BUBBLE_COLUMN, Blocks.CAULDRON, waterCauldronBlock -> {
|
||||
blockData["tint"] = "minecraft:water_tint"
|
||||
}
|
||||
@ -162,6 +167,7 @@ object BlockGenerator : Generator(
|
||||
when (blockData["tint"]?.toString()) {
|
||||
"minecraft:foliage_tint", "minecraft:lily_pad_tint", "minecraft:grass_tint" -> {
|
||||
}
|
||||
|
||||
else -> {
|
||||
if (tintColor != -1 && tintColor != 0) {
|
||||
stateData["tint_color"] = tintColor
|
||||
@ -302,8 +308,6 @@ object BlockGenerator : Generator(
|
||||
|
||||
private val MATERIAL = getGetter(Block::class.java, "getMaterial")
|
||||
|
||||
private val BLOCK_GET_HARDNESS_METHOD = getClass("net.minecraft.block.AbstractBlock")?.getGetter("getHardness")
|
||||
private val BLOCK_SETTINGS_FIELD = getField(getClass("net.minecraft.block.AbstractBlock"), "settings")
|
||||
|
||||
private val BLOCK_GET_MAX_OFFSET = getGetter(getClass("net.minecraft.block.AbstractBlock"), "getMaxModelOffset")
|
||||
private val BLOCK_GET_OFFSET_TYPE = getClass("net.minecraft.block.AbstractBlock", "net.minecraft.block.Block")!!.getGetter("getOffsetType")
|
||||
@ -342,13 +346,15 @@ object BlockGenerator : Generator(
|
||||
}
|
||||
|
||||
private val BLOCK_STATE_BASE_CLASS = getClass("net.minecraft.block.AbstractBlock\$AbstractBlockState", "net.minecraft.world.level.block.state.BlockBehaviour\$BlockStateBase", "net.minecraft.world.level.block.state.BlockState", "net.minecraft.block.BlockState")!!
|
||||
private val BLOCK_STATE_GET_HARDNESS_METHOD = getClass("net.minecraft.block.AbstractBlock\$AbstractBlockState", "net.minecraft.block.BlockState")!!.getMethod("getHardness", BlockView::class.java, BlockPos::class.java)
|
||||
private val BLOCK_STATE_OWNER_FIELD = getField(getClass("net.minecraft.state.AbstractPropertyContainer"), "owner") ?: getField(getClass("net.minecraft.state.State"), "owner") ?: getField(getClass("net.minecraft.state.AbstractState"), "owner") ?: getField(getClass("net.minecraft.world.level.block.state.AbstractStateHolder"), "owner")!!
|
||||
private val BLOCK_STATE_CACHE_FIELD = BLOCK_STATE_BASE_CLASS.getDeclaredField("shapeCache")
|
||||
|
||||
private val REQUIRES_CORRECT_TOOL_FOR_DROP_FIELDS = getField(getClass("net.minecraft.block.AbstractBlock\$AbstractBlockState", "net.minecraft.block.BlockState"), "toolRequired")
|
||||
private val BLOCK_STATE_OFFSET_FIELD = BLOCK_STATE_BASE_CLASS.getGetter("getOffsetType", "method_43280")
|
||||
|
||||
private val BLOCK_STATE_REQUIRES_TOOL = getField(BLOCK_STATE_BASE_CLASS, "toolRequired")
|
||||
private val BLOCK_STATE_REPLACEABLE = getField(BLOCK_STATE_BASE_CLASS, "replaceable")
|
||||
|
||||
private lateinit var BLOCK_STATE_CACHE_CLASS: Class<*>
|
||||
|
||||
init {
|
||||
|
@ -44,7 +44,7 @@ object MaterialGenerator : Generator(
|
||||
if (CLASS == null) return HashBiMap.create()
|
||||
val materials: HashBiMap<Identifier, Any> = HashBiMap.create()
|
||||
for (field in CLASS.declaredFields) {
|
||||
if (field.type != CLASS) {
|
||||
if (field.type.name != CLASS.name) {
|
||||
continue
|
||||
}
|
||||
if (!Modifier.isStatic(field.modifiers)) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user