From c350e42ab9b9016dfc83be7ac026d7e4ecd7c253 Mon Sep 17 00:00:00 2001 From: runcows Date: Sat, 27 Dec 2025 12:16:21 -0500 Subject: [PATCH 1/4] RP add backwards compat for on_shelf --- gm4/plugins/backwards.py | 31 ++++++++++++++++++++++++++++++- resource_pack/beet.yaml | 6 ++++++ 2 files changed, 36 insertions(+), 1 deletion(-) diff --git a/gm4/plugins/backwards.py b/gm4/plugins/backwards.py index db4a799a84..e522205c21 100644 --- a/gm4/plugins/backwards.py +++ b/gm4/plugins/backwards.py @@ -9,8 +9,11 @@ def beet_default(ctx: Context): yield - # edited item model definition - replaced head with player_head + # edited item model definitions + # - replaced head with player_head backport(ctx.assets, 63, playerhead_models_1_21_5) + # - added on_shelf + backport(ctx.assets, 64, on_shelf_models_1_21_9) # renamed gamerules backport(ctx.data, 92, rename_gamerules) @@ -48,6 +51,32 @@ def recursive_replace(compound: dict[str,Any]): recursive_replace(overlay.data) return overlay +def on_shelf_models_1_21_9(id: str, resource: NamespaceFile): + if not isinstance(resource, ItemModel): + return None + + def recursive_replace(compound: dict[str,Any]): + for key, val in compound.items(): + # recurse down the tree + if key == "when": + if isinstance(compound[key], list) and "on_shelf" in val: + compound[key].remove("on_shelf") + elif isinstance(compound[key], str) and val == "on_shelf": + compound.pop(key) + continue + if isinstance(val, list): + for subval in val: # type: ignore + if isinstance(subval, dict): + recursive_replace(subval) # type: ignore + elif isinstance(val, dict): + recursive_replace(val) # type: ignore + + overlay = resource.copy() + recursive_replace(overlay.data) + if overlay != resource: + return overlay + return None + # Only gamerules that are actually used are replaced GAMERULES_RENAMES = { diff --git a/resource_pack/beet.yaml b/resource_pack/beet.yaml index 695a90cf28..46c7aa8494 100644 --- a/resource_pack/beet.yaml +++ b/resource_pack/beet.yaml @@ -13,6 +13,12 @@ resource_pack: min_format: 1 max_format: 63 directory: backport_63 + - formats: + min_inclusive: 1 + max_inclusive: 64 + min_format: 1 + max_format: 64 + directory: backport_64 pipeline: - dev_warning From 2f04d68495c979bf0f4b1bedc2b7a7de4c4cfeac Mon Sep 17 00:00:00 2001 From: runcows Date: Sat, 27 Dec 2025 22:18:51 -0500 Subject: [PATCH 2/4] Add particle textures --- .../models/block/block_compressor_full.json | 3 ++- .../models/block/block_compressor_plate.json | 3 ++- .../assets/gm4_ender_hoppers/models/block/ender_hopper.json | 3 ++- .../gm4_ender_hoppers/models/block/ender_hopper_minecart.json | 3 ++- .../gm4_ender_hoppers/models/block/ender_hopper_side.json | 3 ++- .../assets/gm4_liquid_tanks/models/block/liquid_tank.json | 3 ++- .../assets/gm4_monsters_unbound/models/item/spore/cherry.json | 3 ++- .../assets/gm4_monsters_unbound/models/item/spore/default.json | 3 ++- .../gm4_monsters_unbound/models/item/spore/flowering.json | 3 ++- .../assets/gm4_relocators/models/item/relocator_empty.json | 3 ++- .../assets/gm4_relocators/models/item/relocator_full.json | 3 ++- gm4_smelteries/ore_display.py | 1 + 12 files changed, 23 insertions(+), 11 deletions(-) diff --git a/gm4_block_compressors/assets/gm4_block_compressors/models/block/block_compressor_full.json b/gm4_block_compressors/assets/gm4_block_compressors/models/block/block_compressor_full.json index c2d6517125..6ed58c5043 100644 --- a/gm4_block_compressors/assets/gm4_block_compressors/models/block/block_compressor_full.json +++ b/gm4_block_compressors/assets/gm4_block_compressors/models/block/block_compressor_full.json @@ -5,6 +5,7 @@ "bottom": "minecraft:block/furnace_top", "top": "gm4_block_compressors:block/block_compressor_top", "front": "gm4_block_compressors:block/block_compressor_side", - "plate": "gm4_block_compressors:block/block_compressor_plate" + "plate": "gm4_block_compressors:block/block_compressor_plate", + "particle": "gm4_block_compressors:block/block_compressor_side" } } diff --git a/gm4_block_compressors/assets/gm4_block_compressors/models/block/block_compressor_plate.json b/gm4_block_compressors/assets/gm4_block_compressors/models/block/block_compressor_plate.json index 52a91037ec..0eb1cd525b 100644 --- a/gm4_block_compressors/assets/gm4_block_compressors/models/block/block_compressor_plate.json +++ b/gm4_block_compressors/assets/gm4_block_compressors/models/block/block_compressor_plate.json @@ -1,6 +1,7 @@ { "parent": "gm4:block/plate", "textures": { - "top": "gm4_block_compressors:block/block_compressor_plate" + "top": "gm4_block_compressors:block/block_compressor_plate", + "particle": "gm4_block_compressors:block/block_compressor_plate" } } diff --git a/gm4_ender_hoppers/assets/gm4_ender_hoppers/models/block/ender_hopper.json b/gm4_ender_hoppers/assets/gm4_ender_hoppers/models/block/ender_hopper.json index 8aec73c5ae..02d895d042 100644 --- a/gm4_ender_hoppers/assets/gm4_ender_hoppers/models/block/ender_hopper.json +++ b/gm4_ender_hoppers/assets/gm4_ender_hoppers/models/block/ender_hopper.json @@ -2,7 +2,8 @@ "textures": { "side": "gm4_ender_hoppers:block/ender_hopper_eye_side", "top": "gm4_ender_hoppers:block/ender_hopper_eye_top", - "bottom": "gm4_ender_hoppers:block/ender_hopper_eye_bottom" + "bottom": "gm4_ender_hoppers:block/ender_hopper_eye_bottom", + "particle": "gm4_ender_hoppers:block/ender_hopper_eye_side" }, "elements": [ { diff --git a/gm4_ender_hoppers/assets/gm4_ender_hoppers/models/block/ender_hopper_minecart.json b/gm4_ender_hoppers/assets/gm4_ender_hoppers/models/block/ender_hopper_minecart.json index 8aec73c5ae..5a6d23c0ef 100644 --- a/gm4_ender_hoppers/assets/gm4_ender_hoppers/models/block/ender_hopper_minecart.json +++ b/gm4_ender_hoppers/assets/gm4_ender_hoppers/models/block/ender_hopper_minecart.json @@ -2,7 +2,8 @@ "textures": { "side": "gm4_ender_hoppers:block/ender_hopper_eye_side", "top": "gm4_ender_hoppers:block/ender_hopper_eye_top", - "bottom": "gm4_ender_hoppers:block/ender_hopper_eye_bottom" + "bottom": "gm4_ender_hoppers:block/ender_hopper_eye_bottom", + "particle": "gm4_ender_hoppers:block/ender_hopper_eye_side" }, "elements": [ { diff --git a/gm4_ender_hoppers/assets/gm4_ender_hoppers/models/block/ender_hopper_side.json b/gm4_ender_hoppers/assets/gm4_ender_hoppers/models/block/ender_hopper_side.json index 8aec73c5ae..5a6d23c0ef 100644 --- a/gm4_ender_hoppers/assets/gm4_ender_hoppers/models/block/ender_hopper_side.json +++ b/gm4_ender_hoppers/assets/gm4_ender_hoppers/models/block/ender_hopper_side.json @@ -2,7 +2,8 @@ "textures": { "side": "gm4_ender_hoppers:block/ender_hopper_eye_side", "top": "gm4_ender_hoppers:block/ender_hopper_eye_top", - "bottom": "gm4_ender_hoppers:block/ender_hopper_eye_bottom" + "bottom": "gm4_ender_hoppers:block/ender_hopper_eye_bottom", + "particle": "gm4_ender_hoppers:block/ender_hopper_eye_side" }, "elements": [ { diff --git a/gm4_liquid_tanks/assets/gm4_liquid_tanks/models/block/liquid_tank.json b/gm4_liquid_tanks/assets/gm4_liquid_tanks/models/block/liquid_tank.json index e75b88000f..4453fc7c86 100644 --- a/gm4_liquid_tanks/assets/gm4_liquid_tanks/models/block/liquid_tank.json +++ b/gm4_liquid_tanks/assets/gm4_liquid_tanks/models/block/liquid_tank.json @@ -2,7 +2,8 @@ "textures": { "top": "gm4_liquid_tanks:block/liquid_tank_top", "bottom": "gm4_liquid_tanks:block/liquid_tank_top", - "side": "gm4_liquid_tanks:block/liquid_tank_side" + "side": "gm4_liquid_tanks:block/liquid_tank_side", + "particle": "gm4_liquid_tanks:block/liquid_tank_side" }, "elements": [ { diff --git a/gm4_monsters_unbound/assets/gm4_monsters_unbound/models/item/spore/cherry.json b/gm4_monsters_unbound/assets/gm4_monsters_unbound/models/item/spore/cherry.json index 9cd3170d59..dc040b55b4 100644 --- a/gm4_monsters_unbound/assets/gm4_monsters_unbound/models/item/spore/cherry.json +++ b/gm4_monsters_unbound/assets/gm4_monsters_unbound/models/item/spore/cherry.json @@ -1,6 +1,7 @@ { "textures": { - "1": "gm4_monsters_unbound:item/spore/cherry" + "1": "gm4_monsters_unbound:item/spore/cherry", + "particle": "gm4_monsters_unbound:item/spore/cherry" }, "elements": [ { diff --git a/gm4_monsters_unbound/assets/gm4_monsters_unbound/models/item/spore/default.json b/gm4_monsters_unbound/assets/gm4_monsters_unbound/models/item/spore/default.json index c1b2d877f8..533808702a 100644 --- a/gm4_monsters_unbound/assets/gm4_monsters_unbound/models/item/spore/default.json +++ b/gm4_monsters_unbound/assets/gm4_monsters_unbound/models/item/spore/default.json @@ -1,6 +1,7 @@ { "textures": { - "1": "gm4_monsters_unbound:item/spore/default" + "1": "gm4_monsters_unbound:item/spore/default", + "particle": "gm4_monsters_unbound:item/spore/default" }, "elements": [ { diff --git a/gm4_monsters_unbound/assets/gm4_monsters_unbound/models/item/spore/flowering.json b/gm4_monsters_unbound/assets/gm4_monsters_unbound/models/item/spore/flowering.json index 575da0e580..f694d7a06b 100644 --- a/gm4_monsters_unbound/assets/gm4_monsters_unbound/models/item/spore/flowering.json +++ b/gm4_monsters_unbound/assets/gm4_monsters_unbound/models/item/spore/flowering.json @@ -1,6 +1,7 @@ { "textures": { - "1": "gm4_monsters_unbound:item/spore/flowering" + "1": "gm4_monsters_unbound:item/spore/flowering", + "particle": "gm4_monsters_unbound:item/spore/flowering" }, "elements": [ { diff --git a/gm4_relocators/assets/gm4_relocators/models/item/relocator_empty.json b/gm4_relocators/assets/gm4_relocators/models/item/relocator_empty.json index f9c4302a97..12e0204448 100644 --- a/gm4_relocators/assets/gm4_relocators/models/item/relocator_empty.json +++ b/gm4_relocators/assets/gm4_relocators/models/item/relocator_empty.json @@ -2,6 +2,7 @@ "parent": "gm4_relocators:item/relocator_base", "textures": { "outer": "gm4_relocators:item/relocator_outer", - "core": "gm4_relocators:item/relocator_core" + "core": "gm4_relocators:item/relocator_core", + "particle": "gm4_relocators:item/relocator_outer" } } diff --git a/gm4_relocators/assets/gm4_relocators/models/item/relocator_full.json b/gm4_relocators/assets/gm4_relocators/models/item/relocator_full.json index 4cd726de81..1f8467bb1d 100644 --- a/gm4_relocators/assets/gm4_relocators/models/item/relocator_full.json +++ b/gm4_relocators/assets/gm4_relocators/models/item/relocator_full.json @@ -2,6 +2,7 @@ "parent": "gm4_relocators:item/relocator_base", "textures": { "outer": "gm4_relocators:item/relocator_outer", - "core": "gm4_relocators:item/relocator_core_full" + "core": "gm4_relocators:item/relocator_core_full", + "particle": "gm4_relocators:item/relocator_outer" } } diff --git a/gm4_smelteries/ore_display.py b/gm4_smelteries/ore_display.py index 76d0646d26..770abe0d62 100644 --- a/gm4_smelteries/ore_display.py +++ b/gm4_smelteries/ore_display.py @@ -22,6 +22,7 @@ def create_models(self, config: ModelData, models_container: NamespaceProxy[Mode "textures":{ "top": f"gm4_smelteries:block/ore_display/{reference}_top", "side": f"gm4_smelteries:block/ore_display/{reference}_side", + "particle": f"gm4_smelteries:block/ore_display/{reference}_side", } }) return [m] From 15b3ddf8ca31c5d3bcb33021ce6a83af349c9523 Mon Sep 17 00:00:00 2001 From: runcows Date: Tue, 30 Dec 2025 22:12:02 -0500 Subject: [PATCH 3/4] Move blocks atlas to items and remove entity import --- base/assets/minecraft/atlases/blocks.json | 41 +------------------ base/assets/minecraft/atlases/items.json | 30 ++++++++++++++ .../assets/minecraft/atlases/blocks.json | 30 ++++++++++++++ base/beet.yaml | 1 + resource_pack/beet.yaml | 6 +++ 5 files changed, 68 insertions(+), 40 deletions(-) create mode 100644 base/assets/minecraft/atlases/items.json create mode 100644 base/backport_72/assets/minecraft/atlases/blocks.json diff --git a/base/assets/minecraft/atlases/blocks.json b/base/assets/minecraft/atlases/blocks.json index cc598b251b..bd046f46c6 100644 --- a/base/assets/minecraft/atlases/blocks.json +++ b/base/assets/minecraft/atlases/blocks.json @@ -1,42 +1,3 @@ { - "sources": [ - { - "type": "directory", - "source": "gui", - "prefix": "gui/" - }, - { - "type": "directory", - "source": "entity", - "prefix": "entity/" - }, - { - "type": "filter", - "pattern":{ - "namespace": "^((?!gm4).)*$", - "path": "gui" - } - }, - { - "type": "filter", - "pattern": { - "namespace": "gm4_*", - "path": "gui/container" - } - }, - { - "type": "filter", - "pattern": { - "namespace": "minecraft", - "path": "entity/fishing_hook" - } - }, - { - "type": "filter", - "pattern": { - "namespace": "gm4_guidebook", - "path": "gui/" - } - } - ] + "sources": [] } diff --git a/base/assets/minecraft/atlases/items.json b/base/assets/minecraft/atlases/items.json new file mode 100644 index 0000000000..7b950f715e --- /dev/null +++ b/base/assets/minecraft/atlases/items.json @@ -0,0 +1,30 @@ +{ + "sources": [ + { + "type": "directory", + "source": "gui", + "prefix": "gui/" + }, + { + "type": "filter", + "pattern":{ + "namespace": "^((?!gm4).)*$", + "path": "gui" + } + }, + { + "type": "filter", + "pattern": { + "namespace": "gm4_*", + "path": "gui/container" + } + }, + { + "type": "filter", + "pattern": { + "namespace": "gm4_guidebook", + "path": "gui/" + } + } + ] +} diff --git a/base/backport_72/assets/minecraft/atlases/blocks.json b/base/backport_72/assets/minecraft/atlases/blocks.json new file mode 100644 index 0000000000..7b950f715e --- /dev/null +++ b/base/backport_72/assets/minecraft/atlases/blocks.json @@ -0,0 +1,30 @@ +{ + "sources": [ + { + "type": "directory", + "source": "gui", + "prefix": "gui/" + }, + { + "type": "filter", + "pattern":{ + "namespace": "^((?!gm4).)*$", + "path": "gui" + } + }, + { + "type": "filter", + "pattern": { + "namespace": "gm4_*", + "path": "gui/container" + } + }, + { + "type": "filter", + "pattern": { + "namespace": "gm4_guidebook", + "path": "gui/" + } + } + ] +} diff --git a/base/beet.yaml b/base/beet.yaml index 983cf6b0bc..f91e58c189 100644 --- a/base/beet.yaml +++ b/base/beet.yaml @@ -8,6 +8,7 @@ data_pack: resource_pack: load: assets: assets + backport_72: backport_72 require: - gm4.plugins.resource_pack diff --git a/resource_pack/beet.yaml b/resource_pack/beet.yaml index 46c7aa8494..2b4bd876fd 100644 --- a/resource_pack/beet.yaml +++ b/resource_pack/beet.yaml @@ -19,6 +19,12 @@ resource_pack: min_format: 1 max_format: 64 directory: backport_64 + - formats: + min_inclusive: 1 + max_inclusive: 72 + min_format: 1 + max_format: 72 + directory: backport_72 pipeline: - dev_warning From b222772e1244db73ddcae9ad99ee7c11d84a394c Mon Sep 17 00:00:00 2001 From: runcows Date: Thu, 1 Jan 2026 19:40:40 -0500 Subject: [PATCH 4/4] adjust my backwards plugin changes to be neater --- gm4/plugins/backwards.py | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/gm4/plugins/backwards.py b/gm4/plugins/backwards.py index e522205c21..782888f88b 100644 --- a/gm4/plugins/backwards.py +++ b/gm4/plugins/backwards.py @@ -73,9 +73,7 @@ def recursive_replace(compound: dict[str,Any]): overlay = resource.copy() recursive_replace(overlay.data) - if overlay != resource: - return overlay - return None + return overlay if overlay != resource else None # Only gamerules that are actually used are replaced