From 48a1ecf7e4eb5b39c9d0d4850b20038c1ea50a44 Mon Sep 17 00:00:00 2001 From: Glitchlabs Date: Tue, 4 Aug 2026 15:43:16 +0200 Subject: [PATCH] + fan_block --- .../5537763371ce84515b2ba566a215878d32b7df83 | 6 +- .../59eb3dbb5f86130e09b3c62d89b9525ee01cf52d | 3 +- .../8eabf35e4ef64464e61dd27839db58b6edc7b568 | 4 +- .../assets/ornamentum/lang/en_us.json | 1 + .../tags/block/mineable/pickaxe.json | 1 + .../tags/block/needs_stone_tool.json | 3 +- .../loot_table/blocks/fan_block.json | 21 +++++ .../ornamentum/blocks/ModBlocks.java | 3 + .../ornamentum/blocks/custom/FanBlock.java | 89 ++++++++++++++++++ .../datagen/ModBlockLootTableProvider.java | 1 + .../datagen/ModBlockTagProvider.java | 4 +- .../datagen/ModLanguageProvider.java | 1 + .../ornamentum/items/ModCreativeModeTabs.java | 1 + .../ornamentum/blockstates/fan_block.json | 10 ++ .../ornamentum/blockstates/link_block.json | 1 - .../ornamentum/models/block/fan_block.json | 6 ++ .../ornamentum/models/block/fan_block_on.json | 6 ++ .../ornamentum/models/item/fan_block.json | 3 + .../ornamentum/textures/block/fan_off.png | Bin 0 -> 675 bytes .../ornamentum/textures/block/fan_on.png | Bin 0 -> 2340 bytes .../textures/block/fan_on.png.mcmeta | 5 + 21 files changed, 160 insertions(+), 9 deletions(-) create mode 100644 src/generated/resources/data/ornamentum/loot_table/blocks/fan_block.json create mode 100644 src/main/java/ovh/glitchlabs/ornamentum/blocks/custom/FanBlock.java create mode 100644 src/main/resources/assets/ornamentum/blockstates/fan_block.json create mode 100644 src/main/resources/assets/ornamentum/models/block/fan_block.json create mode 100644 src/main/resources/assets/ornamentum/models/block/fan_block_on.json create mode 100644 src/main/resources/assets/ornamentum/models/item/fan_block.json create mode 100644 src/main/resources/assets/ornamentum/textures/block/fan_off.png create mode 100644 src/main/resources/assets/ornamentum/textures/block/fan_on.png create mode 100644 src/main/resources/assets/ornamentum/textures/block/fan_on.png.mcmeta diff --git a/src/generated/resources/.cache/5537763371ce84515b2ba566a215878d32b7df83 b/src/generated/resources/.cache/5537763371ce84515b2ba566a215878d32b7df83 index f4fb22f..1eb3c0c 100644 --- a/src/generated/resources/.cache/5537763371ce84515b2ba566a215878d32b7df83 +++ b/src/generated/resources/.cache/5537763371ce84515b2ba566a215878d32b7df83 @@ -1,4 +1,4 @@ -// 1.21.1 2026-08-04T13:43:14.812806206 Tags for minecraft:block mod id ornamentum +// 1.21.1 2026-08-04T15:40:22.174290355 Tags for minecraft:block mod id ornamentum 585e131e594c65c425b3e81803fae3fdd63e2f03 data/c/tags/block/concretes.json 354a0712e83c8365d9054ffc2a122cf7dd69ad53 data/c/tags/block/dyed.json 8281ec180c87b02f17e4be444a350685b52f1e31 data/c/tags/block/dyed/black.json @@ -31,10 +31,10 @@ ae7d2e386f2eb4df7cd8f8f3e0a4040cae7a13bf data/minecraft/tags/block/incorrect_for 5bf3d2f5afa06168fa3bb8de07bdbaff4f7980db data/minecraft/tags/block/incorrect_for_stone_tool.json ae7d2e386f2eb4df7cd8f8f3e0a4040cae7a13bf data/minecraft/tags/block/incorrect_for_wooden_tool.json 26a948fa0b92ea3e254ed5b6aa26e1ab478e0715 data/minecraft/tags/block/mineable/axe.json -07f81b358a4b30fc07f6a51f5cae46b9622d05df data/minecraft/tags/block/mineable/pickaxe.json +d069cc13cfb3d900d448089fa1423891be6b25a7 data/minecraft/tags/block/mineable/pickaxe.json ec379d82d3fd4ddd3a9f6664ddb9aaaf0290834d data/minecraft/tags/block/needs_diamond_tool.json bad82b905081d37caba6026145cd8611bd369d5c data/minecraft/tags/block/needs_iron_tool.json -69abee467a122fbf58d494d6dc24648af511923e data/minecraft/tags/block/needs_stone_tool.json +20f898296b7e69ff74393d2b1d7e15dbfae5e8b5 data/minecraft/tags/block/needs_stone_tool.json 8b771a730def8958b41eb9c4e3b6628365c5d429 data/minecraft/tags/block/occludes_vibration_signals.json aad2571fcde7dc73bb943c24237eb17699067cfb data/minecraft/tags/block/sculk_replaceable.json 6014324ec06e8974ac7b92e7c0724c7710a6331c data/minecraft/tags/block/sculk_replaceable_world_gen.json diff --git a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d index 1dbe0cc..cd697e5 100644 --- a/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d +++ b/src/generated/resources/.cache/59eb3dbb5f86130e09b3c62d89b9525ee01cf52d @@ -1,4 +1,4 @@ -// 1.21.1 2026-08-04T13:43:14.807775051 Loot Tables +// 1.21.1 2026-08-04T15:40:22.170254506 Loot Tables b840d3c223a8269ea4ead11f9d1a337f16c87728 data/ornamentum/loot_table/blocks/agender_flag.json c5c3cbbff0b4af321ae05896dbd68e551f598c86 data/ornamentum/loot_table/blocks/amethyst_grate.json f44341b5b821a1ea423b1f9e81a020e324a3952e data/ornamentum/loot_table/blocks/ametist_bricks.json @@ -72,6 +72,7 @@ a5396a39055338fecb45c276985a6d7e004a5b3d data/ornamentum/loot_table/blocks/cyan_ 3bf1da00d5160a863281eae4449868c077c4aa32 data/ornamentum/loot_table/blocks/denmark_flag.json d5759aa6b55f402e60d0d2034b7706549ca17e82 data/ornamentum/loot_table/blocks/diamond_grate.json 9e63d610e9391c9aa5275b7f277265e457a6adf4 data/ornamentum/loot_table/blocks/duck.json +31be1ee454c2cb98ba7018dcbf7822620e60e0af data/ornamentum/loot_table/blocks/fan_block.json d026ac89fab7221c3f60d828bad42af0562ab9c7 data/ornamentum/loot_table/blocks/finland_flag.json f2c529d110328314d042609045907cbf565aabe9 data/ornamentum/loot_table/blocks/france_flag.json cb1c2b6f83f213c65dae3f8a644479a61c0954bd data/ornamentum/loot_table/blocks/gay_men_flag.json diff --git a/src/generated/resources/.cache/8eabf35e4ef64464e61dd27839db58b6edc7b568 b/src/generated/resources/.cache/8eabf35e4ef64464e61dd27839db58b6edc7b568 index c0ff79e..14d0ccd 100644 --- a/src/generated/resources/.cache/8eabf35e4ef64464e61dd27839db58b6edc7b568 +++ b/src/generated/resources/.cache/8eabf35e4ef64464e61dd27839db58b6edc7b568 @@ -1,2 +1,2 @@ -// 1.21.1 2026-08-04T13:43:14.811220915 Languages: en_us for mod: ornamentum -5c39b0c9dc87aec3a911d84281f46fcb8944db15 assets/ornamentum/lang/en_us.json +// 1.21.1 2026-08-04T15:40:22.173401134 Languages: en_us for mod: ornamentum +62aa32c03952421205e9465fffaf8a6f551b9fd9 assets/ornamentum/lang/en_us.json diff --git a/src/generated/resources/assets/ornamentum/lang/en_us.json b/src/generated/resources/assets/ornamentum/lang/en_us.json index 0ca6e76..f63a257 100644 --- a/src/generated/resources/assets/ornamentum/lang/en_us.json +++ b/src/generated/resources/assets/ornamentum/lang/en_us.json @@ -72,6 +72,7 @@ "block.ornamentum.denmark_flag": "Denmark Flag", "block.ornamentum.diamond_grate": "Diamond Grate", "block.ornamentum.duck": "Duck", + "block.ornamentum.fan_block": "Fan Block", "block.ornamentum.finland_flag": "Finland Flag", "block.ornamentum.france_flag": "France Flag", "block.ornamentum.gay_men_flag": "Gay Men Flag", diff --git a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json index 328a322..1c66f97 100644 --- a/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/block/mineable/pickaxe.json @@ -1,5 +1,6 @@ { "values": [ + "ornamentum:fan_block", "ornamentum:link_block", "ornamentum:iron_shelf", "ornamentum:red_pattern_block", diff --git a/src/generated/resources/data/minecraft/tags/block/needs_stone_tool.json b/src/generated/resources/data/minecraft/tags/block/needs_stone_tool.json index 0ed43e1..6d983ae 100644 --- a/src/generated/resources/data/minecraft/tags/block/needs_stone_tool.json +++ b/src/generated/resources/data/minecraft/tags/block/needs_stone_tool.json @@ -2,6 +2,7 @@ "values": [ "ornamentum:iron_shelf", "ornamentum:iron_grate", - "ornamentum:link_block" + "ornamentum:link_block", + "ornamentum:fan_block" ] } \ No newline at end of file diff --git a/src/generated/resources/data/ornamentum/loot_table/blocks/fan_block.json b/src/generated/resources/data/ornamentum/loot_table/blocks/fan_block.json new file mode 100644 index 0000000..3a8c69f --- /dev/null +++ b/src/generated/resources/data/ornamentum/loot_table/blocks/fan_block.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "ornamentum:fan_block" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "ornamentum:blocks/fan_block" +} \ No newline at end of file diff --git a/src/main/java/ovh/glitchlabs/ornamentum/blocks/ModBlocks.java b/src/main/java/ovh/glitchlabs/ornamentum/blocks/ModBlocks.java index 7b7d3fd..4d580b4 100644 --- a/src/main/java/ovh/glitchlabs/ornamentum/blocks/ModBlocks.java +++ b/src/main/java/ovh/glitchlabs/ornamentum/blocks/ModBlocks.java @@ -17,6 +17,9 @@ public class ModBlocks { public static final DeferredRegister.Blocks BLOCKS = DeferredRegister.createBlocks(Ornamentum.MODID); + public static final DeferredBlock FAN_BLOCK = registerBlock("fan_block", + () -> new FanBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.IRON_BLOCK).noOcclusion())); + public static final DeferredBlock LINK_BLOCK = registerBlock("link_block", () -> new LinkBlock(BlockBehaviour.Properties.ofFullCopy(Blocks.BLACK_CONCRETE).isRedstoneConductor((bs, br, bp) -> true).noOcclusion())); diff --git a/src/main/java/ovh/glitchlabs/ornamentum/blocks/custom/FanBlock.java b/src/main/java/ovh/glitchlabs/ornamentum/blocks/custom/FanBlock.java new file mode 100644 index 0000000..98f06a2 --- /dev/null +++ b/src/main/java/ovh/glitchlabs/ornamentum/blocks/custom/FanBlock.java @@ -0,0 +1,89 @@ +package ovh.glitchlabs.ornamentum.blocks.custom; + +import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; +import net.minecraft.world.InteractionResult; +import net.minecraft.world.entity.player.Player; +import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Block; +import net.minecraft.world.level.block.state.BlockState; +import net.minecraft.world.level.block.state.StateDefinition; +import net.minecraft.world.level.block.state.properties.BooleanProperty; +import net.minecraft.world.phys.BlockHitResult; + +import java.util.ArrayDeque; +import java.util.Deque; +import java.util.HashSet; +import java.util.Set; + +/** + * A block that can be toggled on/off via shift-right-click. + * Toggling propagates through directly adjacent FanBlocks (BFS / flood-fill), + * similar to how a redstone wire network shares state. + */ +public class FanBlock extends Block { + + public static final BooleanProperty ON = BooleanProperty.create("on"); + + // Safety cap so an absurdly large network can't cause a huge single-tick update. + private static final int MAX_NETWORK_SIZE = 4096; + + public FanBlock(Properties properties) { + super(properties); + this.registerDefaultState(this.stateDefinition.any().setValue(ON, false)); + } + + @Override + protected void createBlockStateDefinition(StateDefinition.Builder builder) { + builder.add(ON); + } + + @Override + protected InteractionResult useWithoutItem(BlockState state, Level level, BlockPos pos, Player player, BlockHitResult hitResult) { + if (player.isShiftKeyDown()) { + if (!level.isClientSide) { + toggleNetwork(level, pos, !state.getValue(ON)); + } + return InteractionResult.SUCCESS; + } + return InteractionResult.PASS; + } + + /** + * Flood-fills outward from {@code origin} through orthogonally adjacent FanBlocks + * and sets all of them to {@code newState}. + */ + private void toggleNetwork(Level level, BlockPos origin, boolean newState) { + Set visited = new HashSet<>(); + Deque queue = new ArrayDeque<>(); + + visited.add(origin.immutable()); + queue.add(origin); + + while (!queue.isEmpty() && visited.size() <= MAX_NETWORK_SIZE) { + BlockPos pos = queue.poll(); + BlockState state = level.getBlockState(pos); + + if (!(state.getBlock() instanceof FanBlock)) { + continue; + } + + if (state.getValue(ON) != newState) { + level.setBlock(pos, state.setValue(ON, newState), Block.UPDATE_ALL); + } + + for (Direction direction : Direction.values()) { + BlockPos neighborPos = pos.relative(direction); + if (visited.contains(neighborPos)) { + continue; + } + + BlockState neighborState = level.getBlockState(neighborPos); + if (neighborState.getBlock() instanceof FanBlock) { + visited.add(neighborPos.immutable()); + queue.add(neighborPos); + } + } + } + } +} diff --git a/src/main/java/ovh/glitchlabs/ornamentum/datagen/ModBlockLootTableProvider.java b/src/main/java/ovh/glitchlabs/ornamentum/datagen/ModBlockLootTableProvider.java index a3d5487..2b2c249 100644 --- a/src/main/java/ovh/glitchlabs/ornamentum/datagen/ModBlockLootTableProvider.java +++ b/src/main/java/ovh/glitchlabs/ornamentum/datagen/ModBlockLootTableProvider.java @@ -18,6 +18,7 @@ public class ModBlockLootTableProvider extends BlockLootSubProvider { protected void generate() { dropSelf(ModBlocks.DUCK.get()); + dropSelf(ModBlocks.FAN_BLOCK.get()); dropSelf(ModBlocks.BABY_TURTLE.get()); dropSelf(ModBlocks.LINK_BLOCK.get()); dropSelf(ModBlocks.IRON_SHELF.get()); diff --git a/src/main/java/ovh/glitchlabs/ornamentum/datagen/ModBlockTagProvider.java b/src/main/java/ovh/glitchlabs/ornamentum/datagen/ModBlockTagProvider.java index 5f7b48b..aaef439 100644 --- a/src/main/java/ovh/glitchlabs/ornamentum/datagen/ModBlockTagProvider.java +++ b/src/main/java/ovh/glitchlabs/ornamentum/datagen/ModBlockTagProvider.java @@ -1,5 +1,6 @@ package ovh.glitchlabs.ornamentum.datagen; +import net.minecraft.world.entity.TamableAnimal; import net.minecraft.world.level.block.Block; import net.minecraft.core.HolderLookup; import net.minecraft.data.PackOutput; @@ -89,6 +90,7 @@ public class ModBlockTagProvider extends BlockTagsProvider { ; tag(BlockTags.MINEABLE_WITH_PICKAXE) + .add(ModBlocks.FAN_BLOCK.get()) .add(ModBlocks.LINK_BLOCK.get()) .add(ModBlocks.IRON_SHELF.get()) @@ -403,6 +405,7 @@ public class ModBlockTagProvider extends BlockTagsProvider { .add(ModBlocks.IRON_SHELF.get()) .add(ModBlocks.IRON_GRATE.get()) .add(ModBlocks.LINK_BLOCK.get()) + .add(ModBlocks.FAN_BLOCK.get()) ; tag(BlockTags.INCORRECT_FOR_GOLD_TOOL) @@ -1529,6 +1532,5 @@ public class ModBlockTagProvider extends BlockTagsProvider { .add(ModBlocks.DUCK.get()) .add(ModBlocks.BABY_TURTLE.get()) ; - } } \ No newline at end of file diff --git a/src/main/java/ovh/glitchlabs/ornamentum/datagen/ModLanguageProvider.java b/src/main/java/ovh/glitchlabs/ornamentum/datagen/ModLanguageProvider.java index a4d84f0..561836a 100644 --- a/src/main/java/ovh/glitchlabs/ornamentum/datagen/ModLanguageProvider.java +++ b/src/main/java/ovh/glitchlabs/ornamentum/datagen/ModLanguageProvider.java @@ -342,6 +342,7 @@ public class ModLanguageProvider extends LanguageProvider { add(ModBlocks.CRACKED_OBSIDIAN_TILES.get(), "Cracked Obsidian Tiles"); add(ModBlocks.LINK_BLOCK.get(), "Link Block"); + add(ModBlocks.FAN_BLOCK.get(), "Fan Block"); add(ModBlocks.IRON_SHELF.get(), "Iron Shelf"); add(ModBlocks.DUCK.get(), "Duck"); diff --git a/src/main/java/ovh/glitchlabs/ornamentum/items/ModCreativeModeTabs.java b/src/main/java/ovh/glitchlabs/ornamentum/items/ModCreativeModeTabs.java index c12fc73..08889b3 100644 --- a/src/main/java/ovh/glitchlabs/ornamentum/items/ModCreativeModeTabs.java +++ b/src/main/java/ovh/glitchlabs/ornamentum/items/ModCreativeModeTabs.java @@ -25,6 +25,7 @@ public class ModCreativeModeTabs { output.accept(ModBlocks.IRON_SHELF); output.accept(ModBlocks.LINK_BLOCK); + output.accept(ModBlocks.FAN_BLOCK); //toys output.accept(ModBlocks.DUCK); diff --git a/src/main/resources/assets/ornamentum/blockstates/fan_block.json b/src/main/resources/assets/ornamentum/blockstates/fan_block.json new file mode 100644 index 0000000..b0d1d6d --- /dev/null +++ b/src/main/resources/assets/ornamentum/blockstates/fan_block.json @@ -0,0 +1,10 @@ +{ + "variants": { + "on=false": { + "model": "ornamentum:block/fan_block" + }, + "on=true": { + "model": "ornamentum:block/fan_block_on" + } + } +} diff --git a/src/main/resources/assets/ornamentum/blockstates/link_block.json b/src/main/resources/assets/ornamentum/blockstates/link_block.json index e729c18..05a1268 100644 --- a/src/main/resources/assets/ornamentum/blockstates/link_block.json +++ b/src/main/resources/assets/ornamentum/blockstates/link_block.json @@ -1,4 +1,3 @@ - { "variants": { "facing=north,on=false": { diff --git a/src/main/resources/assets/ornamentum/models/block/fan_block.json b/src/main/resources/assets/ornamentum/models/block/fan_block.json new file mode 100644 index 0000000..79796b1 --- /dev/null +++ b/src/main/resources/assets/ornamentum/models/block/fan_block.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "ornamentum:block/fan_off" + } +} diff --git a/src/main/resources/assets/ornamentum/models/block/fan_block_on.json b/src/main/resources/assets/ornamentum/models/block/fan_block_on.json new file mode 100644 index 0000000..0547bfb --- /dev/null +++ b/src/main/resources/assets/ornamentum/models/block/fan_block_on.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "ornamentum:block/fan_on" + } +} diff --git a/src/main/resources/assets/ornamentum/models/item/fan_block.json b/src/main/resources/assets/ornamentum/models/item/fan_block.json new file mode 100644 index 0000000..5be5fc0 --- /dev/null +++ b/src/main/resources/assets/ornamentum/models/item/fan_block.json @@ -0,0 +1,3 @@ +{ + "parent": "ornamentum:block/fan_block_on" +} \ No newline at end of file diff --git a/src/main/resources/assets/ornamentum/textures/block/fan_off.png b/src/main/resources/assets/ornamentum/textures/block/fan_off.png new file mode 100644 index 0000000000000000000000000000000000000000..c6b4d2e12ba8a53b7b40ab171989153b71ad2c67 GIT binary patch literal 675 zcmV;U0$lxxP)Px%T}ebiR49=plFe(KMHGk6nRDj6Gw*w&?KKb(Toe}?+fcDqQVDStUD&@>+=z>S z+=Uy#($b1p5I=T_g>rNAe$2<285ei|EPl_A2TxB=nR&HZ5fLIHV$NAa03gQ5%tX{$ zo2IFhQc7U}7>42K=txzG$Xctat+mz~0MuHYb3`XsbIusE*=zt{I9NI7eD9t2EP{w>nO6s^zW0}x zm+SS~7{kUGL_{*HgB1W+Yl-ROlLwX{mG;N8=OSGxm6`W$%*=@R=f4+DXVz_tw(e&m`t<~N=$hDOULV(<*DT)Zk7`^u? zMiH@WJCV-&{_dUK?RfpqzgM}07(RLYIf;Z2M8tUSRW-$wQ;IR9lsexVBG>ntl`H|k zUoU_A`G+6(q#>eGN=$KC!Z=RHj~@x4qIv!7d24MNC)c?Ug8>8pA~MUejN|z9+o#Ji zkGCURY0xyplu}N4p636quWz@z^YinR(r&lIv$M0q!$T1nhM~1qN-@S5W308Mlzo4y zs;bMfTwPtUs&2R2)>_wf*4kPt0PNfL-iHvnt|Ov(o^#HK_&=5!XBJg%m52ZU002ov JPDHLkV1jM^O9TJ_ literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ornamentum/textures/block/fan_on.png b/src/main/resources/assets/ornamentum/textures/block/fan_on.png new file mode 100644 index 0000000000000000000000000000000000000000..a5ae0617eea8feb19abb1285e58381826f053fda GIT binary patch literal 2340 zcmV+<3ETFGP)Px--bqA3RA_~iAVMRY05*fKG1mqHA-;?~m-lkcdAk^xFc^#{k$Ppe zvzVFpea~l}=l2tDz4cb6l%h~5Af-eIfe?Z;P4PSrfH;m(N+G2r%QEWqI>s1`F(`n1 zKF`jbJJDJrrNnhzwAN%02+-3 z2ac2p!W>DXNs`2zJ#)7GA>-rYBuPTOUPrw9?z>rEUmyRtaRXy5`^y8ZZ{hoRL4dUe zsa&E)lV-if_4#Y0Y0A-~M_F84#Bm%4Ap}X9GH`g9VyQ&fQ^56o(j-O*2c0H3BBN03 zVc+0BT-R-1Bc+r=2*JwoGGrOn8ieDJG@4}AVpD_741O-p&~O=qVCu6egb-v|hIsG2 z_p+TkcQW+)D7S9i#9E6<64EH<#r~IwqKI94Ud9UpT+asqYs)K4Uzp;~oja)ZE%QCf zqoW8RFp1{+%skdwq9|f&;v!=w$1!ONKv*aM;JPl#T8rm-SeqdbSYxo(u(Y&9E|;Ux zXtZvxa#6nDdS4rYARtZC)^m`iDF_E^4b~W>=Q8rf5ze3eJJwplLcmPrGRkwwY{s6~ z_5$E}9!?y`gki`>AACq0ML1G2JvGVP>=kE%5|~YpmmD!d>ZR(G;4MKas7+-8Ie-rG@DIowHjk%V>B8K<}S~&wo+wn zX@%O_8rEhs8VxEFlYDvWOFX3*J#vI3NmyH3L!3N$GTX6Z2cGAV&*#aq3}XzAmr0eDMglLxUNf~P(W)<5CkZt09uc*5J)Nin>;vh;2=pH@z+26se2Cw zhlUU$BM3u&^wXboc;GzMgJu(xq#PU=L?;Q(gA412A?xewZ4Vr+HA*Soc>6f{Vv#I^ zv>Bn}g#PXQ+?-z|iDGn;AeCZ%Zib{rmS>UtdT062}o_ z)*yiTT6J>|uy#`qE}WZad*D3o0YXrjyo8s_5#)0edV7%%?!e<7Xsw^*!I|eC{Hr~1 z9`)ev?c3bGb&Huw1?vg?-aL*k898ctLW${@!W%F<%476 z-$Ta7p+qSg39E@r}l-XdNBFvMC*?wP8b{QuM+zt4Q z$3OoWp65N&gD2*LqsQJvDTVSpY-X9Co$YRZ;Dtel2b;|gp6J2s^c8fHv^_|g&F(!g zspjk3cZs5is8&ZfPIn%BarMT(*#ncM?Y=N}V!S&KGHda30Vhwt!`nanK3?E=>A{2f zffuwgf+HP<4~=ZygNJ<~%PhvUif7zxvbMak^}g`h?!82fCYjBMIkIrHqkaQxIMcD?!{j^m(|VqsyvyLsY^dtN42D6~E3ex3-} z%p!z9#|b7$JLZWdO*iigQ5^Ht-MjRa`k0)UVAqaaNF1uG%Q({6dS95SRK8nZFh+Ou zg^@R2-+Eto+=GGgFj6^;9zDu%x!j!xz5OM^LWmdmtu}9McOC@!T-$>z%gBuF&I7AW zhX+X%J?{(u`SZj_J(!!B?ry(u?CldB9&B~L(9Q?-TCKx_g9isON!t1eo8*J`JaMgF zB?v>vz$7Uq)%0)grza>7)#@Zs6Xkihp8NECFf(0YZgv_WobQ$oE?>GpQj0tC!SOdw z;`%<7$xGiZ9|+OP2Zu%vcjrOR_CkjT&Dwf*9u#_enVqh*Jy5Ry^!dTftGB2wFXJfH z$_J0k4?g?k9F1CyKmYc3&+ZF7+lr)7Op?SnQnmZS&8yd+_l5uQedCd1V;meUf{Vc*aIK^V54gEU3QNyol%VPTHf-y8=4tM~73^uY5y5a37$A)F2S zh4RQKCQUI(%84JmvoRk`UA(Yi-}q=gc(`wLlmf)YeWUbzDpQxRS|eSz?SZuxshqY4 z0CBU?od*l^Gc3%{QJI>gSzGVeH*U#;N9PB#(=*-Wga3p5!ao7|7+(0ItpPLu0000< KMNUMnLSTY2?0%jA literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/ornamentum/textures/block/fan_on.png.mcmeta b/src/main/resources/assets/ornamentum/textures/block/fan_on.png.mcmeta new file mode 100644 index 0000000..24f9c2f --- /dev/null +++ b/src/main/resources/assets/ornamentum/textures/block/fan_on.png.mcmeta @@ -0,0 +1,5 @@ +{ + "animation": { + "frametime": 1 + } +}