From c7ef6a8061de31103378b898edb80e10d235924b Mon Sep 17 00:00:00 2001 From: MrTJP Date: Thu, 11 Jul 2024 13:29:54 -0400 Subject: [PATCH 01/31] fix: auto crafter not accepting piped in items (cherry picked from commit aec9d66c0261e16125161bdea40db8f234af2e46) --- .../expansion/tile/AutoCrafterTile.java | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/AutoCrafterTile.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/AutoCrafterTile.java index e5988cb7b..d37f9995c 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/AutoCrafterTile.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/AutoCrafterTile.java @@ -9,6 +9,7 @@ import mrtjp.projectred.expansion.inventory.container.AutoCrafterContainer; import mrtjp.projectred.expansion.item.RecipePlanItem; import net.minecraft.core.BlockPos; +import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Container; @@ -19,6 +20,14 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.state.BlockState; +import net.minecraftforge.common.capabilities.Capability; +import net.minecraftforge.common.capabilities.ForgeCapabilities; +import net.minecraftforge.common.util.LazyOptional; +import net.minecraftforge.items.IItemHandler; +import net.minecraftforge.items.wrapper.InvWrapper; + +import javax.annotation.Nonnull; +import javax.annotation.Nullable; public class AutoCrafterTile extends BaseMachineTile implements CraftingHelper.InventorySource { @@ -33,6 +42,8 @@ public boolean canPlaceItem(int slot, ItemStack stack) { private final BaseInventory storageInventory = new BaseInventory(18); private final BaseInventory craftingGrid = new BaseInventory(9); + private final LazyOptional handler = LazyOptional.of(() -> new InvWrapper(storageInventory)); + private final CraftingHelper craftingHelper = new CraftingHelper(this); private boolean recipeNeedsUpdate = true; @@ -219,4 +230,21 @@ protected void finishWork() { cyclePlan(); } //endregion + + //region Capabilities + @Nonnull + @Override + public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { + if (!this.remove && cap == ForgeCapabilities.ITEM_HANDLER) { + return handler.cast(); + } + return super.getCapability(cap, side); + } + + @Override + public void invalidateCaps() { + super.invalidateCaps(); + handler.invalidate(); + } + //endregion } From 678f3b0752f125a432a56bb1026553a18035128c Mon Sep 17 00:00:00 2001 From: MrTJP Date: Thu, 11 Jul 2024 13:48:17 -0400 Subject: [PATCH 02/31] fix: multipart light breaking effects (cherry picked from commit 3f1b756e39949bf6ffb7de899ca71c08e24564e1) --- .../MultipartLightProperties.java | 1 + .../part/CageLightProperties.java | 5 ++++ .../part/FalloutLightProperties.java | 5 ++++ .../part/FixtureLightProperties.java | 5 ++++ .../part/LanternLightProperties.java | 5 ++++ .../illumination/part/MultipartLightPart.java | 24 +++++++++++++++---- 6 files changed, 40 insertions(+), 5 deletions(-) diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/MultipartLightProperties.java b/illumination/src/main/java/mrtjp/projectred/illumination/MultipartLightProperties.java index dcd53e74a..0914c0c19 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/MultipartLightProperties.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/MultipartLightProperties.java @@ -48,6 +48,7 @@ public boolean canFloat() { public abstract ItemStack makeStack(int color, boolean inverted); public abstract VoxelShape getShape(int side); + public abstract Cuboid6 getBounds(int side); public abstract Cuboid6 getGlowBounds(int side); //endregion diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/part/CageLightProperties.java b/illumination/src/main/java/mrtjp/projectred/illumination/part/CageLightProperties.java index a23698bd4..bbd109b61 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/part/CageLightProperties.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/part/CageLightProperties.java @@ -31,6 +31,11 @@ public VoxelShape getShape(int side) { return SHAPES[side]; } + @Override + public Cuboid6 getBounds(int side) { + return BOUNDS[side]; + } + @Override public ItemStack makeStack(int color, boolean inverted) { return MultipartLightType.CAGE.makeStack(color, inverted); diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/part/FalloutLightProperties.java b/illumination/src/main/java/mrtjp/projectred/illumination/part/FalloutLightProperties.java index e5dcde9db..86c090155 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/part/FalloutLightProperties.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/part/FalloutLightProperties.java @@ -30,6 +30,11 @@ public VoxelShape getShape(int side) { return SHAPES[side]; } + @Override + public Cuboid6 getBounds(int side) { + return BOUNDS[side]; + } + @Override public ItemStack makeStack(int color, boolean inverted) { return MultipartLightType.FALLOUT.makeStack(color, inverted); diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/part/FixtureLightProperties.java b/illumination/src/main/java/mrtjp/projectred/illumination/part/FixtureLightProperties.java index b12c6a97e..931a8ae3e 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/part/FixtureLightProperties.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/part/FixtureLightProperties.java @@ -59,6 +59,11 @@ public Cuboid6 getGlowBounds(int side) { return GLOW_BOUNDS[side]; } + @Override + public Cuboid6 getBounds(int side) { + return BOUNDS[side]; + } + @Override public CCModel getBulbModel(int side) { return FixtureLightModels.BULB_MODELS[side]; diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/part/LanternLightProperties.java b/illumination/src/main/java/mrtjp/projectred/illumination/part/LanternLightProperties.java index 118e88b93..8e002d933 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/part/LanternLightProperties.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/part/LanternLightProperties.java @@ -34,6 +34,11 @@ public VoxelShape getShape(int side) { return SHAPE; } + @Override + public Cuboid6 getBounds(int side) { + return BOUNDS; + } + @Override public ItemStack makeStack(int color, boolean inverted) { return MultipartLightType.LANTERN.makeStack(color, inverted); diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/part/MultipartLightPart.java b/illumination/src/main/java/mrtjp/projectred/illumination/part/MultipartLightPart.java index e0f87ec9e..f74c4952f 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/part/MultipartLightPart.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/part/MultipartLightPart.java @@ -2,20 +2,19 @@ import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataOutput; +import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Vector3; import codechicken.microblock.part.hollow.HollowMicroblockPart; import codechicken.multipart.api.MultipartType; import codechicken.multipart.api.RedstoneInteractions; -import codechicken.multipart.api.part.BaseMultipart; -import codechicken.multipart.api.part.MultiPart; -import codechicken.multipart.api.part.NormalOcclusionPart; -import codechicken.multipart.api.part.SlottedPart; +import codechicken.multipart.api.part.*; import codechicken.multipart.api.part.redstone.RedstonePart; import codechicken.multipart.block.BlockMultipart; import codechicken.multipart.block.TileMultipart; import codechicken.multipart.util.PartRayTraceResult; import mrtjp.projectred.core.PlacementLib; import mrtjp.projectred.illumination.MultipartLightProperties; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; @@ -30,7 +29,7 @@ import javax.annotation.Nullable; import java.util.Collections; -public class MultipartLightPart extends BaseMultipart implements SlottedPart, NormalOcclusionPart, RedstonePart { +public class MultipartLightPart extends BaseMultipart implements SlottedPart, NormalOcclusionPart, RedstonePart, IconHitEffectsPart { private final MultipartType type; private final MultipartLightProperties properties; @@ -123,6 +122,21 @@ public int getLightEmission() { return (isInverted() != powered) ? 15 : 0; } + @Override + public Cuboid6 getBounds() { + return properties.getBounds(side); + } + + @Override + public TextureAtlasSprite getBreakingIcon(PartRayTraceResult hit) { + return getBrokenIcon(side); + } + + @Override + public TextureAtlasSprite getBrokenIcon(int side) { + return properties.getIcon(color); + } + private ItemStack getItem() { return properties.makeStack(color, inverted); } From 675ebc730d307917644c12ba7cc5d1e970deaea0 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Tue, 16 Jul 2024 21:04:11 -0700 Subject: [PATCH 03/31] fix: power wires not connecting on placement (cherry picked from commit 267d11ba5159085e7b053b24e6118e6bfd2a2bd2) --- .../java/mrtjp/projectred/transmission/part/FacePowerWire.java | 1 + 1 file changed, 1 insertion(+) diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/part/FacePowerWire.java b/transmission/src/main/java/mrtjp/projectred/transmission/part/FacePowerWire.java index a3630503a..170aad604 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/part/FacePowerWire.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/part/FacePowerWire.java @@ -78,6 +78,7 @@ private void recacheConductors() { //region Connections @Override public void maskChangeEvent(boolean internalChange, boolean externalChange) { + super.maskChangeEvent(internalChange, externalChange); // Invalidate even if conns have not changed (adjacent conductors may have moved, etc) cacheInvalid = true; } From 26897f5d6c16ee2510cc218dc378d301ec9939df Mon Sep 17 00:00:00 2001 From: MrTJP Date: Wed, 17 Jul 2024 00:18:04 -0400 Subject: [PATCH 04/31] fix: wrong item tag on raw tin storage block (cherry picked from commit d29f7f6770b750c304e375292425fbca6c7cc108) --- .../.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b | 7 ++++--- .../generated/data/forge/tags/items/storage_blocks.json | 2 +- .../data/forge/tags/items/storage_blocks/tin.json | 3 +-- .../mrtjp/projectred/exploration/init/ExplorationTags.java | 2 +- 4 files changed, 7 insertions(+), 7 deletions(-) diff --git a/exploration/src/main/generated/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b b/exploration/src/main/generated/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b index dbf453210..5d9967c9a 100644 --- a/exploration/src/main/generated/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b +++ b/exploration/src/main/generated/.cache/03e4de26f1265135874f8cdcaebc09d9c08eb42b @@ -1,4 +1,4 @@ -// 1.19.2 2024-03-04T11:32:53.755579 Tags for minecraft:item +// 1.19.2 2025-01-21T09:25:36.520601 Tags for minecraft:item d179a2e8b33551c32e1fde1f934d3c452080f4c7 data/cb_microblock/tags/items/tools/saw.json e71523a9e962242fb027bd7af5b4f6a7b7a958a4 data/forge/tags/items/ingots.json aa652ed8416a65e56e8df506616390236f05d840 data/forge/tags/items/ingots/silver.json @@ -15,14 +15,15 @@ f1020a7b72ab62876b3a6b9fcceec1495fe36fc6 data/forge/tags/items/ores/silver.json 919de6ad9093dce50ceccb510811370217de5d53 data/forge/tags/items/raw_materials/tin.json d532a6644e5c0f77a0ad0631aa20df0fec705fb5 data/forge/tags/items/stone/basalt.json e6ece7e72e77102086896636d1a63e836fa464cc data/forge/tags/items/stone/marble.json -0fa6279fa9dce5516359848b7142cd8b355f597e data/forge/tags/items/storage_blocks.json +31ecf6ae0cbc97eb683fde8f7fb8f19eb9afde3a data/forge/tags/items/storage_blocks.json 211e0bdd014616eed5b3aedf731e368ea1b16889 data/forge/tags/items/storage_blocks/electrotine.json e9550f12acc58379f0936f2a25d3e5c50f800be4 data/forge/tags/items/storage_blocks/peridot.json f8d5ae9be802ca21197b50fa6cf22baee277549b data/forge/tags/items/storage_blocks/raw_silver.json +f908c0769a842212de0330ab11547b8e0804d4e2 data/forge/tags/items/storage_blocks/raw_tin.json 496e7ba6daa3730ba208ccfc2cf0c69bb6ac7a08 data/forge/tags/items/storage_blocks/ruby.json 5f1a178933dd1967113fbf2a42289986387a2903 data/forge/tags/items/storage_blocks/sapphire.json ce08de69baac6242b45f391d2ad8fb4d932bde3b data/forge/tags/items/storage_blocks/silver.json -8d26ef0ef776eb1c0f3ada7d00a77dcd20a75237 data/forge/tags/items/storage_blocks/tin.json +8e2a01c61961fb1d0e3d7cd7b919b918e4c918b7 data/forge/tags/items/storage_blocks/tin.json 22b884249651a68132691bc71a59dadfd94aabde data/projectred_exploration/tags/items/backpacks.json 709694396ed2eb7ef83e6e1382d1d65d2532738e data/projectred_exploration/tags/items/backpacks/black.json 8ea77089df41bf87eaa3b54b12af2ea1a745ba73 data/projectred_exploration/tags/items/backpacks/blue.json diff --git a/exploration/src/main/generated/data/forge/tags/items/storage_blocks.json b/exploration/src/main/generated/data/forge/tags/items/storage_blocks.json index f551a6c22..83ea77d1a 100644 --- a/exploration/src/main/generated/data/forge/tags/items/storage_blocks.json +++ b/exploration/src/main/generated/data/forge/tags/items/storage_blocks.json @@ -4,7 +4,7 @@ "#forge:storage_blocks/sapphire", "#forge:storage_blocks/peridot", "#forge:storage_blocks/electrotine", - "#forge:storage_blocks/tin", + "#forge:storage_blocks/raw_tin", "#forge:storage_blocks/tin", "#forge:storage_blocks/raw_silver", "#forge:storage_blocks/silver" diff --git a/exploration/src/main/generated/data/forge/tags/items/storage_blocks/tin.json b/exploration/src/main/generated/data/forge/tags/items/storage_blocks/tin.json index 29c3aeca0..aeb1ff03b 100644 --- a/exploration/src/main/generated/data/forge/tags/items/storage_blocks/tin.json +++ b/exploration/src/main/generated/data/forge/tags/items/storage_blocks/tin.json @@ -1,6 +1,5 @@ { "values": [ - "projectred_exploration:tin_block", - "projectred_exploration:raw_tin_block" + "projectred_exploration:tin_block" ] } \ No newline at end of file diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationTags.java b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationTags.java index e72fe6b12..e7e2fa874 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationTags.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationTags.java @@ -53,7 +53,7 @@ public class ExplorationTags { public static final TagKey SAPPHIRE_STORAGE_BLOCK_ITEM_TAG = ItemTags.create(new ResourceLocation("forge:storage_blocks/sapphire")); public static final TagKey PERIDOT_STORAGE_BLOCK_ITEM_TAG = ItemTags.create(new ResourceLocation("forge:storage_blocks/peridot")); public static final TagKey ELECTROTINE_STORAGE_BLOCK_ITEM_TAG = ItemTags.create(new ResourceLocation("forge:storage_blocks/electrotine")); - public static final TagKey RAW_TIN_STORAGE_BLOCK_ITEM_TAG = ItemTags.create(new ResourceLocation("forge:storage_blocks/tin")); + public static final TagKey RAW_TIN_STORAGE_BLOCK_ITEM_TAG = ItemTags.create(new ResourceLocation("forge:storage_blocks/raw_tin")); public static final TagKey RAW_SILVER_STORAGE_BLOCK_ITEM_TAG = ItemTags.create(new ResourceLocation("forge:storage_blocks/raw_silver")); public static final TagKey TIN_STORAGE_BLOCK_ITEM_TAG = ItemTags.create(new ResourceLocation("forge:storage_blocks/tin")); public static final TagKey SILVER_STORAGE_BLOCK_ITEM_TAG = ItemTags.create(new ResourceLocation("forge:storage_blocks/silver")); From fdafe2834f47db51f5f6b7e95123a03ee9b9e0c8 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Wed, 17 Jul 2024 12:24:53 -0400 Subject: [PATCH 05/31] fix: prevent missing texture warnings for tubes (cherry picked from commit 82764c2d574326767466e0ec6377803cc9af8d37) --- .../.cache/6ea35d4d32933d1d5128eec69e7685517fce9b40 | 3 ++- .../projectred_expansion/models/item/pneumatic_tube.json | 3 +++ .../expansion/data/ExpansionItemModelProvider.java | 5 +++++ 3 files changed, 10 insertions(+), 1 deletion(-) create mode 100644 expansion/src/main/generated/assets/projectred_expansion/models/item/pneumatic_tube.json diff --git a/expansion/src/main/generated/.cache/6ea35d4d32933d1d5128eec69e7685517fce9b40 b/expansion/src/main/generated/.cache/6ea35d4d32933d1d5128eec69e7685517fce9b40 index 1b4a04427..5a88d58df 100644 --- a/expansion/src/main/generated/.cache/6ea35d4d32933d1d5128eec69e7685517fce9b40 +++ b/expansion/src/main/generated/.cache/6ea35d4d32933d1d5128eec69e7685517fce9b40 @@ -1,4 +1,4 @@ -// 1.19.2 2024-06-19T14:15:42.461673 ProjectRed-Expansion Item Models +// 1.19.2 2025-01-21T10:09:29.926026 ProjectRed-Expansion Item Models 599e9047cbf1215359e3106b1a6a0757a569ffc9 assets/projectred_expansion/models/item/auto_crafter.json 736ab07c8745c163e8a3cb90abc9308466032009 assets/projectred_expansion/models/item/battery.json d887cd7b776f1227da04cf267bf0a48dbc706027 assets/projectred_expansion/models/item/battery_box.json @@ -19,6 +19,7 @@ c04ad8c2f44fd4f5a6ea7c5bb9ddf98629332a84 assets/projectred_expansion/models/item a163c9ce1e63e428f3fa804b66e491b455f18540 assets/projectred_expansion/models/item/frame.json 933ec48f28e2627aefbdcaa7d989eeac271ad282 assets/projectred_expansion/models/item/frame_actuator.json a163c9ce1e63e428f3fa804b66e491b455f18540 assets/projectred_expansion/models/item/frame_motor.json +a163c9ce1e63e428f3fa804b66e491b455f18540 assets/projectred_expansion/models/item/pneumatic_tube.json 9457da7d0b200c883ca98241d9bf155043221c53 assets/projectred_expansion/models/item/project_bench.json 5d8ae0bcb189be1eb7ce726fc4d28637dcdfaac8 assets/projectred_expansion/models/item/recipe_plan.json 000ee856d11f86a527eb92dd81e20dee640de756 assets/projectred_expansion/models/item/recipe_plan_written.json diff --git a/expansion/src/main/generated/assets/projectred_expansion/models/item/pneumatic_tube.json b/expansion/src/main/generated/assets/projectred_expansion/models/item/pneumatic_tube.json new file mode 100644 index 000000000..1bcbb312f --- /dev/null +++ b/expansion/src/main/generated/assets/projectred_expansion/models/item/pneumatic_tube.json @@ -0,0 +1,3 @@ +{ + "parent": "minecraft:item/generated" +} \ No newline at end of file diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionItemModelProvider.java b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionItemModelProvider.java index 6826e874e..1e46c3d8a 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionItemModelProvider.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionItemModelProvider.java @@ -1,6 +1,7 @@ package mrtjp.projectred.expansion.data; import codechicken.lib.datagen.ItemModelProvider; +import mrtjp.projectred.expansion.TubeType; import net.minecraft.data.DataGenerator; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; @@ -41,6 +42,10 @@ protected void registerModels() { generated(FRAME_BLOCK.get()).noTexture(); generated(FRAME_MOTOR_BLOCK.get()).noTexture(); + for (TubeType type : TubeType.values()) { + generated(type.getItem()).noTexture(); + } + generated(EMPTY_BATTERY_ITEM); generated(BATTERY_ITEM); From ae9cb64ecfc48642fe9cf23093aad6989fad80dc Mon Sep 17 00:00:00 2001 From: MrTJP Date: Fri, 19 Jul 2024 12:57:09 -0700 Subject: [PATCH 06/31] fix: incorrect part support shapes causing invalid connections (cherry picked from commit dae7a5bb9b231291ecdef3c80e4b099c8ba9afa6) --- .../projectred/expansion/part/BaseTubePart.java | 12 ++++++------ .../mrtjp/projectred/expansion/part/FramePart.java | 5 +++++ .../illumination/part/MultipartLightPart.java | 6 ++++++ .../projectred/integration/part/ArrayGatePart.java | 7 +------ .../mrtjp/projectred/integration/part/GatePart.java | 11 ++++++----- .../transmission/part/BaseCenterWirePart.java | 12 ++++++------ .../transmission/part/BaseFaceWirePart.java | 5 +++++ 7 files changed, 35 insertions(+), 23 deletions(-) diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/part/BaseTubePart.java b/expansion/src/main/java/mrtjp/projectred/expansion/part/BaseTubePart.java index 3ae7f97fd..466d8bb32 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/part/BaseTubePart.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/part/BaseTubePart.java @@ -2,7 +2,6 @@ import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataOutput; -import codechicken.lib.raytracer.IndexedVoxelShape; import codechicken.lib.raytracer.VoxelShapeCache; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Rotation; @@ -33,6 +32,7 @@ import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -281,11 +281,6 @@ public Iterable getDrops() { @Override public VoxelShape getShape(CollisionContext context) { - return new IndexedVoxelShape(getCollisionShape(context), 0); - } - - @Override - public VoxelShape getCollisionShape(CollisionContext context) { int m = 0; for (int s = 0; s < 6; s++) { if (maskConnects(s)) { @@ -295,6 +290,11 @@ public VoxelShape getCollisionShape(CollisionContext context) { return fOShapeStates[m]; } + @Override + public VoxelShape getBlockSupportShape() { + return Shapes.empty(); + } + //region Occlusion @Override public VoxelShape getOcclusionShape() { diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/part/FramePart.java b/expansion/src/main/java/mrtjp/projectred/expansion/part/FramePart.java index d295b3cef..3d12d59e0 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/part/FramePart.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/part/FramePart.java @@ -157,6 +157,11 @@ public VoxelShape getShape(CollisionContext context) { public VoxelShape getCollisionShape(CollisionContext context) { return Shapes.block(); } + + @Override + public VoxelShape getBlockSupportShape() { + return Shapes.empty(); + } //endregion //region Occlusion diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/part/MultipartLightPart.java b/illumination/src/main/java/mrtjp/projectred/illumination/part/MultipartLightPart.java index f74c4952f..021a40a51 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/part/MultipartLightPart.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/part/MultipartLightPart.java @@ -24,6 +24,7 @@ import net.minecraft.world.level.Level; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import javax.annotation.Nullable; @@ -194,6 +195,11 @@ public VoxelShape getOcclusionShape() { return getShape(CollisionContext.empty()); } + @Override + public VoxelShape getBlockSupportShape() { + return Shapes.empty(); + } + @Override public MultipartType getType() { return type; diff --git a/integration/src/main/java/mrtjp/projectred/integration/part/ArrayGatePart.java b/integration/src/main/java/mrtjp/projectred/integration/part/ArrayGatePart.java index c9de94882..6df51e901 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/part/ArrayGatePart.java +++ b/integration/src/main/java/mrtjp/projectred/integration/part/ArrayGatePart.java @@ -384,14 +384,9 @@ protected void sendSignalUpdate() { //endregion //region Multipart properties - @Override - public VoxelShape getCollisionShape(CollisionContext context) { - return cShapes[getSide()]; - } - @Override public VoxelShape getShape(CollisionContext context) { - return getCollisionShape(context); + return cShapes[getSide()]; } @Override diff --git a/integration/src/main/java/mrtjp/projectred/integration/part/GatePart.java b/integration/src/main/java/mrtjp/projectred/integration/part/GatePart.java index 6decd8173..06eb67419 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/part/GatePart.java +++ b/integration/src/main/java/mrtjp/projectred/integration/part/GatePart.java @@ -34,6 +34,7 @@ import net.minecraft.world.level.block.SoundType; import net.minecraft.world.level.chunk.LevelChunk; import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @@ -380,18 +381,18 @@ protected ItemStack getItem() { //region Gate shapes and bounds @Override - public VoxelShape getCollisionShape(CollisionContext context) { + public VoxelShape getShape(CollisionContext context) { return FaceMicroblockPart.aShapes[0x10 | getSide()]; //TODO bring this in-house. No need to use cover's shape } @Override - public VoxelShape getShape(CollisionContext context) { - return getCollisionShape(context); + public VoxelShape getOcclusionShape() { + return oShapes[getSide()]; } @Override - public VoxelShape getOcclusionShape() { - return oShapes[getSide()]; + public VoxelShape getBlockSupportShape() { + return Shapes.empty(); } //endregion diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/part/BaseCenterWirePart.java b/transmission/src/main/java/mrtjp/projectred/transmission/part/BaseCenterWirePart.java index 9ce499051..33be9acbd 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/part/BaseCenterWirePart.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/part/BaseCenterWirePart.java @@ -2,7 +2,6 @@ import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataOutput; -import codechicken.lib.raytracer.IndexedVoxelShape; import codechicken.lib.raytracer.VoxelShapeCache; import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Rotation; @@ -32,6 +31,7 @@ import net.minecraft.world.item.context.UseOnContext; import net.minecraft.world.level.block.SoundType; import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; import javax.annotation.Nullable; @@ -231,11 +231,6 @@ public Iterable getDrops() { @Override public VoxelShape getShape(CollisionContext context) { - return new IndexedVoxelShape(getCollisionShape(context), 0); - } - - @Override - public VoxelShape getCollisionShape(CollisionContext context) { int m = 0; for (int s = 0; s < 6; s++) { if (maskConnects(s)) { @@ -245,6 +240,11 @@ public VoxelShape getCollisionShape(CollisionContext context) { return fOShapeStates[m]; } + @Override + public VoxelShape getBlockSupportShape() { + return Shapes.empty(); + } + //region Occlusion @Override public VoxelShape getOcclusionShape() { diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/part/BaseFaceWirePart.java b/transmission/src/main/java/mrtjp/projectred/transmission/part/BaseFaceWirePart.java index 3db6966c2..1c865cd7b 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/part/BaseFaceWirePart.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/part/BaseFaceWirePart.java @@ -180,6 +180,11 @@ public VoxelShape getCollisionShape(CollisionContext context) { return Shapes.empty(); } + @Override + public VoxelShape getBlockSupportShape() { + return Shapes.empty(); + } + //region Occlusion @Override public VoxelShape getOcclusionShape() { From 047547f7e9011870d5431ef94e01d871a0cfc554 Mon Sep 17 00:00:00 2001 From: embeddedt <42941056+embeddedt@users.noreply.github.com> Date: Wed, 31 Jul 2024 13:29:41 -0400 Subject: [PATCH 07/31] perf: optimize MovingBlockSuppressorRenderer for common case of no structures (cherry picked from commit 13e8320905476836992ccca80ca6450c528ee1e9) --- .../projectred/expansion/MovementManager.java | 16 ++++++++++++-- .../client/MovingBlockSuppressorRenderer.java | 21 ++++++++++++------- 2 files changed, 27 insertions(+), 10 deletions(-) diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/MovementManager.java b/expansion/src/main/java/mrtjp/projectred/expansion/MovementManager.java index 4c82d1335..526320e66 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/MovementManager.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/MovementManager.java @@ -45,8 +45,8 @@ public class MovementManager { - private static final HashMap, MovementManager> SERVER_INSTANCE = new HashMap<>(); - private static final HashMap, MovementManager> CLIENT_INSTANCE = new HashMap<>(); + private static final IdentityHashMap, MovementManager> SERVER_INSTANCE = new IdentityHashMap<>(); + private static final IdentityHashMap, MovementManager> CLIENT_INSTANCE = new IdentityHashMap<>(); private static final int KEY_BULK_DESC = 0x0; private static final int KEY_NEW_STRUCT = 0x1; @@ -65,6 +65,14 @@ public static MovementManager getInstance(Level level) { return map.computeIfAbsent(level.dimension(), MovementManager::new); } + public static MovementManager getClientInstanceNullable() { + var clientLevel = Minecraft.getInstance().level; + if (clientLevel == null) { + return null; + } + return CLIENT_INSTANCE.get(clientLevel.dimension()); + } + public MovementManager(ResourceKey dimension) { this.dimension = dimension; LOGGER.debug("Created MovementManager for dimension {}", dimension.location()); @@ -295,6 +303,10 @@ public MovementDescriptor beginMove(Level level, Set blocks, int dir, return structure; } + public boolean hasNoMovingStructures() { + return structures.isEmpty(); + } + public InternalMovementInfo getMovementInfo(BlockPos pos) { for (MovingStructure structure : structures.values()) { if (structure.contains(pos)) return structure; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/client/MovingBlockSuppressorRenderer.java b/expansion/src/main/java/mrtjp/projectred/expansion/client/MovingBlockSuppressorRenderer.java index c040e270c..caf349b38 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/client/MovingBlockSuppressorRenderer.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/client/MovingBlockSuppressorRenderer.java @@ -35,8 +35,13 @@ public boolean canHandleBlock(BlockAndTintGetter world, BlockPos pos, BlockState // Infinite recursion prevention. #renderBlock is attempting a no-cull render. if (isRendering) return false; + MovementManager manager = MovementManager.getClientInstanceNullable(); + + // Do nothing if manager doesn't exist + if (manager == null || manager.hasNoMovingStructures()) return false; + // Take over both moving and adjacent to moving blocks - boolean isMoving = isMoving(pos); + boolean isMoving = isMoving(manager, pos); if (isMoving) { // If we're on render thread and force flag is set, it means we're rendering the moving block with an offset. @@ -49,14 +54,15 @@ public boolean canHandleBlock(BlockAndTintGetter world, BlockPos pos, BlockState } // If adjacent to a moving block, take over to render without culling - return isAdjacentToMoving(pos); + return isAdjacentToMoving(manager, pos); } @Override public void renderBlock(BlockState state, BlockPos pos, BlockAndTintGetter world, PoseStack mStack, VertexConsumer builder, RandomSource random, ModelData data, @Nullable RenderType renderType) { + MovementManager manager = MovementManager.getClientInstanceNullable(); // Moving blocks don't render here - if (isMoving(pos)) return; + if (manager != null && isMoving(manager, pos)) return; // Render adjacent blocks without culling isRendering = true; // Prevents ourselves from re-handling this event @@ -66,14 +72,13 @@ public void renderBlock(BlockState state, BlockPos pos, BlockAndTintGetter world isRendering = false; } - private static boolean isMoving(BlockPos pos) { - if (Minecraft.getInstance().level == null) return false; - return MovementManager.getInstance(Minecraft.getInstance().level).getMovementInfo(pos).isMoving(); + private static boolean isMoving(MovementManager manager, BlockPos pos) { + return manager.getMovementInfo(pos).isMoving(); } - private static boolean isAdjacentToMoving(BlockPos pos) { + private static boolean isAdjacentToMoving(MovementManager manager, BlockPos pos) { for (int s = 0; s < 6; s++) { - if (isMoving(pos.relative(Direction.values()[s]))) return true; + if (isMoving(manager, pos.relative(Direction.values()[s]))) return true; } return false; } From 459a6a5407a180afea58932fe935427e249280ff Mon Sep 17 00:00:00 2001 From: MrTJP Date: Fri, 26 Jul 2024 09:24:39 -0400 Subject: [PATCH 08/31] ci: prevent workflow failure for failed badge update (cherry picked from commit df34aeaab6a1daf3eda682335f96ef1966550353) --- .github/workflows/publish.yaml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 478b1896f..616d2aee9 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -147,7 +147,8 @@ jobs: CHANGELOG.txt - name: Update badge - uses: schneegans/dynamic-badges-action@v1.6.0 + continue-on-error: true + uses: schneegans/dynamic-badges-action@v1.7.0 with: auth: ${{ secrets.GIST_SECRET }} gistID: 3ef501bc64c896a86fd706dfea8ba367 From bb8eaa5db3c32e4f91485a00edb620a8fe43c252 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Sun, 28 Jul 2024 09:06:15 -0400 Subject: [PATCH 09/31] fix: incorrect input ordering in multiplexer ic gate (cherry picked from commit 17fc03fa439a697a5981a77833b73b6b19ee0e05) --- .../engine/gates/MultiplexerGateTile.java | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/MultiplexerGateTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/MultiplexerGateTile.java index bb6f59c75..3a704893c 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/MultiplexerGateTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/MultiplexerGateTile.java @@ -29,13 +29,13 @@ public static class MultiplexerGate implements ICGate { @Override public void compute(ICSimulation ic, int[] inputs, int[] outputs) { - boolean in0 = ic.getRegByteVal(inputs[0]) != 0; - boolean in1 = ic.getRegByteVal(inputs[1]) != 0; - boolean in2 = ic.getRegByteVal(inputs[2]) != 0; + boolean in0 = ic.getRegByteVal(inputs[0]) != 0; // Right + boolean in1 = ic.getRegByteVal(inputs[1]) != 0; // Bottom + boolean in2 = ic.getRegByteVal(inputs[2]) != 0; // Left - ic.queueRegByteVal(outputs[0], in0 ? - (byte) (in1 ? 1 : 0) : - (byte) (in2 ? 1 : 0)); + ic.queueRegByteVal(outputs[0], in1 ? + (byte) (in2 ? 1 : 0) : + (byte) (in0 ? 1 : 0)); } } } From 22c42c93c264a3c1f4959b51c44fb1aa72647596 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Mon, 5 Aug 2024 10:08:00 -0400 Subject: [PATCH 10/31] fix: marble caves generating in sky (cherry picked from commit dccd94d4851ba10b8431fbce99105bbc05ab8ab6) --- .../exploration/world/gen/MarbleCaveWorldCarver.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/world/gen/MarbleCaveWorldCarver.java b/exploration/src/main/java/mrtjp/projectred/exploration/world/gen/MarbleCaveWorldCarver.java index 9bd54705b..5e6579305 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/world/gen/MarbleCaveWorldCarver.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/world/gen/MarbleCaveWorldCarver.java @@ -27,8 +27,12 @@ public MarbleCaveWorldCarver(Codec codec) { @Override protected boolean canReplaceBlock(CaveCarverConfiguration pConfig, BlockState pState) { - // We must be able to carve the target wall type since we fill around every carved block - return super.canReplaceBlock(pConfig, pState) || pState.is(MARBLE_BLOCK.get()); + // We must be able to carve the target wall type since we fill around every carved block. + // + // Air check is workaround for mods improperly adding air block tags to minecraft:overworld_carver_replaceables + // which causes marble caves to generate in the sky. + // https://github.com/MrTJP/ProjectRed/issues/1874 + return !pState.isAir() && (super.canReplaceBlock(pConfig, pState) || pState.is(MARBLE_BLOCK.get())); } @Override From 5930cdab66dbddf97095d8c94ca4f79cf7285c84 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Mon, 5 Aug 2024 10:13:58 -0400 Subject: [PATCH 11/31] fix: missing landing particles for frame and motor (cherry picked from commit 39aad67aadb288342d6b08f3baadfa1e7bad79b5) --- .../72d9ae780b67af0f9d7a123ca0dccc34f690e42e | 9 +++-- .../blockstates/frame.json | 2 +- .../blockstates/frame_motor.json | 2 +- ...frame_motor_programmatically_rendered.json | 6 +++ .../frame_programmatically_rendered.json | 6 +++ .../programmatically_rendered_block.json | 3 -- .../expansion/block/FrameBlock.java | 37 ------------------ .../expansion/block/FrameMotorBlock.java | 39 ------------------- .../ExpansionBlockStateModelProvider.java | 16 ++++++-- 9 files changed, 31 insertions(+), 89 deletions(-) create mode 100644 expansion/src/main/generated/assets/projectred_expansion/models/block/frame_motor_programmatically_rendered.json create mode 100644 expansion/src/main/generated/assets/projectred_expansion/models/block/frame_programmatically_rendered.json delete mode 100644 expansion/src/main/generated/assets/projectred_expansion/models/block/programmatically_rendered_block.json diff --git a/expansion/src/main/generated/.cache/72d9ae780b67af0f9d7a123ca0dccc34f690e42e b/expansion/src/main/generated/.cache/72d9ae780b67af0f9d7a123ca0dccc34f690e42e index a3fcdd92a..03c612d7f 100644 --- a/expansion/src/main/generated/.cache/72d9ae780b67af0f9d7a123ca0dccc34f690e42e +++ b/expansion/src/main/generated/.cache/72d9ae780b67af0f9d7a123ca0dccc34f690e42e @@ -1,13 +1,13 @@ -// 1.19.2 2024-06-19T14:15:42.46834 ProjectRed-Expansion Block State Models +// 1.19.2 2025-01-21T10:29:48.092628 ProjectRed-Expansion Block State Models b697bf3bc54738e649092c6b88cbb4fd9b3da8a3 assets/projectred_expansion/blockstates/auto_crafter.json 1d92e2503aa76e8cf9e908f7afa248a291fcf387 assets/projectred_expansion/blockstates/battery_box.json 325a4ac57dbf6f6f049812d1442992b5f7368d21 assets/projectred_expansion/blockstates/block_breaker.json ac22e2b26c326b40d94951ed7a69b7b994f14aca assets/projectred_expansion/blockstates/charging_bench.json 2742c5200239a1933b73b45885d8d5fe0ec5ed3d assets/projectred_expansion/blockstates/deployer.json fe88677fa2e1cf270a91e8e1ac1f8b598786949f assets/projectred_expansion/blockstates/fire_starter.json -8a3420edbfb56d655cb85fd209b893aab7af3509 assets/projectred_expansion/blockstates/frame.json +e285658b615ec1141d09ddb523656ad8dcd0c634 assets/projectred_expansion/blockstates/frame.json 2ea35b8dcec2486da65f2464436c04aba36624b1 assets/projectred_expansion/blockstates/frame_actuator.json -8a3420edbfb56d655cb85fd209b893aab7af3509 assets/projectred_expansion/blockstates/frame_motor.json +da1694043a21b0b85aa2918f534786f5e0de0cb7 assets/projectred_expansion/blockstates/frame_motor.json 97acab0b18004d35a03674349f4c14542707ad66 assets/projectred_expansion/blockstates/project_bench.json 99538255fa8dddf3c50e280e1e4d9f7d3248231c assets/projectred_expansion/blockstates/transposer.json 37c0bb69db6a7bdf44866469f4d8e0a69d22d137 assets/projectred_expansion/models/block/auto_crafter.json @@ -33,7 +33,8 @@ d34961059b05c1caf2059ffba539b5ffc38c36a5 assets/projectred_expansion/models/bloc 9dbba6f59658244da05c4cdeaeb1691deef902d8 assets/projectred_expansion/models/block/frame_actuator.json 9130fd3156286ec9bcc1e958be94505d47cf1e36 assets/projectred_expansion/models/block/frame_actuator_state1.json 441616b7dbe0c0ec337ad807c7214514c45979dc assets/projectred_expansion/models/block/frame_actuator_state2.json -e528d8951b6212aff0082c9db8204f8b2c490fd4 assets/projectred_expansion/models/block/programmatically_rendered_block.json +176677c516b3203abbf46daed70cbcfcca83eab5 assets/projectred_expansion/models/block/frame_motor_programmatically_rendered.json +cf74edee7186e05fd24bd7fae56c2e23d1bd1de4 assets/projectred_expansion/models/block/frame_programmatically_rendered.json 645544cf14d5ca7f1577a11532a3321c06a51e18 assets/projectred_expansion/models/block/project_bench.json 17e1cc736c14625f137dbe9d5871e07d4eb85e73 assets/projectred_expansion/models/block/transposer.json 6bbf26b37dd2a946ced5c52327c3e4c860918566 assets/projectred_expansion/models/block/transposer_active.json diff --git a/expansion/src/main/generated/assets/projectred_expansion/blockstates/frame.json b/expansion/src/main/generated/assets/projectred_expansion/blockstates/frame.json index b96f14235..5164d0d7e 100644 --- a/expansion/src/main/generated/assets/projectred_expansion/blockstates/frame.json +++ b/expansion/src/main/generated/assets/projectred_expansion/blockstates/frame.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "projectred_expansion:block/programmatically_rendered_block" + "model": "projectred_expansion:block/frame_programmatically_rendered" } } } \ No newline at end of file diff --git a/expansion/src/main/generated/assets/projectred_expansion/blockstates/frame_motor.json b/expansion/src/main/generated/assets/projectred_expansion/blockstates/frame_motor.json index b96f14235..ca40c7631 100644 --- a/expansion/src/main/generated/assets/projectred_expansion/blockstates/frame_motor.json +++ b/expansion/src/main/generated/assets/projectred_expansion/blockstates/frame_motor.json @@ -1,7 +1,7 @@ { "variants": { "": { - "model": "projectred_expansion:block/programmatically_rendered_block" + "model": "projectred_expansion:block/frame_motor_programmatically_rendered" } } } \ No newline at end of file diff --git a/expansion/src/main/generated/assets/projectred_expansion/models/block/frame_motor_programmatically_rendered.json b/expansion/src/main/generated/assets/projectred_expansion/models/block/frame_motor_programmatically_rendered.json new file mode 100644 index 000000000..198e4d0da --- /dev/null +++ b/expansion/src/main/generated/assets/projectred_expansion/models/block/frame_motor_programmatically_rendered.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "projectred_expansion:block/frame_motor_top" + } +} \ No newline at end of file diff --git a/expansion/src/main/generated/assets/projectred_expansion/models/block/frame_programmatically_rendered.json b/expansion/src/main/generated/assets/projectred_expansion/models/block/frame_programmatically_rendered.json new file mode 100644 index 000000000..1c699b71e --- /dev/null +++ b/expansion/src/main/generated/assets/projectred_expansion/models/block/frame_programmatically_rendered.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/block", + "textures": { + "particle": "projectred_expansion:block/frame" + } +} \ No newline at end of file diff --git a/expansion/src/main/generated/assets/projectred_expansion/models/block/programmatically_rendered_block.json b/expansion/src/main/generated/assets/projectred_expansion/models/block/programmatically_rendered_block.json deleted file mode 100644 index c4c69a16a..000000000 --- a/expansion/src/main/generated/assets/projectred_expansion/models/block/programmatically_rendered_block.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent": "minecraft:block/block" -} \ No newline at end of file diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameBlock.java b/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameBlock.java index bb70139d5..47efddd96 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameBlock.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameBlock.java @@ -1,14 +1,12 @@ package mrtjp.projectred.expansion.block; import codechicken.lib.raytracer.VoxelShapeCache; -import codechicken.lib.render.particle.CustomParticleHandler; import codechicken.lib.vec.*; import com.google.common.collect.ImmutableSet; import mrtjp.projectred.api.Frame; import mrtjp.projectred.expansion.client.FrameModelRenderer; import mrtjp.projectred.expansion.client.FrameModelVerts; import mrtjp.projectred.lib.ModelVoxelShape; -import net.minecraft.client.particle.ParticleEngine; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.BlockGetter; @@ -18,18 +16,13 @@ import net.minecraft.world.level.block.state.BlockBehaviour; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.material.Material; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; import net.minecraft.world.phys.shapes.CollisionContext; import net.minecraft.world.phys.shapes.Shapes; import net.minecraft.world.phys.shapes.VoxelShape; -import net.minecraftforge.client.extensions.common.IClientBlockExtensions; import net.minecraftforge.fml.DistExecutor; -import java.util.Collections; import java.util.LinkedList; import java.util.List; -import java.util.function.Consumer; public class FrameBlock extends Block implements Frame { @@ -42,36 +35,6 @@ public FrameBlock() { .dynamicShape()); // To prevent early caching before modelVerts can be loaded } - @Override - public void initializeClient(Consumer consumer) { - consumer.accept(new IClientBlockExtensions() { - @Override - public boolean addHitEffects(BlockState state, Level level, HitResult hit, ParticleEngine engine) { - if (!(hit instanceof BlockHitResult blockHit)) { - return false; - } - CustomParticleHandler.addBlockHitEffects( - level, - Cuboid6.full.copy().add(blockHit.getBlockPos()), - blockHit.getDirection(), - FrameModelRenderer.getFrameIcon(), - engine - ); - return true; - } - - @Override - public boolean addDestroyEffects(BlockState state, Level level, BlockPos pos, ParticleEngine engine) { - CustomParticleHandler.addBlockDestroyEffects( - level, - Cuboid6.full.copy().add(pos), - Collections.singletonList(FrameModelRenderer.getFrameIcon()), - engine); - return true; - } - }); - } - //region Frame @Override public boolean canGrab(Level w, BlockPos pos, Direction side) { diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameMotorBlock.java b/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameMotorBlock.java index 718c21f2c..4290a4502 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameMotorBlock.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameMotorBlock.java @@ -1,63 +1,24 @@ package mrtjp.projectred.expansion.block; -import codechicken.lib.render.particle.CustomParticleHandler; -import codechicken.lib.vec.Cuboid6; import codechicken.lib.vec.Rotation; import mrtjp.projectred.core.block.ProjectRedBlock; -import mrtjp.projectred.expansion.client.FrameMotorBlockRenderer; import mrtjp.projectred.expansion.init.ExpansionBlocks; import mrtjp.projectred.expansion.tile.FrameMotorTile; -import net.minecraft.client.particle.ParticleEngine; import net.minecraft.core.BlockPos; import net.minecraft.world.item.context.BlockPlaceContext; -import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.StateDefinition; -import net.minecraft.world.phys.BlockHitResult; -import net.minecraft.world.phys.HitResult; -import net.minecraftforge.client.extensions.common.IClientBlockExtensions; import org.jetbrains.annotations.Nullable; -import java.util.Collections; -import java.util.function.Consumer; - public class FrameMotorBlock extends ProjectRedBlock { public FrameMotorBlock() { super(STONE_PROPERTIES); } - @Override - public void initializeClient(Consumer consumer) { - consumer.accept(new IClientBlockExtensions() { - @Override - public boolean addHitEffects(BlockState state, Level level, HitResult hit, ParticleEngine engine) { - if (!(hit instanceof BlockHitResult blockHit)) return false; - CustomParticleHandler.addBlockHitEffects( - level, - Cuboid6.full.copy().add(blockHit.getBlockPos()), - blockHit.getDirection(), - FrameMotorBlockRenderer.getParticleIcon(state, blockHit.getDirection().ordinal()), - engine - ); - return true; - } - - @Override - public boolean addDestroyEffects(BlockState state, Level level, BlockPos pos, ParticleEngine engine) { - CustomParticleHandler.addBlockDestroyEffects( - level, - Cuboid6.full.copy().add(pos), - Collections.singletonList(FrameMotorBlockRenderer.getParticleIcon(state, 0)), - engine); - return true; - } - }); - } - @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionBlockStateModelProvider.java b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionBlockStateModelProvider.java index c98f2bc59..ad0f34a47 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionBlockStateModelProvider.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/data/ExpansionBlockStateModelProvider.java @@ -43,10 +43,18 @@ protected void registerStatesAndModels() { addSideAndTopActiveModel(BLOCK_BREAKER_BLOCK.get()); addSidedOppositeMatchingFacesDeviceBlock(DEPLOYER_BLOCK.get()); - // Advanced models rendered programmatically. Tied to dummy model to suppress warnings. - ModelFile dummy = models().withExistingParent("programmatically_rendered_block", "block"); - simpleBlock(FRAME_BLOCK.get(), dummy); - simpleBlock(FRAME_MOTOR_BLOCK.get(), dummy); + // Advanced models rendered programmatically. Only Particle info provided by model file + addProgrammaticWithParticleTexture(FRAME_BLOCK.get(), ""); + addProgrammaticWithParticleTexture(FRAME_MOTOR_BLOCK.get(), "_top"); + } + + private void addProgrammaticWithParticleTexture(Block block, String texSuffix) { + String blockName = ForgeRegistries.BLOCKS.getKey(block).getPath(); + String texName = blockName + texSuffix; + ModelFile dummy = models() + .withExistingParent(blockName + "_programmatically_rendered", "block") + .texture("particle", "block/" + texName); + simpleBlock(block, dummy); } private void addRotatableOppositeMatchingFacesBlock(Block block) { From 6c399fb498924c8db2b3f43572d5ae94377441d7 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Sat, 10 Aug 2024 12:28:31 -0400 Subject: [PATCH 12/31] fix: segment display z-fighting when using Embeddium (cherry picked from commit c800408a3f13298b755a370eb73265ecfdd6bfbe) --- .../obj/array/16seg.blend | Bin 700324 -> 705268 bytes .../obj/array/16seg.obj | 130 +++++++++--------- .../obj/array/7seg.blend | Bin 660196 -> 669508 bytes .../projectred_integration/obj/array/7seg.obj | 66 ++++----- 4 files changed, 98 insertions(+), 98 deletions(-) diff --git a/integration/src/main/resources/assets/projectred_integration/obj/array/16seg.blend b/integration/src/main/resources/assets/projectred_integration/obj/array/16seg.blend index abec24f0aafa7daae65799d4a5d89afeff7fc354..3cf59c7320b97e44efd734e1b611f999b5dd3cb2 100644 GIT binary patch delta 122956 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 Gs8}kr&5p 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 MInT{Cu7aT&qn`kH!jla_q;cv4?SE2lJ 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 RmDd*iHOdzKwZ{*i{Xc9rQ~3Y@ delta 115097 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 diff --git a/integration/src/main/resources/assets/projectred_integration/obj/array/16seg.obj b/integration/src/main/resources/assets/projectred_integration/obj/array/16seg.obj index defc7d9d6..22fa1bc65 100644 --- a/integration/src/main/resources/assets/projectred_integration/obj/array/16seg.obj +++ b/integration/src/main/resources/assets/projectred_integration/obj/array/16seg.obj @@ -1,10 +1,10 @@ -# Blender v2.71 (sub 5) OBJ File: '16seg.blend' +# Blender v3.1.2 OBJ File: '16seg.blend' # www.blender.org g 8 -v -0.034647 0.250100 -0.033703 -v -0.141978 0.250100 -0.033646 -v -0.142034 0.250213 -0.227394 -v -0.034704 0.250213 -0.227450 +v -0.034647 0.251000 -0.033703 +v -0.141978 0.251000 -0.033646 +v -0.142034 0.251000 -0.227394 +v -0.034704 0.251000 -0.227450 vt 0.976562 0.984375 vt 0.976562 0.214844 vt 0.531250 0.214844 @@ -12,10 +12,10 @@ vt 0.531250 0.984375 s off f 4/1 3/2 2/3 1/4 g 10 -v 0.142034 0.250100 -0.033703 -v 0.034704 0.250100 -0.033646 -v 0.034647 0.250213 -0.227394 -v 0.141978 0.250213 -0.227450 +v 0.142034 0.251000 -0.033703 +v 0.034704 0.251000 -0.033646 +v 0.034647 0.251000 -0.227394 +v 0.141978 0.251000 -0.227450 vt 0.531250 0.984375 vt 0.531250 0.214844 vt 0.976562 0.214844 @@ -23,10 +23,10 @@ vt 0.976562 0.984375 s off f 8/5 7/6 6/7 5/8 g 1 -v 0.171074 0.250100 -0.231413 -v 0.007074 0.250100 -0.231413 -v 0.007074 0.250100 -0.287663 -v 0.171074 0.250100 -0.287663 +v 0.171074 0.251000 -0.231413 +v 0.007074 0.251000 -0.231413 +v 0.007074 0.251000 -0.287663 +v 0.171074 0.251000 -0.287663 vt 0.503906 0.347656 vt 0.503237 0.988281 vt 0.276674 0.988281 @@ -34,10 +34,10 @@ vt 0.277344 0.347656 s off f 12/9 11/10 10/11 9/12 g 0 -v -0.007074 0.250100 -0.231413 -v -0.171074 0.250100 -0.231413 -v -0.171074 0.250100 -0.287663 -v -0.007074 0.250100 -0.287663 +v -0.007074 0.251000 -0.231413 +v -0.171074 0.251000 -0.231413 +v -0.171074 0.251000 -0.287663 +v -0.007074 0.251000 -0.287663 vt 0.503906 0.347656 vt 0.503237 0.988281 vt 0.276674 0.988281 @@ -45,10 +45,10 @@ vt 0.277344 0.347656 s off f 16/13 15/14 14/15 13/16 g 2 -v 0.148361 0.250100 -0.004436 -v 0.148361 0.250100 -0.254436 -v 0.204611 0.250100 -0.254436 -v 0.204611 0.250100 -0.004436 +v 0.148361 0.251000 -0.004436 +v 0.148361 0.251000 -0.254436 +v 0.204611 0.251000 -0.254436 +v 0.204611 0.251000 -0.004436 vt 0.250000 0.011719 vt 0.250000 0.988281 vt 0.023438 0.988281 @@ -56,10 +56,10 @@ vt 0.023438 0.011719 s off f 20/17 19/18 18/19 17/20 g 7 -v -0.204611 0.250100 -0.004436 -v -0.204611 0.250100 -0.254436 -v -0.148361 0.250100 -0.254436 -v -0.148361 0.250100 -0.004436 +v -0.204611 0.251000 -0.004436 +v -0.204611 0.251000 -0.254436 +v -0.148361 0.251000 -0.254436 +v -0.148361 0.251000 -0.004436 vt 0.250000 0.011719 vt 0.250000 0.988281 vt 0.023438 0.988281 @@ -67,10 +67,10 @@ vt 0.023438 0.011719 s off f 24/21 23/22 22/23 21/24 g 9 -v -0.028125 0.250100 -0.004436 -v -0.028125 0.250100 -0.254436 -v 0.028125 0.250100 -0.254436 -v 0.028125 0.250100 -0.004436 +v -0.028125 0.251000 -0.004436 +v -0.028125 0.251000 -0.254436 +v 0.028125 0.251000 -0.254436 +v 0.028125 0.251000 -0.004436 vt 0.250000 0.011719 vt 0.250000 0.988281 vt 0.023438 0.988281 @@ -78,10 +78,10 @@ vt 0.023438 0.011719 s off f 28/25 27/26 26/27 25/28 g 12 -v 0.142034 0.250100 0.227394 -v 0.034704 0.250100 0.227450 -v 0.034647 0.250213 0.033703 -v 0.141978 0.250213 0.033646 +v 0.142034 0.251000 0.227394 +v 0.034704 0.251000 0.227450 +v 0.034647 0.251000 0.033703 +v 0.141978 0.251000 0.033646 vt 0.531250 0.214844 vt 0.531250 0.984375 vt 0.976562 0.984375 @@ -89,10 +89,10 @@ vt 0.976562 0.214844 s off f 32/29 31/30 30/31 29/32 g 11 -v 0.171074 0.250100 0.028125 -v 0.007074 0.250100 0.028125 -v 0.007074 0.250100 -0.028125 -v 0.171074 0.250100 -0.028125 +v 0.171074 0.251000 0.028125 +v 0.007074 0.251000 0.028125 +v 0.007074 0.251000 -0.028125 +v 0.171074 0.251000 -0.028125 vt 0.503906 0.347656 vt 0.503237 0.988281 vt 0.276674 0.988281 @@ -100,10 +100,10 @@ vt 0.277344 0.347656 s off f 36/33 35/34 34/35 33/36 g 4 -v 0.171074 0.250100 0.287663 -v 0.007074 0.250100 0.287663 -v 0.007074 0.250100 0.231413 -v 0.171074 0.250100 0.231413 +v 0.171074 0.251000 0.287663 +v 0.007074 0.251000 0.287663 +v 0.007074 0.251000 0.231413 +v 0.171074 0.251000 0.231413 vt 0.503906 0.347656 vt 0.503237 0.988281 vt 0.276674 0.988281 @@ -111,10 +111,10 @@ vt 0.277344 0.347656 s off f 40/37 39/38 38/39 37/40 g 3 -v 0.148361 0.250100 0.254436 -v 0.148361 0.250100 0.004436 -v 0.204611 0.250100 0.004436 -v 0.204611 0.250100 0.254436 +v 0.148361 0.251000 0.254436 +v 0.148361 0.251000 0.004436 +v 0.204611 0.251000 0.004436 +v 0.204611 0.251000 0.254436 vt 0.250000 0.011719 vt 0.250000 0.988281 vt 0.023438 0.988281 @@ -122,10 +122,10 @@ vt 0.023438 0.011719 s off f 44/41 43/42 42/43 41/44 g 6 -v -0.204611 0.250100 0.254436 -v -0.204611 0.250100 0.004436 -v -0.148361 0.250100 0.004436 -v -0.148361 0.250100 0.254436 +v -0.204611 0.251000 0.254436 +v -0.204611 0.251000 0.004436 +v -0.148361 0.251000 0.004436 +v -0.148361 0.251000 0.254436 vt 0.250000 0.011719 vt 0.250000 0.988281 vt 0.023438 0.988281 @@ -133,10 +133,10 @@ vt 0.023438 0.011719 s off f 48/45 47/46 46/47 45/48 g 14 -v -0.034647 0.250100 0.227394 -v -0.141978 0.250100 0.227450 -v -0.142034 0.250213 0.033703 -v -0.034704 0.250213 0.033646 +v -0.034647 0.251000 0.227394 +v -0.141978 0.251000 0.227450 +v -0.142034 0.251000 0.033703 +v -0.034704 0.251000 0.033646 vt 0.976562 0.214844 vt 0.976562 0.984375 vt 0.531250 0.984375 @@ -144,10 +144,10 @@ vt 0.531250 0.214844 s off f 52/49 51/50 50/51 49/52 g 5 -v -0.007074 0.250100 0.287663 -v -0.171074 0.250100 0.287663 -v -0.171074 0.250100 0.231413 -v -0.007074 0.250100 0.231413 +v -0.007074 0.251000 0.287663 +v -0.171074 0.251000 0.287663 +v -0.171074 0.251000 0.231413 +v -0.007074 0.251000 0.231413 vt 0.503906 0.347656 vt 0.503237 0.988281 vt 0.276674 0.988281 @@ -155,10 +155,10 @@ vt 0.277344 0.347656 s off f 56/53 55/54 54/55 53/56 g 13 -v -0.028125 0.250100 0.254436 -v -0.028125 0.250100 0.004436 -v 0.028125 0.250100 0.004436 -v 0.028125 0.250100 0.254436 +v -0.028125 0.251000 0.254436 +v -0.028125 0.251000 0.004436 +v 0.028125 0.251000 0.004436 +v 0.028125 0.251000 0.254436 vt 0.250000 0.011719 vt 0.250000 0.988281 vt 0.023438 0.988281 @@ -166,10 +166,10 @@ vt 0.023438 0.011719 s off f 60/57 59/58 58/59 57/60 g 15 -v -0.007074 0.250100 0.028125 -v -0.171074 0.250100 0.028125 -v -0.171074 0.250100 -0.028125 -v -0.007074 0.250100 -0.028125 +v -0.007074 0.251000 0.028125 +v -0.171074 0.251000 0.028125 +v -0.171074 0.251000 -0.028125 +v -0.007074 0.251000 -0.028125 vt 0.503906 0.347656 vt 0.503237 0.988281 vt 0.276674 0.988281 diff --git a/integration/src/main/resources/assets/projectred_integration/obj/array/7seg.blend b/integration/src/main/resources/assets/projectred_integration/obj/array/7seg.blend index 87b18b9f92113437119f8d0a3a932d9a04334bc4..8976506e5787627b232584b433365d6731283907 100644 GIT binary patch delta 76233 zcmeFZd0f@U)j!VVevqr6T;-xyxhN>;ML|G8L3Tw2SKM*m6_+R`(GWFW*MztNWAY)p zX_J;LP0Utkni|_DPfOCYF*|J*ZIU*$O|!J=Q`6?#`JVU8oXZ81=J`F#AHU!0hp%z& zXXczU=bSm`%$fNtAKdSM?qh#_TzGC#!+<5To(>Chg&nMNgy}!j`>8Cal8}%f$BrE< z6B83DHu0}Qu=6%J-Tj*Tzz_cph52u`yMsgxA!ZEBp$su$Krzn&XZ`y1N>Rj!QViUdl%#AI_WN}u zR52J2<^MB^88LL2tjHQGQ^~P&b8|(E^ZwYZtgQdn3OKg=%#S1i=Z+mOQzkq; zvNBm&St;kvohxV0o-LOyT`E3FZx{hLLBxZ#jG9m>$4*)#4k9MrUo$Y}H1qed$>&}h@wY-pNhjOd>!AN0Y z;T7$`g%(HB02SkN6+Nu0`T6;B!h{KmS&V~%YgI(gjI|%({uko8;#7g%-C#hR}awtob^!JQ_-Q{Lv z%Ihj-$}!~hurJsYd}GCm6|$c^e*GG>YRZH8ULx*H_ zb+zih7t zYierb;>C*<49Tqez~j7m^W@c6UoAIp-mLnzZr!S2fd@-s- zFZE9nmpqnut-mh@wgAf?n3n~9#aoeCfyt96t5gCuf#2{JjDtBu+VM>V_JA0RSoKY? zh-skD9!Yu&1YHcl1|66TC=wHhYX}E7M7)8afH@T8KVTTjfO{h7qu@7~$6&w#EZ|_Y z2&{~czKIiOsw7GU8#HjlLx7t!X_5j)8>EC4V^9!48>FVl9GnTl5f}RVZaY&G(LH# z95^mRCi_RI*@O2kSg=5q<;#~Vfq52Tz28*Uty?Ey?Wn&A7G927=GmhZBA^CbxNxCj z5a9!E2-m<&U<6y)9_NfM}btc$Zwg@4;Z|i|bpy z^K9@MGmSU}#x`!;D0d!ek|*wZQpGUD8MI+M%sk@A;2}xUKRTb+dGSf_Qt|2X?8X(z zG0d7#t~lmR5@!ba#Hal{;*5V_uiPA&Uy==Vh&zT26!i&i@u}B}hk8(ej>5kI_h?3f zs2M;c`bSd)NEYW4q8o2?$6`su(wCT&BC|`D$dutQrJNC144^2?AZB6w`1z#aJQcLz zlQ30ME&^2ygaM~PZu_T;GlRY2LVtgcqRH8Ee6Hv-aE&-K!X@q-<|b}E;(ThfSQh6s zTnqpQUavQp%9zv#DskrJO%TPs(wz|EljSL2p_?qyOEl@lO9FaG5iV!Z$b(XlF60 z=Ga1FCm~bRBqfXeL&z3JMT>e;)%hXBSG+4Y9SMVnD4tSMhC@_LM?5?M!4qBqmqbA< zAh#A7-n_3@i!W785vfI7O6=PspPX;fI3WiwR&3Oth!*?fX)EVZMiI+uNlK9cZA-utO8XncE|f+!I#@mgInwIve|iDDIbC5aszKXKRynLlkaxnfZ3F&GCi41tq) z5HGnW$6^J56(CTW@x`&BrQ(v$E6!}jnC{4e;_8AerRw0A zka^hfv{0F&Fw>xqSXkU+viLN@6@zPx6&x=)N1Pq$7Z>(NV?1$oic8CxGC2zIcFB?| z3f5D_%9P1wdfmY>69*^AywNymQu`cOR}|z#-T-GWwkm?w6uQ#TT!>S{OO1?PadsM6 zQ?4wYOenqbVv!vzTed_70(<36Hyx78moF8wQ__vt9#XYCXkCdz2Ft~z8FIvMvaSIY z;>ma~h2O>%-YeWm4eIAXA*e@G_HsoQm(ez%AXhwFFi?~o@x((hD^@I%`}g0VMh6Ed z+qZ8Ofg4gq{U|TF9JzoeI><$c!NJC(u;?JZQp6E&IV+TrA@UfdW7QO=Mph`LUphEC zB2Sh~rPvssGOW0`h!Tip^5DUJT}Edv4ji~aY|qFN^+%#b%@7Zn0rcUD2M371i4=s= zhb5~G6s7_x?e?)LB&pX4FS|HB%SoO`dQOVP^kO}STfjZQ)w8rtA<)45E*;Jk7Yd>y z3yUe3P0A(y24)nO6jR#1g0!<&9zMKZ-gx7|ujI4t<|A_Ql*u8yx{b+NiB zbYp2hd-kk6b?TJb8t}FUawDxio0fl z=h8(Db%*86M{krzkKLq7Rn;P~JuAmd8PwoODH=Ck4mML3Vm!h0Nu^h!;pBiJSh%n} zLm{X!QQSt?6vuMLBYA>SU}C6Ikj>&6*(4T52#W$`@?^h6t4rr(Qw%8ZHu`!_%by@i zr)t?JPAsKda*ZUj3(Cqe^Yqtslb7Y*yro*K%qS$c^^(lis6vvtjP~Yb<7vsI+$LxS zv@-&?*d4=UX^LsBOb=kXVGihn!e0{UGgOQ$W=HC<1du74Lyo~zm>Qs1QMizMoT zvN>{m>8!6Uc_kI0tA@&^5#d`-_6=Ilg}rH{BU+)dtl5~m>go+&ucspi>v$s0_|s4KW~;OG#UI_09+0FH%wBCfF;!zjlV(mreK z7)-j_0%6h-4^h-I8=WWiN4p}80h6$CTG*{VabW_bCPmR}r%kJnR}qU43!-xAE;0gH zsHma8F){lO?2~imR;nY{UcI6u7uto0m19$43dvBX=H;t0F)v>Pj?j^7J~G2jnL`4e z+VnzR#CpVQteP<7oO0TfkIz=|AK?uJ?Whs^k-Ps_3c@J##LkY?=$_H(;;hnDqHvG3 zw#=9@osN&T%bRK1p%2y-*Z*0aZQ8U!Wx0L%k`a<2m{{XD1F@?0aD4k6xkdr3l zQ?8RlK@)3xXCe{LF=Vk7LZKkB+pbTlP45V4w69b;1!wiSOBd62R8&Y%)OCIF5A3M&Ru^{ zmR9ZgZ_$c;0?^4JxgA@^J?WhtZ~#Z zBBk*|`{bd6dsX==&0}^pY+NUE#^uNuw_9l(T1QEs8?L+e?3K4R-6l`pYRfzCx<}SG zo|fsOGnDpo#*U4a<@trGOvx`GPoz9mY1=b|HH|}0cn)iNSK|-m)#Bep@yOBv^Y*mJ zEytdbs}BD_ZaMml+3&JL7bK+>l@_lcibhXOfByv zd-m)lGySQuKGnJ1UH6=!axcy8F}K`t&9%}^7U^=iu&Wj;^9sqhl(t8)afO6*m8)Qhf?FeZ z!z@rHiaU0l;ff3iYw?8wci`%)w<+Nu;7ybdpul4w1PjJB3$}CTc3D2PjB?0?pio1H z4wKnA;}BL=TXz9*y<+8RdHR-Hwl7o#vDpH6=W_jX!a+cko;`c2MMMdj?t!4eEDC;uvrYtNY!ovNr3-h)vPPdT5^JZDt2#?u z$n^#mEm{zqxI-i#%Me;$bM;kp>`_X4(*a7B-ZTkmY3XtU?Zs}YJ1S3}YLNDAx64Lx ziwbS1(KflHl=78rvVkV*y4vgIqN>GmzyM5aj06o5<4U<88=cLH?OSL9wOqjogoO^K zIBK#(l~~|t6esSu&qPVsl@n+L-L`FWh@hQTxj%5dT)JeTOdB;)2^U2xB*v&B{oQo) zQF-E2y%O#O2~^)8lwfeN#?!Z`_U${amQ%|sWCOvSYG{5?cUh}gcVLY!Y2O{;2WrT|MttVhOxtn!{-sZls+8b!A-aGl{zbwWw^^p6`)v#AcV zabt>0W_G^J%AKU(frED7qlWTuig1b)lQ_&$)?HLoNZUhN*s#D+!R+s-*+L#tOs*J5 zDMOTujg6H>#U=8(>vyY}#w<6SIwl(%PRRyZ$RPNMll4kL$Bv&Qx7J24e zkB{SFb11ITZ^SKF2YG?oedFX1cOBvWxOrIE$*C=8-OCw zAk-c_d_+w@%m4yWQXs3AEG4C6P+riNmY5h-@SBC{7weH8GM_kFi$Rx5F$Do6a*d~N z)iiHylJn*-&;r4nAVBw$o<2HgPCD9IUnh{d$Mo!BI?J1u*qGxI?gLf;%XSnkqbwJG zW9eMGZoOQ&YPHOzojEe@J~VkO3u;Uz@}5|drT+kLm(pFXZR93!54afu8lwNeK`KCb z)ut&_CQKAX=%7q`lD<|Znk1L_V5m>a6dfqdr!7_P1erwlc3^ZUM{cT9a|1(xp%oMs zDS055yKi5lHNiQ+TzKN*y2yjM0!%;Z>r3?@dhQhA0s;3Z)iC0P^n?ZJ#B0{yp33mp zs`V&*6{H4p5E2DuY zK)I{dtfl;BU>AYdz#s&SP#b0+#Vd>$ihy7!P~H(CKC9+(P@kAQ`OjAsf( z;ZXir4xA@I2FM9KoHgW;mZ~T-+j(6r#hRmP3Cb^^BO6*@hm$V@7QV>^`oVP5a`~SW zBU&`g_rw>_>`bPkDwK&6^o*HfH4-O_?$cTUzdC z84foP*KDMFuE99|uiPqn02VZq2~^4`K9o^hBe{eeIZ%}3(YfdR-WfUlx$tKZM*Vw%oi4(8*jQ<*6g@i&R?)l=8-igVQvYR%bdCMRm_1bbw`h> zy%^>JX#)y{1a(YkbPA6Udp6Qz5bHfd;1%!)_72oI=Z5WGxkkBS@@NsBL}%oXYa-qK zeY7N9-6+N}9`tl^Sweuv;p08fhdn~Kuq!|1Y+FgjtFPHfsnH5qOxv<4r1gz#J>zG4UN?5OSla-zLVujuAeG z4v4Ix(6>q@_LI^g_g;?aZX_6v*^Go7xdm_$!yq4z7g(QXHfWtko{$|S!z7tUd-RYs zVPSGVm8BGyG0uQ~OJu)Z*U4THd!@VgBt;W+83(^n3JVM5n$;`i>Q&3->XpmY@AY)Q zZs}4SA!Mj=U`N=tzdxNGu;83;9X+H`M7IZ)_>>>Tr+OUKsR zS1%CzQ!Us;a7Vy4!7|+$87Wux4wIg(J>HdG&xm{W>B;-$I-q*&s@GQY^I z@Xa%GsBRVDcMka#=#d;s?jpJ!gB)_z>NT>G_Ksy_L+Hbrff_zx;*%^cEs!OXCWw`r z^31Nt9pHG!^0QAwr{+j!dVzGL=gQ=X!|6E4A&ZA4$k7(P#}H0Wp7rW{iG$^T?k7Kz zKRN#cwJX9g3FHN@I0V4&ILh}ntY4#ir)K-sQ2CXwJUk&-&BJlqBBPYmYk&-HX=(7PDzuA zDH(EH@nAV;c~3bmX{5}ED3fWC1v1lkgu%;J=5X$r7Ww>7&np#xFvLgrM`0Cgq^WOz z{g-q;u`MK2(8Fw_-QrR_-S%IWRt)A)LIuKav|&2AAHToiS`^P4NRN5x=a^suq$;s} zWvWsVjtg)UfTt30x2t!RgDZhb|aJ^yuS`}Nb-myKXq25yC#-;VG|3yu*S|$^bIEwxeDC(k*o;LoHhQfb zI(VK;PSPg^Y`ehw(GQ=J@D;29kUx=V45N6PN$U>D?^X+E^~UwG{f!G`C0DTm7Gdzw zS>$|U=nQniIQ2+4jv8a!aZa>>e1bz@E|bCh7B8nRu!sLcD-3-1UqPvTT2Vr z^|a`nA*C)NrS{(4U&f@ZrNwBI9Mr#}Ovc4dkV6Jl$>GU(d|OANXP$nFtm;{1RqT3c zWKkn2TgNq`&_;S{;?3875$by5F*uYtu9%`_xqjvsCvdp=joC+Gg>sEmKITx8y4g(% z<;6J;T{(}CyEENp(p4O z$HLu>kM*>b=JgC2&fQL@+)O&!LuDT6DSA(w?CIYn-L50DXT$*+-D94N>s>?7V^zQl zwf8|!|Nd|1l))fFL$(Vm#Ct=~6O0C{)9bJPoZeRm8s8ACC0h zbK)th*&_S(Tun+^D~I?dl9E(Lm??kw^po-@KYltGqM#_mK-`dklJFZ#*&DCDC__S2 zj9PYS>w{T_pc$SNr4+Ta&nOfnbLjCDTGk4vteWGAES{u1Qe2E5NY8@A;`EopGGrwA z#Kk1as@>KVEA_SHB=^w7KT2g&Y?!o8^^kqn;K**M>^FUYj9T4K4)9z=s){BlnRu?x(WFV@Y>Yy!2Fim1XxW?=O2T?JN7o*2q{2Bd!QKzVYhV zOs>(n87M3)kchpTs@JPq0i8=41687NniLV7pRosbPtGTs+2`%Wi?tb~bNOA6T_dq>ugLZ-q* zbew=vP_XNH<)xp|&gXgB`Mf}>%S-ZCZ@w&Bo;s`g0TZ(8$%hN@V)UP>M^R>uMT!Iv zFHOl2pUzLFC#JmQDp;vq;!?TCSy(bbWMt`u2d>4w&%qNh0Ra>>KdA>x;+q;@rL{LsuWHHh5EE z%^KQ5(833v@H7-Fk8?k`8OkbhvnEm;Ty1HrQ}#YhM=jNQ0qHwAZib9n2D92B`}SHZ zqawGuvvqE(M_Ns}MyXe^FWJH8q?s3RSJ4$*t>lbhP&7j~*2GpNCt6#6J zv=VPOE3jEyAlsygr4%hoDc(&|1<&;2deWqcvY2jWVi34-hz??448TP@)#9xRS}iL` zR$bI1)pA0PlHWbGKqO9@7NF&&P$zwuegqa2hz0QwxcDJI+%<&npyqc0IO+nIRlvbz z4F#85$OImsvM?r0_P;h#4%$Np^ZWYCsC7eSRAq|nJ0)fhnZX+Aj$SW^4w)!Vo~WY) z>_s`PqFgOHNcVAEfujwi{X7VMSJQ(?Z%`6K$58A;Q5YO|B#AMRk((;c9;Exf6Y#_w z9WBnH$36>7M9orqA)?Sn>uD6G64Oj_(UYnvfzVZh<=9Nae}`nai^>ivwNz&1xhR>U z2Qr55knWxV*{jDM*{}CJnK^2c9Gh7#8|zQV*I)TL>9Aa}jNA!<7i{Bq=#Cc)$*;)T zLvksVb0R(+IdVj~KJ<&Y2KU4qU|zrX}>2i2VzS6^+w3VGceVURVvg70k(~94`?Zs&ba!S&JC9k=< zCODrM81qTY>-oHv_P_MBs1~rq2pByIf?(By(Lz{EByeH85E{ya(rCfKTU7xFjnX~v z!>v#@(PZr=18ycEH-v24;(Bi<;VNbJ*xA9w?c|A@X|l;?r&TDSa4QdjVX{G=CmTX; zq-^2W?JrxQN#R&93IVWzhp^wYDpFQ0?%7O_Qcm!xXN1#84VK6}lq=4zbp^1K8mE>B~Md6<;E8TU~WMP*iY0G5qM7$7Md1ElAj0cQoM@yZ1jxb6#Es1{gy zHVz-1eGMEsS`Hdci*&(YxoCN$%o#jfW;hGvNN0AL%=72~4Mfp!g3_T2$_21HfMq}% za06%rT0m68Gh5KYuiogQ1@+oL28PR`#`cTco!;1?gTP&Q|3yFe@6M=%tBcHDKIOu@ zcI^s27y@Cisv!m96^(1`Bk>Y%_f_p*DWHE!rtF!PC&S2ShfWzTt5$@|f>iqALexk( zDx4IM9;Hvv!7ySWR&&GvOf{w+0>l3i6H((DF$_mvuf6iZ6|oQ=fu#AHJcIkm{>8KV z6B<*@OA+Z5^|O*i{moVYbAr$rY8cQ(XvPD>KpVDNY#4|jh$NwU;U$6%<92e7MRX`U zWJ3>`xQPyWHqv%-(Qw(jd^Bw(Z=kK#f=>6iMbyi;e)Wo+PGJMa0K?$@Hgp1mz`hG@ z&Ajn8>lRy8wNv%;)cN@%6P7!<#K14?ANFBj={FA zo8@h`ka!3Y4gp=jCQzUUzJ~2Am_JY6e%oo*LWK%2fZPQ(fbe5%f%HJ3VxOOM zkli@SEz(k}RDeLJgAK6kkcUGfq6}0E7%qrD2$NhOI}%Q?)?M~F#P&*>wsllyk*~wF zlauo0u)$O1kc6T#@&Ucfu;HKvk)w6=mdQ^gd||3-Qk^G14PZO`>P zRR91Strjf1$`v3hRuH!TZ>r%Rr>axvUCL3<3ufgGndF z(7|6)aQVb)#ZJIVfbK(ovutSR->CVTf4}?o>nczp>!&4B{`$?Aww&F0LTfa zhoQsqVfYA+*b<=~v|#{PQxOng1ke-oKr)L*6XL|_pTn^Qr9>LW zY`=$|ympC)3+ZL~D!i{t0VgS9NpXeDomDNz(+z*H#D(Jy;w{vTI}2A`b(JdEabefV zaR(xB+<{84j&@@$2IiDQqL)%ApqkW04{;x-m(J_lBJ&o?91jwkN!2SS&mALYtQ<=( zlg&`P6d(ptVN*a@#X5ka1oOEXr9P+-yuuw|3g8E^0qR1*G#Q>offuNX-2u-LA?6el z9B`3(!Q{wniBEbT>Nve-tX`mZYjqBpPpb2*EMG+F_uA1im-w4Ceu8YKCAL1hRPl;2 zp%<)Qe1?up76LU-*L3vmrNFb~8p&FlSB!7DN?Y@qQwGYd<2wk#={D94VQAk#9& z$h6T^Og)NzcQ0ec(rHG2y5aA4t8XH}BoY&<#;?vRl5_J4l%8i)(q~)djFDCJK+7zm z3w?th=mK)U4552+Yub_}s8`aFQDccTyy6CN0CK=o!Rxr9>2mI_2ju+g9;EVsoO<=+ z-&jg!Z%|{yy)nPg9ozxeSnH4&LU%|G(FV6+o26Qex+PV#9i&&_=^1=Cy)Q%`Js3M9 zmmbnF?l*2S9Yya=qL&=?w?|k`@Qn})-pREQPL+(fMhMU{KClsT!IoezGXTye0K-h_EtZoKISa%0`oa_g}l(wi_XB=Zx&QaE#iqKELoK7+Lkdd4+=V|=)7 z;=oGcA1}bV2INdzD@W}(FURGVDE)wMD)?H5;uCX(`O=~4{s8#A?z-!g?I5J)6iktG zx7{Y^P?=31p_#n-Ti;j;Dpn|7+1KFjm=oAE@>A6CJLuo=!@tFw^>qAA{GT6BAC<^( zjm^oYSBERFp@)S!VOjUs4Z?RZrp61p4DXPhxVxqbUBv~yY2p2!><_uQqAZ21rA)c>e`OGaQxpmb^tN_Z3~0dROa?~b zDODs|mdN(zMj7#q3JL=%y&<(A9K(e;+#%EfA2t8Rii9i;*($;h`k`Jfm@2d(JOYL@ zKeWL;Oa`FL016W)fqaAj`^Q)f2F>P#jY-hYM0;hH{`8vw|^0_)!29Tqadv@k)~;XoHGAFSo;3YKh2 zLzV^CYpe-a9~l|5g*IG6$si7KLkU8;h@+TI_y?GoI%D?4N-Hev)7&Cq-6)+0%{8}Iuj=arV)xqh9T|pp{_{RC z$MMA3Z+-6U$vhsgUv@_f@Rdydvl_@>@#_r!q%@Eqq`35*8SBdT%uuZPZ_u^3R@b@L z=(=r}sVn}X2-Qu~HET-~JsWW*BHnU1oMDbIr(()sMswYKI9$|!H*VyT`xSnzsoO8j zQ{z^D@Sc*et+N)N+#6?IPC4j+?$TWDZ>ND)S?T=JM5>wLo-_{H>ps_$Qhw<@r&#rX z*Ur4DM}&*8p`RbxStonYO`m4V!vc;VB;Zw%z~a)A1MIWe&WHe0M=KB+s(hcmW^6(< ze>pDvU_6FnytaVGV|t8L9Mu)iz|HI&(CD8Db|TVe!9xc$a6DkGxduT}gU`ne4A5#M zDR7XbbAlTFBPG+u2?is4zO(2=Nr zFm9CTXZYsrT8B&raF`pYMpQoNNn-#;XfgzNAl9MMN##RV4A5ragLKRQ3f_Gs{AB~r z<3N>Q2pUriF#t1E&CX*GS+&rdlGyY!JUbiHfvPcpf+vQY1aDXFbH>FQLVDW0 zXftj)#^{{g^{aHwxboGUwwib(p?ke(jmMe$@e)gA1|ho%HCo_zzXcsq=m4qzI7g>=^kydv=N=C#`j;t$JX=&4dSjfX@6u7+iyI z@%bZn_KqWVf@)GMiL;M-Jv_YY_H}A_)WPA)6ZG(|!De{>1A2ImYgpIeF`RvNs3UH$ z;ls!`(bOfn&K577O%E@Q68}7#8Cen)P7@Wblm*TlP?+M(hc0lBzcUg1ix>{dt`8P!%IYBi)CSM#j?i>owNqn`|ozd1&pfi)7Cu%KLC$Sb^CM~*WhUdgiyd`K~kQ#D{%BKn<{GX9vqT#7ij=c?8qvHJ+ z^`gji`9HKCsD`1^$C_F#vA;Fi0)VJ*^|{Lbp*17!ZYvR$kGm|OH2%OB&C8{NtZeZ_ zl>b=|l_TzMSz>?gk4*E`nc=whUe?2*7A37SEOcNP%bV1=OPr+^bcK>v5FlUu7mzRg z!6`d=PmeTThat^%_4ArEY9gH}&i*!9>}_>h08m4;uA?F9o}OU=By zvwpb5_8z2Ru=vB^xc2`{4})4|VAX40RRN)G?W^I!{Y;vr(glcwL`JN7W`+e=8ZVnQ z#Fxl$-VJDLeXRlDgSQ&2`_x7O1ruHR_ga^3WV9tE|y^y3*8IzT<5ZHXZE z=KN&3g}zYo3Iyak{s!{D`N=8!^IM5_wV};*m5~6olAz{!Edc=3812U}M(T6ZEx?41 zp+GQ(>kAg)Gzo+%Xb(^7$8Zsck)ItD44N~UTdJ=Y*c>f9~^P1gIkv0M{TW+J0UbKj^sH z61q%X_a#jZ3Dp`;?xd2N1iNOOlAsfv>L;-x=EH#u}mb&Tc(G)~x`F0y*Ynx0WK zBt~rxXKo|xv&SsAc>Cpc9~#lgK&?)F4YI_NM?u=YZ0BhT)nz{JX7DykgB#i!TtvUt z?&BVYY>&{8pwLNp#yIB*``I{0q-cG;%*QZ{)6qlYfL0Jk6ui;y;~s{*9H}8eAqZ*j z&1LExZxb1ce}^{qO{)?)`O{k6{?cAEj|Xi*b6{ z=klFG%bWRDnU7%@CpTK-fL0JkJo47NKJH=2^4=N}6d2MiUVOXV$2|;L)ki~uLJ-o9 zE_Plks@`4a<8B6r8NnVvCI~LRe7D^~k6rm^N1T%=2D|KnQs-&={Kt;yhJsAHF&Mt2#mVAnmSv+_FpNIwCA;bJ+JLTSK0x{`eNBlcMC~f1V!^fo##NVJH8##D4B^ zTEjZbN>g=bnGU(Xnyl)}x6DzsYldFK>MG3|#t6I=`LW($4a1MnHSDs)fdSfzH2@Gr2?1~e1LPV2Ac|T7;D#VTmDVf}#aRHD1_o$bpaFm=IxvK3 zV1T;C27nMn;y-*oZeW16JIoM-D5?m68yKL@%q|c`Jt&w42H@!jqGGU#S|WK@7kMu4s)AB-9;&0T`jxG6-fQo?OhfN>~_x z5t>~ZfeEp>sJT-IR0e<%{5*oG*@V?x0)YV-p~JAkBeAsvM_>R(@J4Btm=J4883Uz6 zqqv^}1Y$&U{#2z!ro%ET+fX7H03M+B+uBcgAeK3ZzyOTUdXq-rk=R@nM{3>-03+1h zsu7qFo3BBL8)f<#-g~=-=YberaRiY~Kf^bhYaWNKUwOR}xf?>qoknES&IrnffxrMf zLdQKud4Sgz*bPp`Z}WQ*>1->KJH@B%b6M!Bp9^A$E^(I8l$0r&BI37fqq1gyBHKx z2K9r40zDq<=&;m8*8Gv?m?)`cH4Be;92cErY%TS1j%Y^#TP<60-AtX4v2}+oDX?M= z=vWEt_Wq7E;s2A{*D*nJP-p#9-Kq3v>+9S+H8kB1NU+b;krkVEHr4hV-H&bTPTmUJ z?nPD)yVC1;+lPKg#_)CH^)={|NGfApfFl>Ou7Qp|_D544MfS;WTkrW8k}<&vD20v~ z+Sr=Tjz&+EZ`{ZpDA{_RT5pF=ZMHRYG$>U&(dn=>ENKjftBMKf{3kx$JRuL-`8BM zrQ*80Kwn=j4AJ|Kt)3p!&e}k~!~R9KmDDmc$#K*Xp&NeF*ZGD!j@Lu4qf7OE1#A?NG$8p9SE=nJdwMmOs0jrJG=$dWz6GpwkmD1$Ap$U(jIl@sGpKZ>1 zOntdTE3kEHrvfkCNQP_LS%J+HNi{g?Y58J=gU)(z4X(Mrs?1CT;jy6x%}t&4Fa%?` zrf3XBsb%#j$G0i6n>L04R~QAjEs5!vBgLqS03&&9rGg!Sc9z5HltD2G?Em|Kd+a(7l5Yi3wfl`e6ygL+B;M8?4QegB-r)G zNu#EnWow&7GSyDNf`*@=%B-!_*C5qWQb1z+xQVer9VkHUriH|Oht+bX$YD7wK4j;-#Z~ZB9>Yq`DPjiL#c-< zObnWApFeMT3s_mKJZx)$!b)YO@n$tNr-1T2_KZp7)lEyZFkH9K)7KqUohnoZklevq zs9Qi{U77?P;%BH1a~J7rptLkkh7P%ju|XavK<%nSI-gV_GD3maFK=>qoJ6n1UjY*Y zoA!lij@O-d%p|ChKlF`=vj@(gRj~Z9<+h*;bsKRQ`>4t3*e7{^j!=gXR~SFR_@=2Z zFV*~2t?X0-eA8pvS&ruA1lKZfrsE;^-#N{?R*f%L> zu1S(xAJe&Od!0#==V+@bpU(&T27$NJ9khp1ha&g^`{Ir&vsuCjI27S)?(euw!vjwr zif{`<)S68UFx8<5H!wh}*&YGWZd&f3GY!)cgfP1lVA>ZHglS=j%lB$FfN8r{5Dji& zh$^$AX(dd%WQ8Lk-ZU_P-)wP!XxD-Sw=jg)>}f#CJ_`tLVF=bgFzpV4u+XB8B>-wC zu5{4Bgqa-PH*}b5vLW@yQvg}?Zm%1H_i-bvX=jBh1Z-GMKMzoDu6ZDyA*e#{WV#{L znrj}2Cq0P306c<=H)94d$Ptgg0F2;m&>}FQAWM)LBA9-LFF&T?nGSP=$%!RYJhI=xyN-s55(r9;b}W*`k8*+Q4P=IFg#|S7>XNZ`WfDDu6Z0bM*~kM zH{B4LZq@_vKE-q2dJD(r1Y6~Ark&S; z=8c`f{i`+}=;d&yE153dALm}ntVP&+uc6I58ZaOOl<(Bnps7@*cFK2OOQ!+c#h_KYG^n9T zhd4WlAh$A9^>rEw*qsD_xr+#L7lYQ;YEY0+pl@GC1i6)=>aN#N!0sgY&srkLT@2c^ zTZ4jx0*&5H1i6)=n)hfZU@ItfUXihfju*I#L0k7~P>@id1$&7gw=z`Q4H^pA3W|pnWKP!oys3V^F-H47&LbY4NW#^)8??6+>7NwG~kFY+9~ zLIacCdVuVAmB}hi-4QT+->61aM-`M@_lz~|Y`;wh$nw;V@4!Lq_;4L+#N~(dHRuud zU2dl7yZa2m6fYmv7>bfjJH9(w4&Uf-Iegr~fX&1jh5~_>=9`dnqsiXiOj#-s={lTk z9i?qwRUM0?5>!$0v8CEt+{cihlJMB@Er`fB`r~+jq!TL<#|2(0c?}O;n(eC7jsjo1 z(A;tDIazNjz6M5D;jk0=y!yrryqbZvr zQg&Sv1qg40Zb8jNbbz1-E=ZA?w>vzvB?OmJCzFPnP8W=sh8AWcuTPYN37R zE;y0<&*gL_5v1 zuQ}2@-a+)_6|u*ETThfbi79#rpqx(gnhibP57g4No%p&VIe=f7N$x2(*NnmRilgvc zYsh;6-SE8Tn&~l~eyX_>kKxRCfw0;mngJe|5sRbnICLi>!!e^(CfQ-@qENpCK*8v%j5igrLV1kS}HnQ1?)D_2piPXq&jMrxHm>%O5M-krC5JU!K zM4o&m$cSNKpR1odAmG${3rv6k$3}Jn;;Gzf=7bCdwvubE8J<;)xfe*ayTQB6HPc~u z%(>d^FhDSMHgn4ZvFb3_3ZdNqFhaArWI|W(mqx2n-NJFe3yB z8FRo$8lf9YUUSWacs3ME*b#Pv?>KDi*|al!P)Q8H9JLw*9*7ZwA}|0W)ENXO)Mlnd zO&hj&rk~-f%r(<>+V-k-4pG4Nk7}3`|>SLyXGxAOk@yV8rr_4QJAKx_kT7? zUsvh}^j94y6P4df3-4vwe}2o685w0|6JvP!BffVi)64L9K00wnAe=}-qZ0)Eh6g}tN5NvYmDl(tpakBxG~$L)_m9Eo)HBQ^IRz-dk@_HU?5Nwkfo zVmV=c$6oESJo(h^2d*U*7OCSiEfUwY_i3h3Lqxi-7VS#b68clj z3kV%IJxq4BkX}I8TOWJ@0kI8OHl;m2t8M7r8FuDH$J-H#vi;a-I?=`4(t5mrHK8~u zxwb6qe7h1ncwN#!*Ju9iS+b;;so<}|)R9JnzPdT=0{1KB*biTF^oe@eIn9YeAa+)P zHK6x)W1d5LMz7Q-=gL`_q$p#_Kkt~*FuVXNq9euUPVv-*yQ)oVf7&BnB`l0a)rns+bd&0P&U_tG_K(B&X|=zEUc zy`hnEVprAnkLHHwM<^!kmwP)r!wfFds(L`v;xR6_|2o!AeBW`p7tsH#$k^xJcNAG| zcU_fcpZ~}aH_V_giRuT98(flQ7 z%(<3m7#yb2{D`K(Ox3>6iaFcSRWaj!PlQ?}2(9)IA%n<-S|8Pfm?`h?G$E}Rqug14 za1>kNq+8*5(=*IqFom|WngX-b^e1NJ(jU6Avf+*p>X~+BtPb8Rb2G4EP;2;wOPyE>NaP;LTbdSG9_t+nO z?C^THmGNCqsa^_45sIh%f2Mo!Q$BIL;X@Ccmm$61*VmvB9I5hC5`lXd5+efB(AL5d zWN&-tXO1@`RJWb9gl?c*{~T0|yVl3-+J= z-0@qN2_orY_2UDqx*1P|+pT|fJTtJZu75DFRuN$iDj9&Y@B0tOoLIerhJ8rA7`pXG ziZnDNE`3;l?c@ggr+;(wDXadK4pj0gN7xyHm=ID4{!fbi#;-0hZDvr~Q~dJB8~@UphR2dioW%N^egt zQPAM)DxzJ)f?=30&jfT{>t_Nwujw^Z&6a^@66%=%bKwZ5X9|+*Jv78%)ubLO*rysg zudktp2*i$e2iO;mhxemJ%Jr`sXt&|=b|bN^+x5SuaK#t_BH6DSi4EPZKR*RAI=LR% zt^e=c`p0zZ@6qjgVaTZ2pJs$0e}_VuDb{cgs^S^6S`e@L4eGIy8-M9y{4(2 z(GVi@|L`>)#QDz-FdS;P8x}cZbJ#pp6SaEhll4%|E_nGTU0tyGIl6A?>j=jUXZ$8u zcF(Gx>TBRoY`OAS(8myr;cC+upwtzkB|9RVjt3cl5n7+u2q4rILB#wdqUDPo;ZAx^ zgn-mJ7qDBruJHREX~xg|tlO<2bSou%P|LWb)=&KQ2V=rl z#Z~{jtF+!<&~?k=vEdIp;_)*?5pBQJ*FfpYCC>ElRHBbTSg_g)8U<9ZMETbE@b@f$ z=ozU54A_!3V z9NR?Xp3%`^VPhg+P)bzW#H+e)6Pqt;Nj>Ez?sv57hRg4$3G+nP(e@A{x4vq&iE#|V z+G_eWq1X>h4^MQK{7!EMvm))kPY=(G921#M!|N{rfURf27B+(DK$M4KZgX~S1Z#h% zHwR6B)0+d-up9jy07~@1N{8Ph{LK&Rgg?!{yHWM9dn=ZRG_zR#ww4O4vl)io``bAu zJf7C|2&nBG@u#0(95XAtpH=N@VTnXz3>7c^rZ1DLKhVS<+VIEM zx7ej~!c(1NB5$>?niD>(XXw~IYE`-h!fnp!sMKHGZ;2E2DS`4-t=zg%A3E(zZ#z<) zk3a0drv%D8Y$SZ^61HN~Gn3C*T_2#jQ0jDv+IM@~g%4Ohq!j8VCa_60AvZDc^kl#o zI2(L9o%kvPH;%yPA)zN_=;!kh!+#hbF+Av`7CKn%(F5lqi!4lvGWhDQ2JiZ%PLB%O zKhiVj`i-vJKGb#fZ?vaz?Rrhyf79!_#@pbxE(rJJG9sHo>wB62bEfNqWxBrdv}E@J za*(e&ErBTS*w{mV?RiPl>)K7Ko_tD~AL^i+l&9&LtWGy>;<{)KOuS`X4@{V47NPos zPMvhKX4bR%sEztOh4zuh7m<%NzsB}lIg5P6P+_Xx-)X8Cts7N*TLR@>%$}yIykzfU z@{+b!m?~~Y#~Uh4H8@{1S~sfT6(xi!J&)|R3zibq)>oNoijlV)9gvBLs+J8M~Z ztou6o!)Jbz@pAF(vrnG0ESGO=ebGw4wJvvW?5{fp({ zu2^Hfyx_x%Aw4!FHP5?xbE>5BAN#QM zqEUl-u+jo#OWw`l-*!YOC$WEXG~B}jGaUua+le*=g!9M3caAcv2tQhE^`av*Di=&U z;&aIveQmEg9{xY`Xff{!CP$e~#$a;&mNQ9CpVLmeE!^GmaFVk=96xjIhGJTk;N*zpxOA^nMtmPeADB?|Wc|NTFuhcim6pN8mmN`(D^*Lk~5%0Bb8|6wXJ z9q2xbpR*ix^dhSl-a+VP*QYr>qWtk_^~AY_rG~yD;0bV&#Yq*8_2G!T=5Uh5j)@wp zDx42-5T8sN6B$MOM6z-;ZRobvjMi(7fBma!ZS#MuebC&~6xY7m*VAE^6>qx^&2984 z5iBop49pJO{s|oRwsdD=XqNSdbmx^>7Wl*0Z93B|M4`|$tLg>4e$>V3Gz&Gth)T1X z^L0G(7g8p0=3UAJ-h5Pj4rkoR&ckS&VxZzH;@bex4&T zo`_ChDnY6}^&McXfTS#Eyd^LG`Z>EK%b6MeMvsQ9IQx?(M{HEFi=dPGu&{f=wxCiuQEi)6Ms@fabr8*U?q9SxwJyy-hdF;njn7a; zcaVZ$FRo&fGKF7yR2@Jk`zLg23S%&-;BnUH!LZF=cF459oa%Jh1!J9OeC5;)z8Spg zulgEfNU@#Ycxd-=7lT&+hXw_SASiv`;e`F;9OrZ&cQbhH-!wSL1i@|k$V0o2yBM_Y zvIYf-ASiv?;e`F!c%sbR4BqsG1_zlSI6m;u?&B^7ZT`Ck1&JUieb?c%?VsQ*^KmzW zxBf$egG>+{A9rZ?aTkNOeW^h~f+BaNI#>C)i$QZO4GIzr>bAE|BC6cQpyd%7 z6eK!950?=rcQI&H4-ETMP{@Jx&9Ud{AOPz|NGw9XgBA@e8&8JBqPm~ySXA3j2WGBwqqG`a z1C2V~e@}&;a;g!F;yW(rSk&>VuA2wA6+o`rjU?0AJh$22{!x$qPL1G8&JFJtqRa@a z&GKlaMP!x;QR+(`^eiQ{c8N^A^)>ioo#QJWyX~_xo%C%E)6GPy`xy2$@y<_q&_k7` zi$QB+G$=@PQXc)g-S(x~M47u8oW7N>7z3FgIKJgUPgj~Q25suAK|vx2O5gF=ZM)|Z zW$tG1=6)I+WP;%MmnNO6to59;W8XRO8Tz%Ywp0_kz z4B8&2K|z8+d)a*!IiqaHLg%YK?q~Rp{u&;1y1>7i%v}t6d4L9G64kfR%}{rh^X&*_ zd}8%mo_GVoC~Sow)k(c*vGZLEUGOvuWIOv7E}=dcD_qMb_I_BR-XL?*(_Q*ljeL!u zyPU1+l%dmU=nw-=qyKJm>IEEEO+V$WmH$<9$7RqZvikmo#u*GwnE%I=wyfeSI!%k$ zqH{|TQHQhQ?~NX!=<)va&}D=LD0}sC=Md-i-ygIOEqA5{UTa=oT)TAIxd-OFpzexH z%6YHo2M2#q^u*ekIO7Vd$UV|J`Y-E>NB8}$>KB#M3qLR0eC`Lmr%?a?;#UZNBH_r4 zBdr9!e<#suA^dd00seQ1?pdOhrt$ZW9Wb)nVz$Xg#5{p5#p&PB#PHs{=)Bawx!7j_g4Iq`iEDYk#S#qkIG<0qU& zqUJlkhLWM9_ZR*4jmpCop* z?BC#|BWL^sI(M}X)z?7jZsx=7UYnfn`51&z>XJ2zqUzf0yw4G#n(W^kq=Q1xYk7W) z^V_s>r`?4_H{_0L zbBz&ht##5zc)9`Pnrk59rMHCmZU8QG4Me*JB)EmgXg3ekft1}02yS7BW&;6C`w}3y zg&}JBp**T>@AU-1Eezo`5Wuu6uXiTIn+67GGRgy@T?Z1}!Vql+0;KHofZ!H};0XYx zeVHIEw5XTf0BUFMcKXu%W_J8W`Bmncj8grvexNb^uv|BUI=(h_yO9Klgb+81`^^BY z=9&j$=ZVmIAQ=sXf_B;h!KJ^GXNvxp3)SV5F;p=@nov$XZUJ!&2+qmBTT*e z9(6bPCUec>fOANo;PDb$H~2Pl&EqhA@Fm<=!e2JveJWFzpVyncjuATAt50X(XkEEt;9hHl0#R>rTOeeAanMO$mrONyIh`ww`MRX(;UunkBy$&Gzj)Z$ z;X?z4WPsLD`WhrvCZ}HJ`S=JWzTCy2ZD|_R(Dc|}-be(wm7&_xH59Nr2@b9!g51TR z9iufUNGQ;>n~5N|GSuY^4F&8@g0qeiLGEHuSC$3^2?e_B7!l-FhVqWlP{7tu_ykPg zxbq$Qa-8mBQ2$tc4H63U_z5D&tqhf$t)YOepwuf>kDerg+{K{fG-FUdNGQ-}PB}X) zw5og>;Hp{8!n^g(i%v4P?+>ziJMz03aNT0F5}S4eJQyr{D;qKl+ja@3{s4@(&dMvqU-tnR^g}L&Z_U%!pics+lt1)dZ084H7?Lr; z2`Gh*7<^YozlRBsTV3@17Yt&5(d6v@{TG&!?`673+OK;Jle*L$OyDTh2VcX)9n5^A zWeywVOSINGd~m4afW)yF;lr-G(^=rFnrbv*>e?cG-8{Kdtt^~id4 zQ9cRlWvdR2-zp57fDe7!xerh{zHFX=Gxg;PEl6u+r&`qu#il)|g6Sl>dOgtbAhg;{ z*P(`6HB(=M-W6KaAA~UwOwl!4V<<}c^+4+pr^}JR9SjK8Fq9giCG}C{^@?4*Tm|5+ zVZ zIVVp-9%Rr7L<~AeP~MIjVN}pjf?$i1V!)t4BX1QowY1yEeySa*im{6iFE0pE!w33fz90#r*u zli7s<3Vb0X86wbT1fZyQ|BxJ!XuVrQLQ`J}NsdUwjRZ7R`z~Bym>iMlGUw1#han+3 zA`vuIhNcR>L=uuC5_LubnyLX3k|PpAA2d}fNm$6?%NU5Ny_8ig+{$XN)4)>e^GB#< zO0hf?0a5U;?%qhEfV%NTgDDsJh&dM=X(H5=7px*63Qa~q3;~$Ck0^+MD6|;`0TKl; z#TG0Z|AU1p$(PUB4;4Ea`bE_Os7?aX^?WXK0)6CBAmt*+&%0wN#|wHpO7BosxZ#v&jJ(pLpYC=vw= z0({vZny`&JvIH(0q?^k;6|L9vlnzXKV9s>z*0g{C0QcScjh0?@#jn(3Y1E8uZoNMD z&rFT2yit@C$l%&OJvA#FZTkz9r_WxESLk!#$ZT@-WtT{bCAb2lbc?Cg1n;}Y-qKuU zv#y%B#mZcFNj+uVh58<2-Gw4vcR>fMht&2LyzVkQ3-6KXX5D3mUEy1T3_&R!QXTj? zJwqRU(_0m2T&!y)$KWhe%Y`Z8vEN~-$rm;{W|LfO-5gvM#`e!)fkMW_Wa7~ z8+-gMn)oWDKm_aNX+Z{1-}xO~xP`9PS&_M^_A$#XDU#)uh~TH0>bG%`03H7K2LfTn zDBD%F?|2VZh$%7cF3@(^rPzh<(iB`Fc_PzJ9Pn}kZpL!noo>r#rA!K+De}2hnlnu>#9|Mq{ax|sIzdC&SEwmKoW@&7fT^KTPxne`4xnj$J=APDWGo@?LBv zUwmv^PI9q9pMhRZr_o#Y9~y(PVxN5udL>Wv{kLiv)>V&vN%XoabQX>o^dc*hUO^DV z_>Z(YTZ-NG6|730$TU%{z%1*=F8n*mSjf{)niBvM+wUJBmYIn?_B9b}^XqE#itoN7 zwBqZ!!CPJJS7v@Qo3GWGW7`HZw3t|r&onDOQINGxgaCNOhXk5M3YyG06!eNOL!ix^ zLvc-rcCeQWLFh07Kw7hy1SCTQ+*WN8ifh_PKr%!iWCWndo8(J|2s9c2C@Q~)AS6d5 zT8#uW)nrIWj!49f1T<9?5|SelT}A?$Y9}NlM(E`dwEo-+cX5HjZi1mBYiSkGn1H=1)X1lJ+o3IkZrWyrUhbFl+Q zlJdCCoFN}K=Se$8J`Q}`X3miBGUsAPD$MeHn>j-vXf`kuL(<3y3uZ_JgrPd4AeN++ zlL{gr3Q?mVKyU?BHVS2frJM#G9(T;pAUM*<9I^PZ!jubs#GH#AsWQu>$|4{NO-8|Q zj%X`5lvEG_QINq(fI>zAjR%e_2=J0uH2vwJ&r4o2&dD4fy`uY)*ENvoMxI48{M}lsV?#>IEVracmRq3~aZdIgqYPLSfyioo4n^{SH$cx-dhan)B%*a| zw5Y)>RW-dV+I!68id5rTEd}5d;EW=R9+NReBHE<1C?HsLes2PlT#<^lYAI-^09O_h zpcIK{>pCq82o_yW&qM_zSESnR(NfT6Dc*Z*N2x`7kC`G7ZNFEG0z%s^BS6U&srY&= z1#On%8|9z&AwVe-Q8XFo2Ly|LT~7BLxgoIzhPbwa9qaq`wchtqw8eI=^3t7h6R;A% zkp^?^U;;b66CrS=7ov}-$ng}wN6fuNbL_m&xV@Q;@=bEydd%cY0Jm>aS^ z-XhLX2Pu!-ug`%;&Ubqb#%w)iBt)a@0j(&WR-b6m-eV6+eUf{R*~s(6=&eC?Z;`5xdyAd1@E~hGZQ^Zs6kc6g2!THt zAY>#-A9GNS0Yh~Tv1$U1ztmpJ(S1mtw?8b7=q<>~q(G_%0lMRPDh&-53-dJ!v}4~H zin?~tu(o!%RTXeg((jliF8G7ni2T?#<*V>;%Wt!BHGQ}>p%hvi0p>`ro3F$ZCSR-e z5!TQesi0ICD?f+}5i$Zw0Hsezs%j)vIP!$9pd34YrO#U*>sH~MQj;(BMY$(N|G4oG zT`C~WmkJi7VrxdD!ay{8zT*Zd-BG1I-_7lX%v-8^O}^Yx#rgl$Emhw0edk5lw97I* zA+m9sx9mj2nuJA@nQ$1M2ansb`3n<07!nLIfuM{N+(00)tm!B z-<*~lfruLkK=IA#8p#ofE+ZkD+)?SzUT+0;)wIpXNKQZT0;oe5(!yUVD(js(Q*nWS zQ3MrC@|sWtL?LPv1jscC@QD=421_{w0Aj#z7!@3mhatYTY{~^cA}wHW;0PQt__V~! zP-rseVn|4VBG*6!#DcW30EIFvSP;-lJOeEffNr5B-WUlF8Q3BeCU86H{Vr4m^U z>Mylc9~G#z1|EO@%2JTznq%Gbx|cNWNp)Df6sOeWO9yjbM7-06iPT>?O&C(vzDr{O zt4DvOAK*R=7y(gedsQnikQz1FI+XXa&T0L13c@V=8cmV()}~j)Q(IMj+saWdZSpKr z&EK*b0w_Y|L^K-L=YT*zhJ0s0azzR@p=E$sDo33&#d_ajclZZWLSlr;ms*__;=j}f zJd8nt=_Er+s9E1RSLb?r^p?}R(^rU;WS6^ZYq`-Zd}qDLi> zM4hCl=?#4jD5+3#InNtniiBuH_G=9wsa;WvHWvP^&I!Gh!jQ$iDUwDJ5%ZWk-m$tw z1#Y)ySzNOC<1#O4aFfte@SPQ6OpK$Z+^BFn_T(KHr#X-Rq1#KYb+3dfx{H=qZEx#* z^HN4^?P?>BM*3zfuZT|U?OIEbx6X2He*G|RO5LTpj?ft2VR~=p{klE;518W?eROA; zF@6q@@zYC;yo|Cgw%mWT-ZSucN}xfdAY{&AfX8^r5P?P`zzBG+a6ocIqSZ)1)BFHw zazr9-&Y`L1--}y884`7-Uck~nQA&Yy z0a0i-3If!a$-fAQLZ?v>AgM6ZiJLk}0UAOuiug?j79eS1Zm_+-=#!0hqaFE0PXM`` zpJg;XU#9Q4IVWuXNFCG3K@*_PD*2;i-GAyq&2{vnV6DH`=WQR#ux0jxmI4_KBL`FC z-O+xOM0xsP-}MK54jdULkN%^iNQx!60;F_{$!S7A3kDIrhK7}+{U|B*lpiHg-(&nJ zi6Z(@vdl}=@NAHL77SN3XJybHovjC88Hj~$v=iu-c0+99H_4hn=V!V;a%}&jJ`WvE zQC>8et|?5u@X**vGwF(7U?xQ}om~H)^*Nw~+$2RjlZu3Z#Xr^>KWPwp9J6z-(*Beir#iLG`9OW>w1rC{OtD1tEZ0o$}7qR6~}(%l?Ar+vd=^iR-cC!7?tkk#wArh<4*01SPc4*5fmF8rA0X_x=Rp{!(+F$)rv`ye zk_dUDAjhjn2%0~kHGtGZLvJ!KBBIje)t&=NS+CGyF`lJ!I>yU`Djr^hn*AESPNrzX(~in_qNYVuy|HoUt_9oTC%yDLe%ZTu$Q*=MAMt@gmq zs_=;|3%B%Bi`V;nEf;_0Q$=rBK`Zpp>_M@bH>|e`^G0m-q1mG&xB67z4_3Vu`T0~& zjP^bnlm@?=JqV78r_?@9g{vI5j}#OU4zP^Ckt%0ep?kSj>X^ey2YVZ(QYjFnwy9)i z*T>c!0i;j|DT&Y2=g?5|4_PY$k|PrS1}(uD`Ja%4+vQ-1S0Go zH5fsu+P@HlQD-Eesj3f?gye`s`)rK? zO|=^mk|Pp9BLPh{|1*-19Fb@>b%UnL|C}TwMQ zFOGGy%6W8*n`0z&8;6f*hGy&XHgojP(dSWf#6LhTD!zsGlD5=Cf3t?K!3NMP zATLlFK<-v^nIG3jaYAV8;lx8nccQg`oS5=8Il(D*B0?22P9T})gaP?iPDIH$X|q=- z%}m^*ndq4PCbuPaBu)PWdyx~nkI>H+oMI>1?nydn zute^!`2{F;XE~;d$KJHcRplEN-FnKlOWi0LK!E}W`N1U{Il|n}@6@{#(mQiMR)t5b z;TDRRlLA0XXLwaZM~~|c-73&1Fwhqm=%1LkOQu0nQ3_i6*KahmKhPbz$ZNbtfrfSk zy0r&1ic-+hWp``nwu)Yi~H7))JVHrGU!#0|hlX&tA=I z4Aq%uhw@|@k?qY=pN+N3R5;&`jBH9MX29*G2g1gjCmFGAh~B@V)7Qe~=|}Z!zC9&B z+NdWP9PukyO;zYzjRm(O=x)e|U@Cl)8wEy0|W|J=C$KZ%SRnMZLpp!z8dh)Uk&!)Ylf-IU|j* zD7OyMt_x@nWo%HKvMu7G-mzV)iw`~2vHx+>wh$LD@4E2}amHD?c1t3LFdrs5@by{Eb5lJ~}_pN2fP z?H@puiY+L$FQ>OUQ5r)+soMFXePOn9B-YDkpW#`%-fMg5wuhSE&mQlZ`NqI?_Ot6% zRjEDBZaWb`clHMm(i*7Y!ZaYYx4*}-qJX+%5J8z$gn@ETA*gZv2`V%YP>-AfD5M!` z?K|m6hv(COFeQC5qmuy&jv}C0rw~y5BmnIh1t6rgPvJ3k#Ou1Ic5uq}y5f_Wmkm@T zOi(LE5ma3eP@jYWg|vZE?2?Vq$OhBE308~&5Afz?W@+ss~RFDi& zNh~wU8m#DLgtcn|VKof~){v>dLOMlM5{Zcd5I3G#G#H?^nFRFFWd!670no%N0fe-6 zYUf-KmD7!=9D=HyPmO2k8Nfir=M$85B|){G3aAAO0EM)HLO=-;69pjl$t+k6Q0I*V zRJDMBfKuBw+D(@hq+-^MOl1sbC+UGmnXo{>OpcN|#sAD96K3NAK zq%}|&@gzV@6L1b)l!?>0iEuWpBb>(3z$w@a9Hcc4cRRr`BmpV^vP`7tuLx<^CPL~u z9Y{kS1rpLJj*>vk5pbC7i@H^}AT4+qNJwj>gRfC+Mg)qf0unnmqnl%$dkLxPWkPDJ0n(lO zfP}O`3S{_1LsZhK#%@sV0fHL0kDx+h0QJZLKq0Nk!Vo1c>3~WCnRUGc)Sn1w)&T;F zj|I@4KLH47!xI83zZ*~aRJ+}+navmZoPbvRiGb?P0njI(0|;pi!~rEh%o1=8J&=jh z_)o&w^f}>lo(r6UBfvpg<8VL;jtM9r<^L)ZDeC$tp#DinP2+$xB*#ZcNNbMJ>5@Pk zP{65vCKIQvgm6A`eKa_o51fgmz(HDj#3QC#(2b)4LgEN8%TtM^egtKe5>)F2fLhQW zP)KVip6vvQNdgcDrMav#K%IjKsH#5!1uq29ou>c@=`@xE$gq_3sl9tBjUuRVrw~;8 zMSyx_6rhk!(Ue4Dnvy_f4KAS+CZJiP2q;nupgmy#A+3F?M3*bUu~M;8y9GtL};|C(Yw53C8R&C zck6p2*lcudAA3t|VWsaeJGNuG@8|R%MWm$7>Zwue8dhOB-}Pk-uhE%QgI$+V4Z0?y z21Bky4UkTengn7}fm2#(*(|TT^gU9OP_R@lbYVlpZ(dyNkeACpeJ-r_5T z5i)(IDq7)-;$-FRzGr+>w*7d!Sid}J9m?7|tFv{KYU}hG8EyUXC|U2=n`WKfC_~nt zJfU10?{xK1SUB|5zOygc=D?!3vchLF$ery;B9>}b#(TVkq&)$a<^hG;6ADRq(o8dJ zniKTq9BzwfwzeKTdRrJTUVu?FMeYaNd}DvqJnuQ-qdv(8khB-T(q5ocdqEfNnvZ+d z5+8^El;+9|<4Rqbb|sqAosiZYCvHzCyZ3K8t=j)j1p_-%7d# zRP7dUwOc6FZqYThc5CGZa%<@qX>QHY&6H<|>F|?w^H0-ag#3^gVHZ*%Iz?NjmH`tS zp{&j^f(>fBS)|R1TsIwwKRzBjB0QtH4 z$1i~WG+{b;>*7iwrUfK-;P|Cc=b{OB)X;vU3Fp=1w@Fi{Uhti&hL<>ftU7W|HS~8Dcv-@A7G&p4Rg>QK zm1#elU-XT$xT=*o&M2GeMD@Gxb>CbIJgDWnd}UrF9(~t$f|o{GFgRL$zKcS9MYA({ zRk*OK(-7I-qKS;3uZfIAHIb3yl0>c%B0Cgu#zcPMy@xWH$CmCqMhPdKN3jD2j>;p@ znMZh{dDN+I;t}33k6!X!-SrM_9n7{08a=hlT@o~*#bb#>KHJaL;12S|* zDj=KA(gFFU-9D0X(<73Q(wP)X$6}K4HIw9vVUknd#3cMN5y>_=A~}`h63*#}L_SeD z-%B+!A&D#|lPk+)qFO>GsL*6`ipiw8Pm`H@fXK9-)MVBfGDAN$WSXFiw`wvwDum47 z9%@@Av+?y*P_Cj(3d%3-&R4rfrJE6zV(3_0GCXq$S2UM8^-WyD9m6HtWG>U=vfN9) zX)2M;R8qYRmB?Z$xvDxYsa8TIh|pAWim9ZzTQ&TNM#$|vLPiaT9rv1!O|65GvGH!r zVON=OSoag*u=Nf$QJC+1;aw>lhMwroVU!~RBjir6GbH;&W9L{DGCETTPc(%(^-UDQ z8`H7Jn~u$|Q48+c@R<`J%F9(C%Q zcx)nn438HW9@%!1N4REqL;>?i_0l{dhk4|hGLNW~@CY7EBqGH;(uzs*_{$^Ish7V= zZ;t)mN?&ifj6SWZ(^RwVF4MImX1;mIgyjhmmR%9e=a;_FgcPAo6NOO!1KkOA2`PP? z6idenOvYzI;fp3zr@o0$_+$Du+vL8@sU)RvPIqqP>&QGoIybU(Xri)uoTO?Ar4gb+ zQ_3l(l$L;+(lc|NY3l344*lHXuksJllaBin6P)8TnL!$9(bwCOlXusUB$-3g$Q-W8 z{HwLUJC{)cVlEY}f}Gg5dpQHMlh%$&C~PpH@JDU*IeoI}SXJyyu|j0k#Nap+gKQ#6 zSRHv_Vh{y;Y0;CMq>(YM)EQ@SeKcR>x$uSBg0C_!5=<8@Rn_7$r&%p=T`*M>yhdMK zyW!3JtVQFv-F%F%*Ub4p+{foGRgT_7NH1T}k5R<$6yBn%Q@q93YTmxIqqkFT`eZ$4 z4lSgQb7o~%i%Fr2Ux-R4nJY*(p=l%M)ba|abeXt$A<4s~tgM5yeypVZ$HVkZp3@fL z$@4K(o_U@r4_$oe!+0d0JU9A$UI77QBo$=Q3Kn$egF&^iA2};rUPM~p4!_6it-J^D zQC}Mj$kInD%o>0{EQd5?`KpQ1I8qGLX8<2X7x{Dp{?vxhVU4<*1GA|mguF|nQIT-1t)V0G)y4r% zpYybFd1wmFCTU>>x_E3!@~2Ls2Ba#=JBFWB&wrbKRt=u$)VnW|To=9E4Bc>?+Iyli z+3I>}wU;($sdS@KhDR3jqG#%7!RV+Kz3ZXJ5oS2_=48rMhwwWvx_F;b7G?hIm10Cbj>N} z2OQ*xR%j$NIsY^NWUV%y;xyRY(bU=X&M0-}U}u`=B{lOg-x=z)!Ooeb!D;$3&bX2l zd6}p^xb;N*=Im3W|KRPnDx9kpRMUG8A*z;EJKy79x;GWu0c-j4&>}oCYjtfuT%x{i zz|b^eLUzmHpOsbAYv9It`WPuW!pp8GAJv#<-$JW&TFG(hXM;SGap~*dNdXWvS}l}D z$j7hJ&*XX+_dB5GUFmGj@0zahI%X#CNuQ>EahkKGs&&)tJamDIPEr=hyA4+76&g#0 zXF1JQkt4&u{hSem3_*e>yb&bW#yKpgrNf=|j1~)waE5qBymfR8 z(Gd)>0c^E&Bw;jdf=8pATB~yrJ+MR%932QOzM9@g*dVg0o470ynClEVg$RNxLYUAk zM2hNO&wFayXlHYvb+%TBeperxu1+2Gqrm;u+<8Q&Uv;Nb6r} zJaWEmoOXVbg{Ed=1L2~c)j%&`+4*NWRRM8F(8X_9r8h+pJ)yhFLhV_wFk9#;>U|7c zNYpNN270M>>e(7+YqEu^J?HJ**|Uide8Qb@DLxj6Wo>LCI765$fS(%to} zsk=%jO<(W?N$g0gn^qo}B_v9~rvrvb8$+bpJ;AAT%d^U}+&iRAZMFP;r?*At9(BoW zzMtaX5;n$WO>}-+X!Du}L-1Yd;COnprta+9vRlIKL)GrVPCs=d$IelMr#oeRnwE5r zoK~`x)zC6y%gJi!`Q9J~Vuxov0PutQd7YHP5JAVZSr55-)@vH0%iXa&>m?uLFO>qB zjv%0{D`>{kqCFqWhK73h3Yw_kXL2rRseCG6g}P6Tm02}%<|^6EejKAz99oQ$h5{nmjo+-KNhQZ`VgrNWSj( zJ{dNSF%1Ts#@$gRfSj+8CYnOwb22!6s=^TXp@7W&%1-n+fu~*`;Bh)h}$(bE1nTI#&<1y_Mk{ zd+Ls&oN0-&g87MFIg=9k&iDi&C%+r+U7MJ6@q}fgM~w($e5?%=oH;2`lD9BXl6z&M zvf{eLpp%y*hMqb*aq_^+66)YYr!@b$ZBHiVUOi{osF5SWbjeUtWe>|)-fQZ4iSojx zL|OhkQoEkien4tV5~q)vmpG~FQmtA9bNhe0C$avXH3_J%8a6V>+EdO;_zS&PU}s^Z%mXIEMbV^+^dri zcJ?I#p+24DTsj!Sg_Fjzw|xq(OO)o#qRP%o6y+@Cua!N8l&2)To(t8Y$<8IG^%>VU z0j1(|E>HM-EhUAkNnvK9ICs%el|GF-LskDvoQe^So6L?VI>( zXHzxlYh_=oNPCFYFyrzatA+(ez0KZQBkPOe+5W0UOv0KyU4PHL?GV-HG45^%`EqS=JMgqOiQ+ zdSbbO8u*GtzHf0N$G(BTMLAbcb0P2BirgDmq!E9U*#G99#HI%}Bwg%1xs2O98J85B z#kuwT&9xU(Q(e#B;=Jhzd<)%6G~kAN*AN)Hm)QKkeFW$q(d&%fI{<`l>1mA|=p_`h z04#9k{(E2x7hKKF>G%6JSbcG#c>GiXyNPW?w&pS%o7Rp zy|?$jo(P3Tb8r%;L;9H}R;A0+w^cj&>zxeJd9M$tJ^ZEmqD#`PLoyaS<$ zZ`sI&tPM?kbFAyAGh9!xO&uj~8WA)xIb>n@TD)*Be=#5(ukM}foN#%sUcHv*%|)CQ zCwiSTgT}C%sS)RLccCX@32t5@*EgfbDEQ{V-~|N*32KJKamO78;9-;9DTO=o zW)&w2PrV^g=-fu%dDIqliD5(LC(a5jN{l~uR-)#NsjPhMH4A6}eJ%0U8^59NtDKjY zmzU_)*eBV!(g_3Bp~5@%=2f_TnA+zIyu3p_aLT+V#vt@7(G1y(~GQd~ooc z#QX34F7X`22wDg=Bp}rA^i|=K5hr`X?x}SIao&zR-zB7WF*mAfhZ5gwT0*M(6VE=q zHBnetn5d|zNKk7o!+ca1z?4?tOxRIgHhc#G@7Q?Xx*hrX`8z21mc{5d)ke1C_2Pt02pb zXPBV#Sp6oLXzpgBZ7Z2*+m>!(cy|-gqzO)?OuUm}g3e>>pK?lza`4b4*7Js^&X=9Z ztHSv$J9ii}-+#r~tQuB1`E==QwJdM9)X2Cqu*BSIkh*mw4ReYvTLZMy9np0t!!Vu4 z4#cT$UZP*kKkSTFr@ZYPTaDBaiVGI@0}%i!HaI?OHMkry#8RHJoD>I z6A835{M_$`$vR6@JqLPytISOg(@=CCTm3#&(F&2GdiYa^wuL4{wfj?NgO}O{)|*=v zzgVrv@OiO$pE#rx$@^599<&#u zt%b5}H?=CQR*SZ_XjK?z##XHwuceN5aJ&>RGsbxx+j087FV5?9zu#x==ldi%qpv#S z`~Lp;MNjwnto>bUueJ8tpSAWrC*j#&HT~?vO?zsx#~-+N(#0L`D=W+I`fyXGEd9ZD zm%TRH>(oX*?rzcODK7D#fMkvB&&6*Xq z)22;}#%CHQEnmJoX=rE&X~@c$Xlv%-XnSUly%x-@udfgJX3m@$Vq05Vla(u1CarC4 z3EsE2w?{9Ho>Sh@(P7&a+&-{(OhdHmtlWeZD^?^kX3R+D&!3;HTel81jOL%#z4tS@ za;r@={j)XYR!&3c%d4<=Y8?_?fA2# z|KUcQzaX^GYy5{ZjEu**^Pa;wTe@^A@|+3hoO4cc?z!hC=bwLm($dnBtXZ=r+JEch=-{n+yvDxfHLppozWVCq z!V51PmY%z0!-fsX+O=y#AOHWi|K?5V?CebNLfSWWVP08lXo2?Jp%!{WdJv}|i>8GD={jntKY-*1-H&sVFyYfYJ!qll# z!)wL)yOPycMBzQWi|ZEqpmTT@?~x8S<2~vCcjG;_@HyUN>+cck@3BQ5kGHal0iak2 z20M`9w9`)0dt8v7KKwmI;OU+hXLIr5#R)Djn@oZ%kcRhuwvop=fsMN+1#cY+_12+K zR16t#U~k3n_o%3+BMvVd5W@?-f7V%N;VMn+%8Zh+uN{k-4QB$gQs=2NHi3O8;&{k2 zf5D<;!J@?p_Th!&Vff)aMl{|d&G(@(cyIZw%oWk*Q}ab1u4dWu-5`^3Let zFb!UD#TDWFVL7pMR#UQK?!4&5#xus^T;XNMiT3ZB5gpuB?XT6GRzn@Ut~f60K3-xOZ z{m4GZuSP#3uI==5leW$^;eF59Ta(30Tf*@%Hc-Z@bsLkOjTeUN3Te1*xL}RGKlzOD zI4UeYms;)XV%(20pufzaa z*}gP-u6~}?D_6d5v3+e4|e|vJGHm%#thDlzx`cq~nvzq3G!EfS-w(g#>cTAy((}P!QM_1Ch z_Vi@!ndc;3r*E|P8r8vC=hokY z*V`#y7p?<*u(fWm>TDz7eHb{TeFf$t(abvV=ep9q(PTGj7Df#F?W1Si@bM|S; ztU2>TL(FhCT`w)Vojbd2W;$!Vy)I1FZR|}}pLw3%cda`oIrHp`Lt0nQxk*dchClhW zqN_*tg>f+OtVL0L>eBM|RZFAsGbTs-w$w&1H`hfkFRG7rt*~qK(FHbO>g}ZDqr92( z?kTn7G412}oH}iKGP7Y;xP~woFfi~6*IwP(<1y&m_872FPFrXv_JosLY_eFjRN=S= z@WL1PEh2?Jv;tUp^V|2or!O$_Kx zT*~$;ov6k`P+lb)+tKdRx+knyY2&)fq&uP>HK88$AHFntXhj|CF(a&a(DWHIXAj+1 zb*@U<|KGgU{1*@bjGNT)pnv4P;n_4C}u z`egp8jW(oKCLP^t|6je<{O1qUwMPB?^fX%yEUORK0VWd+u#VNsqWRMrL*uKfTcT|b zHbmR!7pw!SLI>=hKVznM_N4)5 zliYNak8;rtKL)ld?c(cLwLD7RYuEQZb$iEDMceK*W!zhc9y+($G|~`lo>?%3RL{iX z3D?iUMtc@FYj!9Ka|fD-m(68%==-8$SLQoHY_GL|h2Q`d7V8!J0jwIprrE28J_nYVXLk5$P=^@Fvc;}3S% z6}>vRgT>t`mdIFIp?YW?%!GTw|4XkmBMQa=p-H@;Pk#@kVwB;9bvQ;C`U8~t2uPZ{^e6Ad7FK*!EBC2oIUTfZqJq5 zet#bpeg4!fJyfGjM%B^b4YsnX&X;$sZLyJIXZ$KV#dp_6J8vxTm`%~H<<;SsPp+Lh z!HEvMGk z1wGE6F;(rx*|Y9Tme?TOwD}w>c4KnZ#ase6c+s#1)0bI?nl% zEj7_Y*6xF+n}P1Jwc?ezQQd2?UW$Ho=c;J)Z8k03k&kxW*kD&wligp~sBFzm=w5F3 z3#ZKw4#ndpdv=D~mFS@p7vQybR8_QVRBi&g#aCn4+NiXpl|9<+ZQ#+W%DYcr8NGD9 z-Huc>+2QKg%?+L1%U2|;?A2x?8F~GJ!WN?&Zh#B%9O}MBOpTs7-K$Yu+1}okpeo6mZKPMVSXBxf?N+V1xz09I)vA^i$!c2xtg!Ni zH_NN$k8p4m;04d%W$*cT#L7Aquj&bS{NnZDWESn;xWWcsbJTT8uCk-6E$Ld*ns&`8 zU7;>}uBac|VG|wdu*z01n;Iw2_G4pu*t&IV@CZ&WW;2wJn^T)M>@iWzdORM0?@=ee zCC4ekN)*gf6dr-}_Vy-t^1glh_GI_&-N|*=T^9xp;^0nu>@@T2%XcQPeZ#wgmT~+m zue>t6$8puB4eim9o0_am`MvMRRd%gzO**?%A=>b={SVHr!>?lMOVxz$UD+ zrlENq=w{66W_WAncyA_V04qLv@b1acg62Xw)*UZaG){-Zd?fJDfsu|i|NQ30NlTWu zB}-Rygf4<^QB6~Qw0q;y=$V^sDBM}M_Z?L>{9EnXjmEuYk=3k_*6dA_r`h>mv$EA* zcE@S&aS(s8l4FNeGJ5f%k49Zf@|9lU-50Noj$B`D^G5C7cNEH3t+PJZZf$r=y&a|6 zj#6*!uO8iLKE@$dM{ip@1uNjqjkSNE-0q=rCy(lAw;RpYX!={`Sh2R=xz(nLJMv>! zx3(o~?bY4d78Tde2vdf2>mOfoU1g^Y$nLdm(fqf}i#Fd?Zx@MG?zXD&?KaDt-qvo# z+aN;m=cc#Of3W!L&rUm|zOs9@jrG;-EV^NAmlxUA9^G*6oM=~PRXVR;GI=cK$gpy= zF<9Ei`_Hrm;>}%A^;_zvuR6WW23k6c9C7-MlBd3{7rcFo~&8m3!sTiG3U&75i1-=+4X;fmz4%eEw~Ez8Uk%cJ?X z&KPsL&4ze&wMAR*IN4;n;13=OW7Ed7Y#D}5UqjS&M*-K(>J1y#C)+N&Bzf&?FAs;j z`syo_-it0s7Mx~}&X?E(Y+Zje#3;oo8*_kZjww#cFaHUzaBrSxpu%UKl=gm^f)-vUtAL zYH9i$5H(uOTC8dBh^C)1=MU6k3a=rrMcBF=p4>1Gez9u`wdvTn>8#|6E4GC`L5(iI ze5=hAn{D=JPO7V`?H-{mdE}w@CjIZaD=D0GQqr3Hx7h4|Q&04A zU)8!Z&ge1UZ%bZ#m%Ef?EV+-;u?&9arx#^mmM?nxf{;D?g)uke{rymx@9!T!JcW-iv zeOOq9ri~esj2kyDS+;mV(qhkVJ8!jzpkeW}1WSl;-|BOeFCRvZu=MoJZ=RpjpE57W zcFj*Zwp1rAt+mOl@$-{8qgSfQt5>f|j=u0Mn}S+`4)K8~J_oF+sY!0W>4xOs69+~# z`N_7%aPx{G^is>@FePulW7OFz!*yCHOt6ldn>_gb4u*TLkFQRus;UxPj7_r|g3HXX=B^phPP-6yol!rcy?%DF z9eIW)Z^D8L7vE}I0N#9Jb@F~2+)Y>4BokWBN+zASEvcWfc|@E4?z_*0Hcz&?HQC6U zYZvq+J1=j1<4wsYKk@j8Ht%1xFq~!7?dh9VVDxP|`Q(%BdBf^(-gdqHwq%Npl!A!? z{ZYWn-k&sKLNZ}OAvxLl6@Bx;M?P%lV7|3`d~$+~XlxfRJk3V+(sb6iagEOHA8IQu z;2kHPnA~LL#ARj4tZNF%3Ck`@3MXt!3MZ~f>Ly-f$6B1Mwr3(Qd?#%yMsuUJwZT4; z$2oqZo!?I$d<<=k`fsU?9@^Mci5U)~`MI|?M#pwlU7~e}P3XAk#(94K{)dyd-+o7s zYPHn??ZE3qdyhWs>Ry$+@l89D>u=betX{L$K1-UFoM__#{eeXWW(T{%qOEsKwpqJ6 z+H*z2-sN_>JF7;_mNqqn)4I)?`jClWmz~n~?uz8(9TSr==X4||)L)W}%U_vHsJh&S z10Mf$C*S?fH+5PuoKa;o_2xI+;HNeE>yOy8f>lkyRXC;A)T@WqMjc_2M>pVwXAG@2 zx$S%JgLVq<2$#q>Ybrh-+p=w2viCjrCGY#d{^aIc-efn9ondI-cYhon$6zR6$T!TK zVT%Ww5banu+&IH7pQibE>~hH^mxRyG@o9>`F1qNVaKC}uEj)(uHJSItd-WT*SC z^0H*qJ!6uoozs#D>uQs6tCuAc$K8<3n08Gv-!609cRljK_lLzg+7G#+FVH9E?d0ye z-htCT7i$14+83E-7A;x)dq1VJ;TS!=X2#I)xVdJuR=?50Q>LuP3}Lqo$$RdO!Hz1VY96uKJ@VWLXUm;L;I75_rG`eY#n+DXJc8{%4BJW-6`7H!`&cmlp!5F z@xu$V`;!|QCu0`G=rM8QVoKK72*Q0rd-VL}({azX4(n}PF3U`1x8M1Wq}3LY6QB#z z2F6U#C3|JFeJucE?7ACn2wKI0tJ=oklEwB>{b=i{v+VN8&qrm3cNRW8!H0CXgU1JV z|EJFSm~~b^hSZ)h$%KUyk`p^?lJTc6x6XQ9GPd$syS&0ZUDA8u`N@0ty~ma|wyd$` z&G%k-E_v>oU-=K6748FVsb2b_Cz_2H(rp18?Z0-;_>PsW;dTL?)M~fiFW$3oHHIZF zy?5I!^1JWZoiy6}lTMnDz&6#@CkC5fcEQYY&FimC-ez{i{;^mF*=*F<*bv>Y2_ME* zM@KHr*`4Lkvu!*j##2%Bhkx?|@A1N|ygvyZy7Z>5Ki@8$2W*ylGX~WCHOaIU^~r>8 z8&Ip3B@@P6lT=k+V*@IkfnImbRmr0tc{q9OqmLvXdg#IAL;D{{_P;+K-bZ2SjXt<; z=gszPy(>H`L>=wEI(lmF!b#oMC#&t%WiKB@&_}YztbAqla?E!4Vpab;-(}0f-S#(-1Y8z!rE%7E#sz6o080(cWU(dO}4DxlHT@honJE_Pr>n27>_UT z@_~)pI={aeersq;;q@2VaUZaLMqiA-eM~a(nkmV+*VxO3@JVB@OU8}4+*a=AC(*rk zhi}6`J(zj;Kr3vwZn-qM^Nw9mkow|GyZ6H58_aw-|MrTWy5AlNFUgNhpI_KTWh&up>O6ZA@Jzm2`q=*X4YghW4=f`t+xs#JFfhn{kccd|+JQ zy!n_!KMa#@7&9F$_GHsuoi>3y-LW*ZfA{MrN7eV*(&DUKx%DHipYiQ>57N0h6*Ky% zcvgEWw$v7@qTC zmc;S#JQWWe4}HKsWL#3W*FN$I=Vp_gzv}wv$hB2_s|%GK-8R(iLpXc~cl%;{tiB|- z95shBP|`3}hR2Y&O#FqI-_<${*{khlYwAVS$thRVCX+YKOeW0kNhY6gQJCBN`d*uS zWo74+pav68rrt)zWVZx)ytz!`y$=8 z##}4fg;g&425s{15nMf`5-*(7x!Eil*te-?qzc(T^nG|K7Kgqqf@r?(+l5 zb6@{r=p#N|S&q6d=6S$U1Z~9Ad9-)<3vs9qU(xPMZMs>sz`iDtP7B4qsEM{k_0i)u z7wp`P9%Y||w{_X+T0E~6GvsA9vmh&~JbdMaW@35z`)3aOtY$i%c@-vgcXuV5HlAe< zu{PRj1S=9-iELQ!&%MIZ6T=o436|Fw&ggnH$qk6DHN`$@tce!PX|@kw>c-=A`Krg> z^K0u1>}y%!TOrYl&2yrIx8#=h?UY=2lgD%40hb3>Zuk%e^}!42I2V{1aD1#9(HE?rmhQM@Fl(T$xO99b^(}_Z{$+Eb1&8(ZxoBCjR%iWiiIUd0P%4>d$h zF(A>xVYLhw8)}9YVQq&vD>r)bW46AjuN{kHp!e(*ji1?V)yRcs-Sg+*;>%Crz7cBz zwAjA*6cy*rXhl!r;_@?%Th9wFxFFmc;AYCtH0p{TMNi@@>BH(c+TN#UIQr-1lg6SC zQDaDZ)0Cs5-mxasvSZouutksf^@PpUZ3H6R%thWyD-n|aj13DaKu){ksNU#7!H!oafpSP^F-{M(y zPO`9V!|!}8ZRrTzj>{es=MC-l0rZjuQT>zlVc?7^yA1Qu;3E4#ER12hBxkf;xWc}n z*<$VRQ?TnUoOU1epuJ_I4`K{ik>aWIj`T7oY{9@vhJGqC2OyKFj?34zGTf+@71ey-Nm6k zs2fy-*$cm$0bPdi(P$T}ee?EHUH0Ltefhb5Mn2l`WL5NoW_$@O7u`OyuzqF7l5nnF zmG}bP@|N&r&7e;_SwLT)Y#awNK_B}I{f@DMK1qjru884|cx>?2v4KnLE@n`|5W?bgZhXh*c`qakxD#iTN)x z8io;t%HxGfqtU}&X^-J@_1?j$^I*@2-tkk0ElxcOMuCXOkbv6}k4q3`;VfWi!HPH_ z^aZogkRfjB)S`VJW@~gmAPUEO+?XH}4uBVW1~;qN?`hbg*We8l><=TnqR5YYC<_fh zxxNp1!+k-Ab-y1Jh2bFB=`9AMAg>^5k3tb^1>o0si@I0giU-oqG0BfOy~A8R7?8jihg!=_c6b7f^OAAjIF{Fd@k`wzCL!=s-)q2|Ch z#@B=M|8^{FkAJlL-PxzU`dOQxKl#oHd!PR6#YbnQ5x;L+Zn;tBjt7>Pmu)L6tKGLO ze(BBS6URRBa2a^8{S#$T^)nmJ>xq_zfCKMIx6a2)(sy({n?=UbZT~+{&LG`?YQONQ zvZoF{^Gf+>uiD$<6PHy?s_Tji>4Cbgn1r_Z5842Y&sjP_^TaK9+7DNw+QJ z7IM!=j)j8yKb&s8v%JuJ{ujASrra7|9*&XWj-x-kp*-62rJ7U!{^rWi5^nP!Pmj~| z4`rc+{X^U6rKf9hEw8z(EPDCrLUVr0q!lP@P4{`-^|tj2kGA6=ecuyymTcSqld^2I z?JKqM_Qyw6H@nUHVC0v!& z&yLvi=lK!&JWlyOl9uD;d9Lx*CHc-}pl94c_5z18mQ=JP-{B9Z2kfzQ>xa5JPw;}9 z7=Qyr`@T}w<_R8foTu6|4jp+;chj_o*{5a@pGywU~fE)s%&A%uVykw6E zHK_htq39RtBJXrwu)nL*y>G&nedTf3j;}5&`+yB|4B48Rva;&xCEA^T&z-3d7HtYu zJdozEDdU^6o=Zp9hYRhDvGvi7|1#;`u9|533;Af<^Z8uAWr~h}t-jzvOIX_-XIXIb z*H6i8j5d9JUiN2I(ObX1pzHT&FaVATD5Qs+L zC!hCsHdB56Gv)E-)tU3E^6yM5df=C#qK)NC)|bVbw`aSe`tRm)IN8yqN7~D6l*JEy zue_$nc>?1R!^*D^ANf9B!x8x(R1iP2?KN>Ch8gUU{^X-{nDw2I4zoP32;cTB;91}{ zdgH%L7(UXFFS_>m`WynIJp*5ANEv*7@Fr4d}sNKaU=4LOntcj#dTl zT{xi`doafElg}5@y!PMY&!l7Q_@l31j=k7o+(!$3Jg;itsk9fHepQx@kNsPwG26=1 zeR$c>=|;2BuxRt&wpFw|W)oX<@89l@8}6vAySJ-)%7LGzbER)<|9d)j+ZIE%-7YVC zVD~~*4gt}g7wYmm8q)+Z`|Xd?p_^ zf2FdaZqR0I3=!WRX8G7!`3vHM<(aBz=L^+2M1%wF*lGvrKe{1@nBfNs5jap-4p^@( zjW&Mo;`qw%Sv&f99Bp}=e%r<`zq!0-?8)hJt?AjN{E5kUu@LaoMEcEb`=;DPx+#Nsi->lV5Y_)G|U*ce~ zZRp)&73^I^gx2=`owatyk2d5GJG^&81bX-AK_4X@FWM;icRS9&kJGd0+reLPl-M>p z_Tq*dcA)r*!H2u7f@dFFpF_;>@QM*fFN&zK%o8`N{emLWUnAMBos$Pk9r5^^=R^?=;(C@;^(P;M;vX47SmppKi!u zM`%LdiO8J!+4>yz4KF{0p!}9kh4O#4JKnGcO<>vDvg|&TZB2*|o>R^?qz9Rrn~nm$ z_YdoHh#7tilo4(I$3hO5b=-U?x6H2Vi{rstGtJFM?G69~Xx|spZU3|BcE^|4Ww)j` z0t2>Yl?l;k^F$jGpFu&&P8_xll%FaGV}TwM++SRm#Q z8f_n}YxdgsI_fZMX9GO^cx6H*uu$^=&(OnWctM^a903_Tz%zKey&!K@s2f&N2(Xn@ z%>>aW$5qoelxqONZEp*#TFP}hN9v`<;{EFSmu+)t+ZE)UJG zPeVfy(Qp3wzg6|ENK;zY4P}0JeB_4Q=n332*OURl>{#j5tcVYOG*=z{;H9H=NW@ML z>TgXM#adkoAu_Hzr~EyT^qM-~@A3QE(s&l0#z$4ZK3eB{Jn}$$8i^8yO5Si@`Mcw% z7iTJ?!~eRb&SN~!;f^#9%2J-F?Ukc-zQ-d6I@3s$pvZXV1uQ*2{$OV96vlX-qg`np zl%+h;wg2O2o$v9;!R|B?M^R+_c(2#J_V}7QkMTUmSEYGSmggB0f9|64C~fb8->j+g z7|)YmljcEL$`d{Dn;+Hr9*?YDn?|ApkF1Wq@oz`#e2+&qot{Rb1VzSGuPMJd>izAN zb-vrfF^(`GP>jN(-~RS!4twJ5qcepZ@@QY&w$%p5GgaBD_^% zE82H?X#Siu6h#b$zV&)5`k4wV+V^{W?YU_@${C8^GRlhfT^`zWUK)xbhC-j%ZbiRb zX+`^fk4Nu@Q)!17ioYkH`B4tLcrL9_-#IpZ@uu=yXn*vvO_1DB-fSc7jql8d{lGP#f#KeQ@Wf2gl2b6MYng=*a zeEL65Hob%&A0#+m(Pn$FQxf0wHJ%lww^$s;P8x6P3lH!E^fH4V2qzpFaMHq~CJ*oo z{mkG6`N(Oqz6%)?U>9f5A~SeFUL~B;km0bG$P9yI6=Z>^k}`OJSE=^vX@D2xorEC~ zj^F{Fp@$i~AT$<7zz7K$Jis&TUl4ff@IE{86%() zs8NW=GsTkl0kR**n~V!6JhLo`KTh`Jc=?p$Szd|1^A`FKrd(?GaU6J9QG3ZQXqRlxCGD!Wf&~UP|MlH z3qn;!WbgoQgHK0ZkPi#=78;#HKzLH?Icr&D=tsN3Xyrtv2eofWC$=*F__gBQ>1}`q z;_a`?6ynG0Gjpa)+Z7%hr#XlB*ZD!^txlrn!=L!+pGG0~P=V8$tw7)9p?x=`p(rARHqWyHJ=LRj zY)_+*J49VNKQlJobXw+zb-v3(`)^D`QG|yM)_JN&?Yk+BLT*3o*todB3iMqbic^N} zM-d_P?uD7b98$3etSPsWLUK3@Pb|v3SZ;&t(4NJas!UryN2`zCp11P(0!Q`mxda!I zdlsWQKDxx7Smf_YpX^!%!q4EprM1bwXIl7dv*))dAAP1fJTqT{ahxxBvX9msf0OS1 zTDiu>rO`GcF$gRIVew=kvLr z)On=mL2v!-?3|sExOh^ z8U2iw9op5FS(Ax>d1JOZ2fqKNY$1oHhn{}uHRblj9$PlQye3o8$}aUT&KJ`z_O5p^ z40jc}8lp%AacxJYscy$#a6oWdyCda+ThorXw`*!#{~@a_)4kc)AAjSV+$o1n>CC(< zlMB4y2jw;87Im6 z{bp^(p7n$TtC9lV%5!2R`rzcVo*mrfp-11w(}^+3!RQjks^Kb|30G$8Ox(yzjg( z2TrOk1tK4^wS0l_@`GW88whi8CZQ9X` zi3@MhOy70*?v#<`P}jxQ>^e{K5EPFr$Xe11^%rGwhaS2#lgs1~6(9SIb(WQQ=$Y4K zKAg$3p8phIwmCOD-u}bfL%IB?9?Hfo+cNgyjD1B6H@m&riV2p8mcGsogCm7+TF^IZ z<7a-9t8Men^3KDpEV6i~dZ+oC!UrTe5uI0vH(X{H_R;&(w)nPoPs&aA4Rv9-u$k_C zFmSIm>eyxILA)K_gFB*>QPiOWSD*(y$#bK0WIN!#s@43(h8*b?L{G!m{-Q!;K>u~t04}NQ( zawV@vZd>-HRU3R@r~|_F=sUa(gO}slnf&_9V>XEJ-rA#mmKp6s9n_c z7U3x#(aQ+rjJtMbrcPmk2lSJXG2Ve9JjEjpGXh1$2NB^Z9x=!WWPGN&IoLAIIyHHsC+TH~lRe$b4R(CiE?C zqdmYI(8~;dAXEfBgcBDscz|c^~z%FlG;fI+)1u+9od^my!_z?z~!3#oF za0F%W0MAhSoixA;@+%fYE*!xFJVOsNctJik!w5t#d4Olw!3^0)dUal46Z9bkav>TD2IS>W9&J-SDMf(_7$c!H=WOqJ=xTJ zcFw{Nib5T{?ih1mG(JB5w%>7YarkCVT3m(J-olyUOMY(=CQ7FIRM7v0|9ES$>xkW2 zSo-iOqvhF@QL0ZFzx&q0BmD@2c6^lNN8+tTNRCgu+CEf4(eW?dQF3dMFL;am-eSO7 zHvHZK9PTX;Xq76&BkwKPrQXH)a!xLsWV~zrs_SDHqpRZ`ciG%qzbmX+^4vBZNPG0? zM|}q5`ptKElbd$gbXb2kRv&na3(<7gl#wxXR=DN;z+Stp_gx-(_=z->W!h7i$O`mS zj~aL~jY96B0>AYhE6{g&=+T2|D2fQ7Ke*2d^i+=;{6rds+(QMvdcPIuyFB#xC(}?A z5kjl>S%IGFQTb1$QOF&l!h?tT57=`8-{qmTpH4$jL-hj1Gg5{3=nywwVQg#r#8_%N2#NQ#fV!=BJs ztRIK>a=8O`FW3L9w?xa(Tu3}r{ZXt#t>L_n^Um|m?6<{bP$@eVP6oH|`gb3oQ{&!G zX4>lZJ($+dw}+o$eZS^)m>O^Uu{~a3y0@$E3*+lQ^At3IcW9ySX&FcvC8>3X_I$(c zFzS4t#~!z%ATP>@`#)n^82oCQg01JaZ$1p>MweU4p#_ICg-j0F;_9od2klsgw*95` z>S%Akzo&P2c7rkzU%9v-e(0|KM!>1*UtGdS_vjef)K~8He8fH}>GAE+h=^pCf5OD9~HThXpO%<2dm%U$pK%@SQXT z+o59YGy8lFNwJl)G=Be=GB4(kH{SfH^|@8*(7rF*O?A0-&7rP=%_@-TYNA&8y z*d0;+$96~5!aJXyzvFy=l=J-exgC`b)}H)N%j1K;&NLTVZb@(Etcv01+Hd|cYqhe; z@31{O^zwYAKVap@_5Ye_DB>MXqVG9Q_8ctEzTS)Ps1E(MfX8{hrWew3ygbk6U%tiD zuX;=LIOZ#s^)jOu=o!aXr{CK3j2`C)>}NhN(DU_-8Cg+}^L&SyFD38wog zMh~WUJ`C^*^^*NSO~bl8z4Ix_(C^GGYJ$;>z781_U_FLTJM4knqADXYcz{=F&;z;k zDh>J(Jis&5{yj@%2Ja+g@Bq)y!wg;!>W(TYg9mtq9n9bb`Dw%H4~_N!&v1YlyddwT zFmQ0^!~GtAlD1Wwn2qeh>Nh zi(3|cQ#9slGl;jw1#&Reqa_TSjz-9vnCsQply#p{r6f4w?xo|ru|e)Tt*hWNb` zv!`b=@sB5FClq!}`cznH4E`V&Zh^2(e>LL3Vg5?SH!8E?S2Ftlz9;>ajDd5u>xupW zYl|P!t8l<-izcFKao_*SOfB!)_3XV1o8p82%f58}$j!OB!mdhO0+r<_S*MIDTUnOP zt+Yp4wb}a7w^^UP#xie-9{$yYHtflijV>!Mt1g>bmO-b5pT63(+J`rOuQOaq+%~;# zMgfd1=0RITR`q-|ZOGs^*^q(nrVS|^K6j`gxFV4&wxx-EwdIF*cg73;J@bQ#aD@2A zb(uoBH7mv^FJ}$!;$5FuQ})c!XIU@%M^}xlx!^Zfl$G6WFZ^We)Z?cTwX>fS(@oi3 z74Zjd&YcoJ{%U4i{_cuw4zKuMUY|WVb9?-j+U)c;BrsFim$O4%&_6Nlf}`I{&s_d{ zFNUt@|3!W1f_)943kuDHJ3gMCVs877REE>%+nzhp{uy|#G8;eiTl=MmAE*7Zun=4^K7m}_|=uC0h)$XYpl2Y%FP*FbruFq0X*paV~)1$mtY4p>2(%dIXbqtC{m zmGP@`D`Vhqe`s|?p)K6yp*S!U;6?OxF|;mzrf9h5FAx?We<1^+KZ`H^Y5c4GEBRRv}}UiK;bExNfC&xWrq#zu8*9vo_n3 z%PV$IdA?%46^N>$+(CO`n{VR{C7a~OPm7(LeWWmWfBK6ozU{fsK9#rM;_I!q?Bi_4 zvtQ#}cTWGx^jGQ74*cd_h&pz1wou$`@mNk^&#`j*(4O3DhwrdR|MAb@)6eYF&p1&- zv^&(4pTyg*jE-Q>A3n1uWU}^|f5(r}()2bYdeC@~z=evGdZ+}HR{RyXFO-VqZ zq<{@2`|C^gUpjLCA5r1rh;x{qRZ`%Ue{z8%%R9NGyz@%SD~=pge`t{9TS^MtIlMr- zDlQ&ADE|m9{;3)M$oSGP#NaL%KYkhe{>H-x(jIWb^$w0ST<@pxx%r9Hv-Y`pcyEQc z{qp~m#v+eD2uhzy)%h+DJ^bGoYQ+tGjDBdz%&a~C^qn5u_s?lC3h{EovrhYSg2!@) ze$$XGw=Zm1Q2K=pEBa9Ftn7y~&9vqJusUK~_w#!hZdGqvC_i3!I5#~$_DJ^RL(6W> zeW5A-+2-uFn%b8}Hox|5X#PcKXCKc@!Q0`je}5W^EMCj>ql>yccX@*bUS_Bjf!2Q^ z{^0r9pV%)fS`)%=R#^O@hc3uIl4${Vi>=G1FvTNUev?LoLi#SXh;mDb!whDjhnlunC3C1$d}M3Z z{(J+w*el`rxd66fB{#tRl|K!0uHP6Bzstu= zg*#_#{l*x@`_JiiLx&sSIy-8W{circF|ULQB#Bj_pH4@9p`TOU;m@QA1Ak?o z0X~00worBS!StSF;H>TG9dM1ucz^XBwmk7iugTVDw>N~pUvT=E_}{L{E~s2LW{Dj> z{R0N0QLkU1Uh%^#bA`FK3%*6y%&ZvtlLZ4a(z~p_t+qP0eb{1Tg!em`%Xafyz4_z+aJqS$G^QUYfpq{dQtdVPDRKY zFZ@AyA%{}qf4M$8b#d1ht+cYGR>(Sg)!O@~kzhY46hBDAkMq-U_YK)O^X;wwC9k9lt#xZvRSdZ2H|!goe*wQAQX*Lm$9)-IT2;a$x(D9z4TFE&Pd( zKjHC5L`}nXdswnEv4g-}YRS4*TA(r9%t9p??1xvW3~6(MLl5P+EZ3ENr{_`;W5&!kXY<@JlD*Qd2_{KBKYvND7(FXeQ@jg1khy2X!g|)0o3&TN%CarP! z(-3&wANoJu@|ZnR+4&|L>$T&&G>r8+&+f%}ccYHOio@x|i^aW)Cp2xhT5)+*E?hbx zd-@Fl)GJ>2=In&((=Pb@=dQo+)y}6+8vXRH5CT!vn4EnoH-KyU znU7}QIG5)4Z!YKTG~jiF=~xtXJ(P01?PJ+L(>Iszosyjse{NfDTzuqX*}AyuvFzv~ zZ=a^w6^!fH*J;!3{YXxyjiLSNA9ERE{5`JW`Ew;)QNp7F7l#U{ED6Y$@aPgAQ^I3Q zxT=ItDB*G7;;vq!OM`!i5sX*UE?Y&_v_n@PtVv0ktJOxr9$H;VC6t zSHkvic|--Km1XSs!+KzPNkDxG&nV$jN_b`oHGJFjDS+9~}+4QnM;xZXA2>+Z{iCurw%l`0XGO~yM&sT{C>7I1?B_8}~J<1V3 z`w#Wu`d7lYEMa&+^FNN{t`a`8gwHGCEhXGn!Z-b6`W#3V*jW;AX9@2q;rEvC6D54O zguhV2-}uM$Igl#wLP@}}68@(Wex-z8E#Z9nm`3HFRKj(|l7v|$yr6_vrmX3i=NLmW zj1e)XXECQ|F}+h%0_SJ(sFDIJOPJHM;yFEwIX#OxJ&RNC6!S{p{45UhbJ@^-ibwl7 zJ&QR#i#a`uIX#PmcWnMw0>vZ7{A}V8Q#@i$&tgu`VouLuPS0X^2lKxYI6sSRejZT) zibwl7J&QR#i#a`uIX#QbJ7NA;0_SJ(tda`ME@4j3is$q!=JYJ)^ek@X{I3Mg&*IZc z4#??Q`#C*}7nZ~?D&fT?yoB?=3Rqeau&jiamvBo7uPEV_CEQxV#kP`!_7d(W;m#87 zD&g)DURA=YNAk?FH6s(s){bD9D?V~CyXIQ_;l1Ir1Aeb)IQw7eb=To9yba%9i@%pP zY<3BM-)tDy;%||W;{{LHM?`u1Q^>AsY4YfzSU5mw6fUZN3GG-8TIOwoub z8Zj4HVtOX9U4PTdC>jM&G-8TIOwoub8Zkv9hG^_65YsbYT>sPUD`_JGC>mv;Xv7qa zn4%F=G-58Y#Pp1Dcr-BG9>I^S07at=6pfgo5mPi`ibl*umYAM-_8*Eo=M;?sC>k+E zBc^D?4J8erXtbY;EHORvY|#fDMWXp`ipDN;F+BrL=YNVu0Thjxq7hRxVv0sg(TKUA5z{lq zoc}2r1yD3%ibhP)h$$K|MI+{dMoiB%^U>h+GKxk46pfgo5mPi`ibhP)h`FE<(=*LQ zI|pG2M$ssMq7hRxVv0sg(TFJ;F+C%uXNpRoXv7qan4%F=G-8TIOwowx8FA{F;?St1 zXcR!vh$$K|MI)wY#1xH~o)HJn*!-^qibhP)h$$K|MI)wY#1xH~o)N<{nE#bP(TFJ; zF-0S$Xv7qan4%HWGh*{hnE#bP(TFJ;F-0S$X!wzVL?fnX#Pp0f$N66g6pfgo5mPi` zibhP)h$$K|JtM9vrn8?CC>k+EBc^D?6pfgo5mPi`dPZENXp}(Fh$$K|MI)wY#1xH~ zq7l6tS%|5G#yplHMtjhLblQ#4|VM$83`n4URP^FKwS0E$LT(TFJ;F-0S$XvFl4n4T#r zfua#pG-8TIOwoub8Zkv9=7L6?dZw6H0!1UHXv7qan4%F=G-8TIOwWjeXKemg0!1UH zXv7qan4%F=G-8TIOwWkn8O;AmplHMtjhLblQ#4|VMoiI&=^3$kCd~gzplHMtjhLbl zQ#4|VMoiI&=^1f5=YJ(oG-8TIOwoub8Zkv9rf9_UjCgIaL<|%SzvLj%h$$K|MI)wY z#1xH~o)H%*8YNIPVv0sg(TFJ;F-0S$XvFl4bJ6~oYH+hB__JU!MI)wY#1xH~q7hRx zVtR&b^FKwS0E$LT(TFJ;F-0S$XvAF5i0PS>G5=FE3ZQ7j6pfgo5mPi`ibfnnQk+EBc^D?6pfgo5pzK!re};f z|5G#yplHMtjhLblQ#4|VM$83`n4URL^FKwS0E$LT(TFJ;F-0S$XvAwvt}=RNi{}4K z8o+N;O}DQ=hs#n-(TFJ;F-0S$XvFl4n4T#rfua#pG-8TIOwoub8Zkv9rf0>MB~UbCibhP)h$$K|MI)wY z_^nI~!Qd6=qKn28><^TT2(aJr9?2Aq;wc(2MI)wY#Pkf==6{Mt0Thjxq7hRxVv0sg z(TI8HB&KIl#{5swD1f37Q#4|VMoiI&DH<^sG-7%taG3uo8U;`^Vv0sg(TFJ;F-0SW zXv{NWdIp@%{}hb^C>k+EBc^D?6pfgo5pzK!re};f|5G#yplHMtjhLblQ#4|VM$83` zn4am={7=y+fT9soG-8TIOwoub8Zj3%VtS@e^FKwS0E$LT(TFJ;F-0S$XvFl4n4T#r zfua#pG-8TIOwoub8vD982Af19&ZdJTN}y=O6pfgo5mPi`ibhP)i0K)zc_z&NN}y=O z6pfgo5mPi`ibhP)i0K*eOwRvGplHMtjhLblQ#4|VMoiI&=^63dV#%naXcR!vh$$K| zMI)wY#1xH~o)H%*8YNIPVv0sg(TFJ;F-0S$XvFl4bFqw~@q{vpMoiI&DH<_FBc^D? z6pfgkA=~^<(I|kT5mPi`iiW>NBGHH`8gVL`yqKOz8S_6yqX3FVOwoub8Zkv9rf9@m z(1_`oz+wKUXcR!vh$$K|MI)wY#1xH~3mP#!15W3EibeqxjhLblQ#4|VMoiI&xu6l# zGsc|%DH;V(G-8TIOwoub8Zkv9o|#_eVtQt$=6{Mt0Thjxq7hRxVv0sg(TKUA5z{j} zHUCpI3ZQ7j6pfgo5mPi`ibhP&i0PT45-1umMI)wY#1xH~q7hRxVtPiLdZsvZT~ag( zplHMtjhLblQ#4|VMoiC$gJ*31R{}*NrfB&4X%dZ?q7hRxVv0sg&xqj}%>PQDXv7qa zn4%F=G-8TIOwowx8L@dL%>PQDXv7qan4%F=G-8TIOwowx8SzBU|4N`}#1xH~q7hRx zVv0sg(TM38@w8$p1|?85Vv0sg(TFJ;F-0S$XvFl4xJc0`fua#pG-8TIOwoub8Zkv9 zre~asWfYAkluEz3vn5OxVv0sg(TFJ;F-0S$XvFjk+2((WMgbI!n4%F=G-8TIOwou_(d5PS zOv;%5DH;V(G-8TIOwoub8Zkv9=7L5{&jb$hKSiSeibhP)h$$K|MI)wY#9Yvb=^1c3 z|5G#yplHMtjhLblQ#4|VM$83`n4U4_{7=y+fT9soG-8TIOwoub8u6-F+KAQ&HogQ z0w@|WMI)wY#1xH~q7lTBWqEP@vBc^D?6pfgo5mPi`E@;H`OyDs8Q#1;oXv7qan4%F=G-8TI%ms~@o&l%x zKSiSeibhP)h$$K|MI)wY#3mXnK*aQnG3S4ZMgbI!n4%F=G-8TIOwowBpb^tE$8`Ts z(I|kT5mPi`ibhP)h$$K|7c^pe=9uPxibeqxjhLblQ#4|VMoiI&=@~ISQ&a*)Bc^D? z6pfgo5mPi`ibhP&h*QrLhXw^jqX3FVOwoub8ZkxlPbH!e(=+1W8Jqu=K+%XP8Zkv9 zrf9?zjhLbl(=%dt2J^oXC>k+EBc^D?6pfgo5mPi`dPZ!X3G=@aC>k+EBc^D?6pfgo z5mPi`dPY2j^S=@(8Zkv9rf9?zjhLblQ#4|FMm)2ann?*1jhLblQ#4|VMoiI&DH<_7 zBQ8=jN}y=O6pfgo5mPi`ibhP)i0K*UVi`r_31t+Gn4%F=G-8TIOwoub8ZkXXw)vl; zQ2<3Frf9?zjhLblQ#4{OXvFkP%9#Ht8U;`^Vv0sg(Y#V38Zkv94x%Z`i|LubVg9FR z6hP64DH<_FBc^D?6pfe*8ZkWsPUnA$MgbI!n4%F=G-8TIOwowBpb^tE#+?5t8U;`^ zVv0sg(TFJ;F-0Thf<{cwyrTJ^qEP@vBc^D?6pfgo5mPkcnW<;Q^vo-o|0x;;P&8tS zMoiI&DH<_FBc^A>^h{9+6pfgo5mPi`ibhP)h$$K|JtIy%QyjW1C>jM&G-8TIOwoub z8Zkv9rf0;#GdBM#fua#pG-8TIOwoub8Zkv9rf0h$$K|MI)wY z#Pp2VJQL=BB~UbCibhP)h$$K|MI)wY#Pp1K9Or)}P&8tSMoiI&DH<_FBc^D?^o)2S z=YJ(oG-8TIOwoub8Zkv9rf9_UjJQbAD1o98Q#4|VMoiI&DH<_FBc^AZi)9pzCzMe% zVv0sg(TFJ;F-0S$XvFjk+2((WMgbI!n4%F=G-8TIOwowBpb^tEDP#VpXcR!vh$$K| zMI)wY#1xH~3mP#!6FAKO6paEX8Zkv9rf9?zjhLblLp0_YF+BrL=YNWZ|Bw}iV8|e* zXv7qan4%F=G-57j#Pp0Y=YNVu0Thjxq7hRxVv0sg(TKUA5z{mIpBL-Xr&1J+0w@|W zMI)wY#1xH~q7idJBc^Ba{HMY6FCZv@q7hRxVv0sg(TFJ;F+C%uXNpRoXv7qan4%F= zG-8TIOwowx8FA{FVqOUpjhLblQ#4|VMoiI&DH<_7BMzRi`CkbXjhLblQ#4|VMoiI& zDH<_7BZg-%|0{u_5mPi`ibhP)h$$K|MI)wX#O9eW|0{u_5mPi`ibhP)h$$K|MI)wX z_z&b^2!`uFuLO!lOwoub8Zkv9rf9?zjhLPhk1nRBQvyXJrf9?zjhLblQ#4|VMoiC$ zixiC#C>k+EBc^D?6pfgo5mPi`E@+&KWfYAklu~*Cf$$upQ2F)ibhP)h$$K|MI)wY#9Yvb>6yS`{-F+BrL=YNVu0Thjxq7hRxVv0sg(TGhnSb&J>8Dq}>6paEX z8Zkv9rf9?zjhLdTvlb5j&`C_s)M@^wXcR!vh$$K|MI)wY#1xH~3mP#!^S@hr7x1X6 zt9?9^b7tn`1__yjAQKD{HAn)e2oYm4Xw*?|0TII0AQwjr8bEEVwn>%h*rEla>}XL@ zsYXRVsOY4M1QpxSLW|Z*TB+crHT8kv#jLeC~$ed`5%!$UxoM(*8d8Wk_aH26XCmJJjqA@Zj z8Y6R}F)}9_BXgcHGUb^T#}sg)F)}9_BXgoLGA9}%bD}XaCmJJjo-wk{GqC=f0!}nW z=0sy;PBcd5L}O%5G)Cq`V`R=VM#emY>%S@BL}O%5G)Cq`V`NS=M&?9gWKJ|j<~(C$ z$TNEVHwBz%jLeC~$ed`5%!$UxoM?>9iN?sBXN)|N*MC#MiN?sBXpGE>#>kv#jLeC~ z$ed`5%z4JhXS7geG6kGyjLeC~$ed`5%!!77(HDoH&U8lRL}O&mGe(x51~&zqXpGE> z#>kv#jLeC~$ed`5%!$UxoM%KfKMgJgX`E<`%!$UxoM?>9iN?sBXpGE>#>kv!ScdhV z6O93IqA@Zj8Y6R}F)}9_BXgoLGH+;%%z1`nT>m-I7yu_4BXgoLGA9}%bD}XaCmJK` zM3d$ine&X6_4?0=#sE0c7?~4|kvY*AnG=nXInfxIH#A1(JcBZ=|D0$HfD?_8InfxI z6OEBM(HNN%jgfgnV`R=VAoKdqiN*jp(HNN%jgdLg7?~4|kvY*AnKv{><~(zpS^qiF z7yu_4BXgoLGA9}%bD}XaCmJK4(JwD>o;l83|8t@-3Y=(+%!!77D%>O*BXgoLGA9}% z+hl-|InT710!}nW=0sy;PBcd5L}O%5G)Cq`V`SdY7@6`+i(?8n(HNN%jgdLg7?~4| zkvY*AnG=nXInNkb=NVZ4O#vqwBXgoLGA9}%bD}XaCmJJjqA@b(86#t!!S&x1aH26X zCmJJjqA@Zj8Y6R}F)}9_BXgcHGUOS({+j|$G)Cq`V`NS=M&?9gWKJ|j=0sy;&ND`? z;Pu}WaH26XCmJJjqA@Zj8Y6R}F)}9_BXgcH@+mF-rUfS&1K>nsWKJ|j=0sy;PBcd5 zL}O&mGe&OVL}Lm#(HNN%jgdLg7?~4|kvY*AnG=nXInRjPB0mK#1#r2fcQ6xSaY(&% zGBPI`BXgoLGA9}%bD}Xa=NXn^{pUnu0Gw!y%!$UxoM?>9iN?sBXpGDo8Y6R_AsN?y zPBaF#>kv#jLeC~$h@I3GUpjB>-C=#jRA0?F)}9_BXgoLGA9}%bD}Xa zZ)l9nc?M-#|2feZ04EwFbD}XaCmJJjqA@Zj8Y4rZ!Rvn`bDja2*MCkl2Ed8N$ed`5 z%!$UxoM?>9iN?shp)oS&nTclo=R{)woM?>9iN?sBXpGE>#>kv#jLaJvBXgdaXx4vD zGzP$l#>kv#jLeC~$ed`5%!$UxoM(*8d8Wk_aH26XCmJJjqA@Zj8Y6R}F)}9_BcIi8 z3{aj)*u$+meTmVJq#yPr-rASmV7HvDfiPb5=jgO^`pMCL^11!w^ZLn?`^i)K$y58v zGt;K^El8W*Pp<1H&*&%5>?fa}`2D{0>6U^{23ji129~5IR!^qH>dBN?J(&`#CsShe zWJ;`_OnKFlbzW^r^9m@jdNM_%`NF;idNLX4$z-4>lYyR026{3Y2>HelYyR026{3X7<;3yfu5XB`yH=< zEc9e@p(m4po=gUMG8yQ}WS}RLfu0Qh$H7CcIvI|W;yU@sF zVA0Wi4fJI8ps8mMvb^wU{y_y#fn8`6*o8)B7aEy8Xk_*v%84&atW$iHXq;c(l%JYt zJee%?WU|nc$%URw26{3X=*eWDCu;-Y!payx7J4%8;7mQawEpzIF7;$G*pta%PbPys z84ZSs?iG;5o=g^dGP%@~$zV?=gFTtHoSsZuPEUp{Cng%NV1S-xo=jU#Po^!WC)1YG zlWEK8$+YG4WZH6y3{9u0*7K~=P-olf^t6VwwAx9tCUrt-)OpuZtvh`MEx~s!tSEY8 zM;ab`U!!CEbvj159CXa*?98;Z5*SjOG9X}ZJSX!94vsJz{yA%J(0l@R>fT0ZTJl$? z=VwJF*x)&tx%!{_?9%jMYWH-@4$K0(Hf5+8Py6#H zL#+?K+uVY-?@24gAZb@7E$V&c%!9i3a_pE&&36B1*#z`T^bk0%fsWvaW3#%*F|lpz zn2tY?V@i7-^BjXs2-7GyN2bncZ@gzqpD_Do5NU%0TOU>I>|_) zUY-qoMI{xUX?2ICPO#l|gw+igY+Lr*o?4c?>?c zZSTLE)Y1i3EG+eckIf@I@_2Zay%6k{I>9#2CoFP!*tV~}x=o!h!C$x`a-2GJq3whP zCwlP(q=$T-o~pVK+K@WIwl5?sau{q}?QO6c!cr&Ljzxq;4uj2Ajf;U->IB<)Az_gt z1-telz)GE9lMRGLjuh;sC4iMW!FDeuEOMk^cPs_0)EO*KTjWT=?p3FQ-&{; zBU;Hje^TRXd-l_z>b>RGZokd}YWUSw$bwm~c3*5QEtWJSX-P7-PIGEf4ARokyR%=If!(PRdgq5BYRO{jWaL$Bw5yYx}gT!0tFRlGb*(D`Z!aM!2*iC9z|| zs^=!ewXqnu6cW15Uzuvy3Ybb*mYTMjFCiIqjr%jz*FN9()wWBmrC|XGX?z7KXmZJ2 znQB@ikV~Cl+b<<7a-@)twt@W6N+1`2D0DQE0urSt{O~d$mpZ|At|TmSq+k~XfIPPe z$ORw@$;(IqiBc3EYXWkq6Kwb8ghh@N>@5zEM^*#507Rjui4>5?C}gRFtF1qWrB1ND zs|br62Ain{Txn$~-xby$!U7NlXALPJQD23(N~KP)MOP43I6C6KkjlNvI^fqMQ7t~n z7aGbK(UCEUTq*q3-?QHG>pC?fH$7y5R!Z&cX6r4x48|f(yRf>}?~ACWS+?WX6RvH; z%lS4=MI3-@)#3SexblCSPUmFebfV7)Kdt&G_4shhai(upmUHhTddKJ7?!)*GylQ;SAAdHj3ykQx`epy=4}2V} z{^X=PYru$_Q4cMyxq4f$X7(jhJ8xJW-|_VKx9z&)xj{Ae9r}0mroH()j(MtR_nZ|s zMUGi{|L%AHbIhp}lEoLz_OU-Z`>p*Xs86(^0;t z@`UO!Z@f{xY;pZAl&?JQ@kCkEvg+k;zNbBQ?+ZVv%6Z|%>Ni7|X^)J5`h#lcx(T}` zZEk-CIG*|V2gg=Fdt7==b7MVnRJW8rmiYDDpHzq6e{a|F{5Rj*^}7#lsG4`dKdR#& zO{@Wu8ujc=z7NzVFI&~BWV;3oYs$o! z|LmQQJ^R?{?)!79)&3t^XAR=r{ks6b(FVKxwu7$}w>7<`3E z&-ZBj$U4&f#lVt8>so88FN~+CE>-PU^ZW!A9PiJm%p0wD!cr`-SPQ{4lM}bL`24yE z=Zas06EEIm-S4yU;zRAfFuh&1Kjki)%dBPsA?!L{Mr+UM7d3oiVbj{T9XF9gO#mBeln9O*Wt~avZwc6_5 zUl0<7z^RU9d# zL=er4Kq|Ex5mF)ui2!PfL6vW5a+qT>n3r2Ch z;Cm&!d_){xC}H2*>W;*h9po4>UV@CCXsb(x$^{?|)U$##gv8i@Q4oMA#92XzaJZm? z?g6%70NmwHRuCdlFf9l`TIgW~L&PRwuyh{;APPl?*k)FgP8$UQh(eSVgh)DV6a*j& z&8#3qI4ZEy7<+A!07RjK6$}ygK`X3J7L4M0!FRJPJZK3vfDP#e1Rx3y&v$7E-H!@5 z^t6HiM4^%ugh;wz6a*j&F;);F8LE1e*FhJ!UhwTK3lDY`Ezm(jH@k~l(Y5c(fgZR{Fp^V{H$xYVjLyu|IxzFKa@;b`h&1)&ekJEdd z0x6ah-)-aF%vE<;kH9K{=g^+ip(@I#L#xEYxA@+*u~cop$qLzsS6^kJphzaC)nnn5*9fKTmB$WO0mG=>j;MGDU{PXfKuuN+kP`) zk%O=c9s)`!7FfqE1VeR(jqzovmWN?4E_H(K{25`9gRtu!0ZJ(rSaLnVP@Q1q6+rnv zTY*yQ1ltWk!#E%ZVRt@i_4swMT9x6;w^4&?bVS~I%sObnID4|v&heebBUMIjG>aEu z9?_EWWRl7V#u2TY?N)iY^V7b!G?QCsw-Vhr%!gyV>;aN{Uz()HAr0k_6w7dJ{|!~Y zgm+|fRY@TD5{~(dp-`SWtfMcIjQX+%xj=23X~E5#3BCbp;Ny0+y5(8>ov}(u&@Cfr|KGEzH+JbHyVXK*p|8W@WhO#t)KeBC_@KKg6O=HSdfhp z#OMX!HYpYwYy{n=={k2=A7#fjQAzV%q_{=xzZ{z9QW=+08{T-K-Q!0oorWW->){9$ zjw)%e5BYT)>g^{XE1^+|hn|Cdsb6rbeX=yMKrdeFL8_1+TUCI?fPw0 zR_FQGu|!XzXI1wf zVHi3)$TT^|w~}1>n7FWYznu}{Qt1%ZrmKB3VI1D~C+jCZKNW1B2onyWiE|HNA2q33 zb%yUvI}Y;+FT$@V$1}8HE>FCH;28Y3p3CtW!(o=y;WK>&wf{b(qnr631Q+mpDn; zNW4euec4~=*#15pqXT&A=fd-)y4$UV`K%y2^ZIvSr-7F^c!E8bia5*Ig1*F&0s(X~ z02S#HM@j?{eU~UvlP+lq>n0+1GZSV4%8xsQSXM4{-f1P~%oKv!v#1Rx4gRuCc?6-Ge- zqR`9=LL`F(U9DRXfGBjZf)HU`u@71SF9*0@@ZBs64_adIc#$OlQE+%}NJFB4k=7Oo zKolxjL5R>2Y{4i9KonxEAVlIMJ*e<vsHM+M;ecp1AwQ?0U_q`ssXt#g{owp z%WCBeq~f7fSMCB>3_dvB-IoVu&R zhp9uMJat#qv6uEnsE_MQ<2UZ81SRa)II>79yra^^`Yw}JP*eBVeRotD`P>`XP+_mU z4OK2|3wTF`-KMRp*;1{a16wNgr}#I?viM#6Dq~582>Mwa_>EnpBA;2M;mWsZM^(+R>n1Y(gR8SHqYWA|BwqXqN^SI8qUmdEhp$Q^AQ6ef z3a2L}M@CXSP7y4ZIfaqAy}_;u_xy=km1FN-w)Bq@3mms0E)`oleuvg%_-u%UK2M27 z(I1FGGbLV5x1q06Ci>m45k~8(4YvJZcJfs!!Xr+FE&73~Ul*$rJAI?j@p1K0z-}lO zb)k#DLAtsbb+2vbC$0_J>wU#iA;3!L75Z2cBt~X{ZGK&*a9?Br4Mwss@pYzsi_fop zlGu=KKkl>9v3lPo9+xqmn$;v7s@4JE+V}_5m>k;=aN|AVTD;H-ajBRXeG5>Dkpt1S z`aH$8o$nBXW=edPi>{S2(Qp0>VYIH=J_uYJdyk6nNUp^T2OCTKdseiCt?YeL)vY9M zD!>+{OfcQhA9SkLO`JOzovO=d>kJI!)L}!=soEQf?MH!A{rbH++RWV@w&$sx3Ea$a zcCY+^hHTk~bgch`*PB5+#0z9I#|pBIsqcYxLT~2a1VbVfah9bh3;Ls&W|I zua**_=wSp>sU}27i6DypMvbDT>Oh2)2qMY|)KrHMAti!nW&~=gqN4#JC4%T+1Zt`} zL`aDsx*36*Dvkro4IMoqOF5mF)u2?1)VUO?DbLK{LjQDaMN*bs7jWErn#8AgQu zhzqg1dSf8~QHTqH1R8)CwjyX%D;R)m2nEPT88PS#tjmG=vhbiK z*kz4}4Pk$LlJU}xgjo+-d{okpzn5icM|!OB_^6~GzKk=Fw1cridkBw@N*Ev=kd!42 zNsya41~vjzYp<^$U#K~k6(It*v<_!GS>Tf_r|}1YXhW)RP)6S>=UDsnp(9#pN5IGW z&nR0v|BzK^{R&uxxKwg_^Mim&Y(ExOp|C!O=A;faG2bH-E+@~amqz&B@#|tW{6V-O zhsx^Ik+Af1eooj}8ts?$s-BV0rLwt7enCv|e!&J`PZ&jPK&rd{NiverPD|fVz57<* zTVbgaY|p<4t10y@?y3sACoIJR>+K~Ns;5vc8g0K7mO8;Y|0XPQ5Vmm)P)f1DivB|| zR8OJ2Wh_uionXtpA}n$ccGHPKDa8V-{4c>!onQ;_7I)W4_MgL2C)nuMghdW+{$!w( zVu97W1VeR#>08{Njsr@m6D$S|KkRo+4^+WBAZv*aZ8a1>-ES`+qFB z$K7w}#`AgM=JM3(gF{xPAI=UHJr#!T3ch#9$7UbdQ|ZXX*X9Rc=yItH&(4pbhji;O zZ=wyi4s`)^LjYwK(I6d-Uw!LPiUk%A5RCZrt;0~Y4Yv-ZLV#!vx=9lxPOZ_KN-U#I zCD33ieCzPGN%nrbGl$AjZXIG#dg9(Q;N4pbx{J3CdlHdz>_)pv{3aSSgDUbyG`dq!7X@_i7PRyMK z-L&J7wl>z;rSKl%V%;XVL4WWLA-*$*hQ=9*2 z6^!69BP&qq(ulsrxv0LX2j4lzkgw#}GnnL9aUb7FvG}g{APlj@FXrNcq0gapscRoX z6sSWJ4xe}wOR>PP1)N7(T~#cE`*vC&r3x!%h-a-eFxq^=?CawSu^ODX{1Cb zx*35~`c89|ln6r17ESQB{_MAkVYd48A7Ye13F7oN9|_b)7sEDRdMbOHvd_qVB7m&J zjiZL%{Ru!6>RCaEQeCMP1Rx4=RuCdlz?QUv0myX$D+m#qf-cs*!F!;c!YJ1TEDMpi z#q^=4pMr#0h%gqZE!YUq_b5eE5J-(1y6QNO5Xo*hQjkJEslCMV)J~)|s83edg(|!P z#!vcROQ0KRjvUKqsw7XAd5RAwLtJX+*rzy6A66Rtc5FD`b}H2a{YXlQcGpYQw5zm7Sqpc+S_N);HM=VXQzq1lU~84FCac zEechIjj)yp@+3V|L;RD93g;-F6@Bc{1Olu=26_6f!0mA!EiV-1Fpfsq~_E4%`u}y5EMk7V#9v zg;bSIAOa-vq8gTBffdyd4As@12keisos+1fyE4@cAt{zHNVWO%nJZNIA$zGG%Q*|9 z3WWgvSf-~~nv$lmYZwA;QsRk+F(2zPb>abd)AT3k1;1GAgPAKru^71X0Gm5h@4|e;f>zSttZ2dg4>$Q&XOTJ4RTdmlA~H zv&*8fWk4WKmt^0}LEu)>D%nKrgHHAW5QPp_5F!Z@_Nfi;hj6{%yIB?IMWL z3eG<%n9>juW3aJnT0sD!P{|5Hgg{ilj%x)0h(e4Ngh-st3I(IMUhwTK3lI7R8_+Js z`yu`CNtUG@8Lk?S_e1*Ods&utq{kYM_e1*O%VffExr9K^5B=&W1Ed4>EK5U`+yN5< z0f<6e2>2*HHZC;)*#a<7h#YP~f@b3+SFJySJ1+ewH3Hu$Ilb9_kO^;tTZ>KqJ$ zp3>j=46#GeIvZ`LXNaAhBzL|{S!^6^6d|Q^sbt02Q*dbwc`x-5B3`A1u>$9y0G<7m zK9Lp`zWEuVphOEBM;2*@pCRgEwY?M;HKaZA8KM)C?#M$#?3VWsG0y@K-pYda>*dyf zd4w2Qo$f!4-6`&k9!2hzq$_U4aG+Zy;y4EJ5hA>mbpcr}$NH%xH=i%=#2Z@qTq^zT zm_yE{(cOZTK042%Ay+KD5UqZhOVP0^Zz0 z*CcXYwU_v+#IfRNT+Ps-GM>f3GDDK=aGj>Nz6Lvy(pIhD@G(A{Y-yh_e%7xYaj95b zS&t@M@H%WTi}g8JFLgb0i9s`|N%MTgiHY6z4Zg5c2oRgVZX*FYYi*+8Pj(4heq%Y^ zgg`3w>_Xp|#NIdUD}7?*2WoMheY|S=v%T4Np4gnODjR&^4Ur;xN2@+PFle*>bGsFs zFYrYq3FcX9_gi+6jgF#gW*(a85%ipRs4`_}s?b5azj86#%g5+KlH<$7Rr>yl6iYXo z&j48BnS;0)*XJp|>TIAviaIHSQi_G5cM-LO>IB098J1#!buS?psw?|1u)FJMppxW8 zq{vs+QY^c>&c#$6Rxm!_Q-?^F!HrV5CE-cD8~+{-&z?#J(w z>60{d+4*=>lTP&?r8Y-{PN7uff~}Z?7_jKv;Jg7zR;qty2`ZIL0HxiNgBkf;E;{vf z(9E6;|GF@q;mDMl9+r_wHD>zPhNVOh%`-?tb7W@$LP`YT%p?SAs;yc69}ndM0kpG> zifT$WP)La&x)%}!QmKy+Ati!{Eg}SJs&zSlkP<;e{|B7_%PMfG@&SO55$UZ;(g2*Xp80h z;9U1)5#9WV-$^*k9I2n)k&x#O4E9g4_1W$U{{lO%CZ{DzMng0DR5gt8mo=b!h2%Ln zM8fN3{3-o zW#qo7o?T_1rp7LXKUFR%@rQD-Qik(ODV4EfxKhUWZ&NC_m2#yF{Jklay~p{B{CeQ4 z&ra~4rb-#+jiGp8&(J87}z|0>cka)%tRO<*_o} zb1jM{4nO>K@VA?Ebi)i*laBEZQPYZGIVh>{J2qCT@(O>sjp}Mag}*c;MCcHV98Ms0 zTZO;O#`&fo>kx7aH$BAkJ%|BHjKmO)KJb$+Xu7{V-r{Ek%VH}sx z?lJzmhQbM^ZK;4d{Xqq_eysmCy~e7t6aAH0vYw_}Y3j3uc7bX=(H|YxaT|RnP?@5m zFi5$)5T1HeU!CZml^vZ$iwYj`$xKzL!(8ZsR3R`O#DT^Bp=@&sO;JRmAn5o8CSwF@2Q(RG%{znBs8puC|`(Kg;2S%T#5xK(%E$ zQ1x7jRQqa?N}m%|!}k7ENu=644XAh-Wvb|OpxQGJsG3(I)yLD3N}p@0jei5CJ5r5u z?hvDR8Dgf`JYafn88A7QBU8?NWYXtkRO=Fd)Qa}u0?DVcclpl_QbJ>@_%fifR{>Rf z6H-+yM=E{JuA184syH&0zu2FtqY0QwuLY*E)yOn;6*B2_V%mK*7?tc}6i7Zb<<CVfs!>(Nnt zs6g_mbsHdjv-)_-xfQ6^-UU?MS0UA-w<483XHVgv>O&PbR`ITlttz__$k?Z3QvK8r8 zzJ_%AJjGj^`gm&-&^1=}r|UTgbW1-3!;(Kjrkf8TlRhV=k~5%-eVC%iq;m{!;@I!b zhd{OVpFmZAJyJdTAyVmcrurO4X}k{?NIV=K>oZEr{s~-Ld;!Q;YmsZ;KaoqHv%l*5 zo0T+Xb@ri(`T{VrvVp4k2BiAf7XT`KuBmjsx~q???vf7jHdh8#HZZ+67?_+mGUenT zlRhV-^uX#v6-6pN+-j)^snO>peh{= zRAoO!s;MK8N}scyT;XXk^mo#H8oo-F;kjH!wAB z=+D$s2~10Cfhl?mGTnSCGU;<-(n&PhhYBQi75_l7469n;T00%Mx_^dTkJciWK4({9 z!s&r^JLPaj|1BOT<;Ia9@!0o8j=Ko!3YsdAPhl|CmbJq7zvMUhH(kbfzNsp3sQ zWnT+aMH`W-Vii*9^Aun8p^6(S{w)xu>bNFQXJ7wmi>tyn2Bw5N6!5_YgZ}&zPWThs zSr@|lulVJbDsr0tfy8A$@Nf4g-0K1l`TSaoTBc>QPt!@`5WbA$rjs{7FKTavUR2(J zy;yl8_ClYh_;zz2-)XT6$NYd_yE(-80+g_b2Z}%A0RRN_|e0dg}I} zj3VW_O@Z1B*{1P!&$$aY4=wTG`$SnW-sZ*boQz-Nc^ZC&R`rI6t#%LbJ1tT>A9jnl zVT?0cyoYyAupGCXMJe@y?+|uA>I;<=ywnRm$vAEYz9jd!z6}UK6na>pLmI%Vk(36c zUhodzDiIzBuRl`oQcw66xUgphA#(7NBSk^#rGY5pg~-8+j1;`o3qHp9GSS1!3c*i+ z69I?<6zPu;Id~-jCDYGSFEsNcO3cuF0(FW{tuaQEK8lWNobB;2w+&}J31 zT8Xib1ZsUYa;b)=0%053RO?fLA-Z<=F9Lp_1@0wdzJ36V>G-2(%oH#tcTeDnEViW` zjvF5egs?qme4?s*C=l1ew!l+?Sx?`%3o3Nmh42*?zX_b>vrNmVOD#iPf?9@4Vru#C zk3!44|LnCqOWe@RP1o~L-0;zpFP}c+=^!>JmaGj(!M4CIv`Skt*mwb{$O}kDwqPyU z0)rB5S>M)v&@*EJneoJMZoR0V6&wt<;;GCO8RL=p&eMUK8`fX?j2Kfy#-#cMDajVB zBwLOXzx?TG@JrL%o5$5n3<#i`V)UGE!pPdYq5q5{wDXMj9y;BbFgX z-ar{@EI}r61agrhu$D}LbgEkS!$9f%t7pZvVnsW*-pubhixu_*W2<4>@<@3O!vU>7 zq)vM^P+-Pt*qDGcWC9YA30O-eKsq6BJp4vrp6V&^d4{ZIL&DCQbMy#_pL4N3;=+pm z($aQsgYP2_3|0qU35>)U+?u%dPl1I#tC(7k_*7(4(6*5PO$e!`I@{6DM%Ql*z}Mmd zp_=k%NFku0z@V?Pr=A5(1R<|s_G)@7uwE_Q9H=c#vJc|d(G8|Jtaf;#sjQuD$oJrD z7Lk7jLV-9ug~j(4KM1^~KJWB}0?w1VU{`wZ?@oLNeT}Nxa4@h`ZR-uJbDE#7h+vR$IvCg$3Wh%W?qES4ZR>5jLbB+iGnfLW6!AmXZ3&jF^rM^2B)DfB(+Rb`m;92U#pbqiGfJ!|vz&|`O z5U#_aU8ci9Ucqo&iqnCjfu7aTz$G1{ar+0sc`EV*1fz_D5xs%u#eFm{VjPTSFBoKU zN-%yU!T3k;Y0vQ-i?XM@BAFJztz%JnWGuuE@pb=+!7AS#3$jj64D1U9L!W(jFsLIm zG4A7u0k-xD1@(s~22|=$fOjwyg%+Z9B(%SDB#N|8Xkwr@Ro&pAm!fblQ<5EAug2|! zC`365@f&$c03R+EagIWV7X`94B??bT6#nk??(}@lVQ^B4C=6B-x_HkeR$<`CD2N^3 z7KM7YQ|gbH5o8^$70?%6EAZ^Qqd*;@DS`f^wF1vlrv!C~rvy~$IDmh6N+4VZLc2@{ zg1kb3K!?(tz%xB3a0jO|)N_MjQj|Rp;fQfJlX0FD_ft4JI2_$xILPRfa6IjWqkGp8 z;plnBE0S3OoYTSe|TmrcvK9!oJ6#xw66#&oHjt|ZXIAj40=q)^;u?_HHZGa5mkqo8U zdC(sk$q3t08LYK+4{0RpPS8lk{?katGwnUR6xn|&j>IBR-4@P##E zaVQb_GEm^NZoJM)9I6g3O)r<0K$&*?F}khT-&>mb&{u&*8*NgDCIv$+V%@o*iw71-XpSo!|XmFcuxR@l3E) zJa`@`p~vvu4Ei?k5&B5>j?g}UD)@}h|I^D>gb8pt9&sf@jI3yQj^%J+r_1qZ@i`nT zi~?2&Db@=JZ9fEZJw!>Z|2nV|gM_2X#$c<>wXhk$uyxi3Z6B5GJ}bC`!aMeFfyS^5 z4rIj-GFHJ6%Qv1AEIcz^H%yJE>xjv@cm(^E3o24RXL?#%1Y9FOH1!0&wgb=C&j~JY z)&s7aUks^LW23=3yAm$<;LmtUoVe6&g?BfzVi!!(qZN+o@-KY_YV&o$TpLT(lyl+T z&R(wXq1QB@#n&|9-Oh}BE=P+nKJb>arM@~hxGs!mX${_+dPQ?cMkahsbE!I<<1YzI zu@F!LOjJ8LxHc>$f`C@^2Q}4ufY5zXjZ=cNGUPReFX?4~-YLNaZN0CRt8I7qixTZq zgJXTe+vn4JeR9MQ#DGxb5A>T08>a^wY@A?fQ)_U%x^sGP9()-SyjeRzmDdHULe6V- z`ih%vNozj*1AJ>1E`DeG0&2W#4cidORQu|JSvEq|fx6(;>88{<1S@|jf!yjqJ#chvL5t=Fr`XQ5aEk|CH#-n+`rE&bum~R( zXvDR*1j|REhtL-BnE1MkJt^(%pY$U&bbjy`;qDFqt#14 z1AjK(+1H<$-@EG?G42&ME%H>G|wAbqmhb_rx;FFdh}gnjqnBMsK4EjZOLGU4YE&dcr0)a{=&!R#GX~bR|ojpagU?!Y7PEu<3YGb z3x5-1wMAYZi^+GGsy@e`p?> zgfq;ga7!`Zf5OZW9#2JD{QZ@|~?y--lxO}*=V=bFLTV)V+eUIv^ehL~mGgf+h(WR?LZ z)XXX}6O;d$p~tbT0}o{Vi8wnS)dL)#L4V6K5M`u{-}WbIO7vX@zOcZk|9ureMKoWC zuxZ^LXyE_43W$zykb_~>2JZf=Kzz;x-?0j4gkA;EKWK~iOI$5}ly=N2P&AwT=iEcb z<{93RLi#PMfGA22kN`7G|5YGbM@e7{{3+Lv?^p#iR<8nLjpJJvDhF zpXdvpFiATSb>JPTXOehP#(OGZ1hg?l(`rzVR+#3jd!JVWe?bpjXX%R~yu`t}l$D{# zA1sIjtm24m4F)1Vl0`ByG9sA%7L3ivD~Mzj&gja^TT1a z^tm(Yrn<+J9Nlu%FE@N~~>wwuc?%*N7mD2=#jc!3+ zqZ=A@iCY+21pn&XOy?x%NlqWbkS`}E+nqD}eD~&`-sr|IUIKCsaF&m?3;mI-c_nV> zlx4uV#x2Nhbn`MUaWnmwxIt@~8?ffNcKT#D-8Tj}2e|MHfWc4*eN{BL&>eru$?nLq z<6XybfURsy=KMT&;FPo7!s08mg`un%uwClr1XsIRfkxM{8-Q&Zu$>5Od8%u5@K`$# z@V9I@vGnAE=|yhVyrFJ>^&)rhz-Dbqe&#YaFY|IYH=`LyR=FAWQXrTK1ml1pUlTaC zZMlBi1`EOy0(rqm_J#Rw_Utik!MID^!2_;xLs^%&`I*bXk|rSf9ufJMyMAj95LE(E z0TPY0N1ZUT3rRA|vRbnm2Dt-fMcl&jRnV0yfF$M)Vv>OwS20Np95f$DP6Lv`n#8HD zn&=KI4udsC6AJ4GyIB|IySX#Za|@40pR56*i-G83ZOuUEDmNRtmFZsrL>+~7_A6UnZsc_dct#rS4so(3HsOtuc3K5eqQZR>;X&R;$5?%2LnojA`f zsPYd0W2fc2nTrOwxig|}VHpNy6}SL~NXAm2Ti@B$$CgoDWw(?3*-eZpPextoiwa+-tsnrMvf~=iOI+|DwC%lI0M#qRP;i zg02B`!NK!O-9cy0cMFfY5+=*#kf>t7bQ!Q-3HGi6k6aASo(nR1A;h*878bZm7B6zw z{p82)y_@fJM;tR8$Lf*+BL=n(nq3HCgYi0J3XfN0Ua3Qt0j!R_#?5hJAkSmgd>Hs? zZhCsU>jZ;tW=4h^3WH$m{0ft%;R`2;W>90=*_UCSEaPCoA(ck4sdKx8mYsa1J7Cat5YW|bQT|2l@gpvE$5veGjz4*^dt7M* z+@0$#Trk&tc2@!h^Kadke%)$;r%zlCi%~6jc#zxty*2LZukLeSd*!$84QpF;Sdpuwq{KaD zcu5PcXr~=tb5>VY!J@95@Z~Ue=ev11Q(JaDi3X7?-5<1KDM zK?ur*x)l}W>g7H5x#RNlawA7gJhv+|tF|k1#Ho;mPj&+kgLL0e@b@J5jn{tf{^Gv7 z+=-`7a8HGQ!-f^N;1XUR&K)o?a{P#syM~umbU}*knmKcN*R-jVyG|TCrX?}_oWKrW z-Yj@CrxSKm^_%D(_&C1Xxg)qhHGTlEhaB}p@L+y6Z5Uzb>QB)v^5{UHZL*wW0@-QK zFU{5?^w0iV52#CA`(&^n*SV)pL&;x5L)~9UL&x=PC}tYcXV6fI<4em)bM|;m!G*p4 z;5{2L15J0kTYKWreUXkwe0Z0g zHY%#@kQ26%OO=P5yDW$rTCrYzJ~~*gpzSjgzb$ZnY}?WGVnFjez6$_HZ9q30&<+q| zfX1&o2@DwR8Bn$b3;;RNI1~*)MKS<6$pDBYx#9ce&OFsHF{&1MOa86*fdx!AL`^&Qe#;cP9H5;&2?50OP<(?YG0I+t~o4B)K@IAHCsGJE^l^ zv3?CHdH5e!hvwcb-7jhWtFybdl3M&_;D~4>GFk)i73;f1GjS*40j8 K>*|d5J^v5SJtSrT diff --git a/integration/src/main/resources/assets/projectred_integration/obj/array/7seg.obj b/integration/src/main/resources/assets/projectred_integration/obj/array/7seg.obj index 9a043576e..8eb30358b 100644 --- a/integration/src/main/resources/assets/projectred_integration/obj/array/7seg.obj +++ b/integration/src/main/resources/assets/projectred_integration/obj/array/7seg.obj @@ -1,10 +1,10 @@ -# Blender v2.71 (sub 5) OBJ File: '7seg.blend' +# Blender v3.1.2 OBJ File: '7seg.blend' # www.blender.org g 7 -v 0.203758 0.250100 0.291277 -v 0.141258 0.250100 0.291277 -v 0.141258 0.250100 0.235027 -v 0.203758 0.250100 0.235027 +v 0.203758 0.251000 0.291277 +v 0.141258 0.251000 0.291277 +v 0.141258 0.251000 0.235027 +v 0.203758 0.251000 0.235027 vt 0.493098 0.113281 vt 0.492188 0.328125 vt 0.277344 0.328125 @@ -12,10 +12,10 @@ vt 0.277344 0.113281 s off f 4/1 3/2 2/3 1/4 g 2 -v 0.074275 0.250100 0.257550 -v 0.074275 0.250100 0.007550 -v 0.130525 0.250100 0.007550 -v 0.130525 0.250100 0.257550 +v 0.074275 0.251000 0.257550 +v 0.074275 0.251000 0.007550 +v 0.130525 0.251000 0.007550 +v 0.130525 0.251000 0.257550 vt 0.250000 0.011719 vt 0.250000 0.988281 vt 0.023438 0.988281 @@ -23,10 +23,10 @@ vt 0.023438 0.011719 s off f 8/5 7/6 6/7 5/8 g 4 -v -0.188036 0.250100 0.257550 -v -0.188036 0.250100 0.007550 -v -0.131786 0.250100 0.007550 -v -0.131786 0.250100 0.257550 +v -0.188036 0.251000 0.257550 +v -0.188036 0.251000 0.007550 +v -0.131786 0.251000 0.007550 +v -0.131786 0.251000 0.257550 vt 0.250000 0.011719 vt 0.250000 0.988281 vt 0.023438 0.988281 @@ -34,10 +34,10 @@ vt 0.023438 0.011719 s off f 12/9 11/10 10/11 9/12 g 3 -v 0.096245 0.250100 0.291277 -v -0.153755 0.250100 0.291277 -v -0.153755 0.250100 0.235027 -v 0.096245 0.250100 0.235027 +v 0.096245 0.251000 0.291277 +v -0.153755 0.251000 0.291277 +v -0.153755 0.251000 0.235027 +v 0.096245 0.251000 0.235027 vt 0.250000 0.011719 vt 0.250000 0.988281 vt 0.023438 0.988281 @@ -45,10 +45,10 @@ vt 0.023438 0.011719 s off f 16/13 15/14 14/15 13/16 g 1 -v 0.074275 0.250100 -0.007551 -v 0.074275 0.250100 -0.257551 -v 0.130525 0.250100 -0.257551 -v 0.130525 0.250100 -0.007551 +v 0.074275 0.251000 -0.007551 +v 0.074275 0.251000 -0.257551 +v 0.130525 0.251000 -0.257551 +v 0.130525 0.251000 -0.007551 vt 0.250000 0.011719 vt 0.250000 0.988281 vt 0.023438 0.988281 @@ -56,10 +56,10 @@ vt 0.023438 0.011719 s off f 20/17 19/18 18/19 17/20 g 0 -v 0.096245 0.250100 -0.235027 -v -0.153755 0.250100 -0.235027 -v -0.153755 0.250100 -0.291277 -v 0.096245 0.250100 -0.291277 +v 0.096245 0.251000 -0.235027 +v -0.153755 0.251000 -0.235027 +v -0.153755 0.251000 -0.291277 +v 0.096245 0.251000 -0.291277 vt 0.250000 0.011719 vt 0.250000 0.988281 vt 0.023438 0.988281 @@ -67,10 +67,10 @@ vt 0.023438 0.011719 s off f 24/21 23/22 22/23 21/24 g 5 -v -0.188036 0.250100 -0.007551 -v -0.188036 0.250100 -0.257551 -v -0.131786 0.250100 -0.257551 -v -0.131786 0.250100 -0.007551 +v -0.188036 0.251000 -0.007551 +v -0.188036 0.251000 -0.257551 +v -0.131786 0.251000 -0.257551 +v -0.131786 0.251000 -0.007551 vt 0.250000 0.011719 vt 0.250000 0.988281 vt 0.023438 0.988281 @@ -78,10 +78,10 @@ vt 0.023438 0.011719 s off f 28/25 27/26 26/27 25/28 g 6 -v 0.096245 0.250100 0.028125 -v -0.153755 0.250100 0.028125 -v -0.153755 0.250100 -0.028125 -v 0.096245 0.250100 -0.028125 +v 0.096245 0.251000 0.028125 +v -0.153755 0.251000 0.028125 +v -0.153755 0.251000 -0.028125 +v 0.096245 0.251000 -0.028125 vt 0.250000 0.011719 vt 0.250000 0.988281 vt 0.023438 0.988281 From fb24d33305c17bb1b56cda985adbc39749e85602 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Sun, 4 Aug 2024 10:19:06 -0400 Subject: [PATCH 13/31] feat: add redstone IO type for fabricated gates (cherry picked from commit 676c1b3ff52adb8a5fe9ece7440b397231c50b05) --- .../af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 | 4 +- .../projectred_fabrication/lang/en_us.json | 5 +- .../data/FabricationLanguageProvider.java | 5 +- .../editor/ICEditorStateMachine.java | 28 ++- .../fabrication/engine/BaseTileMap.java | 6 +- .../fabrication/engine/ICTileType.java | 36 ++- .../engine/gates/BundledColorIOGateTile.java | 84 +++++++ .../engine/gates/ICGateTileType.java | 47 ++-- .../engine/gates/RedstoneIOGateTile.java | 66 +++++ ...GateTile.java => SingleBitIOGateTile.java} | 122 +++------ .../engine/log/CompileProblemType.java | 1 + .../engine/log/IOTypeMismatchError.java | 32 +++ .../fabrication/gui/GatePlacerToolTab.java | 3 +- .../fabrication/init/FabricationUnlocal.java | 5 +- .../client/GateComponentModels.java | 132 ++++++++-- .../integration/client/GateModelRenderer.java | 65 +++-- .../obj/io_buffer.blend | Bin 0 -> 627384 bytes .../obj/{io_colour_box.obj => io_buffer.obj} | 26 +- .../obj/io_bundled_buffer.blend | Bin 0 -> 635240 bytes .../obj/io_bundled_buffer.obj | 106 ++++++++ ...r_box.blend => io_bundled_connector.blend} | Bin 621952 -> 620628 bytes .../obj/io_bundled_connector.obj | 53 ++++ .../projectred_integration/obj/io_crimp.obj | 233 ------------------ ...rimp.blend => io_redstone_connector.blend} | Bin 626072 -> 624956 bytes .../obj/io_redstone_connector.obj | 206 ++++++++++++++++ .../textures/block/io_buffer.png | Bin 0 -> 3439 bytes .../textures/block/io_bundled_buffer.png | Bin 0 -> 3909 bytes .../textures/block/io_bundled_connector.png | Bin 0 -> 3481 bytes .../textures/block/io_colour_box.png | Bin 3158 -> 0 bytes .../textures/block/io_crimp.png | Bin 3472 -> 0 bytes .../textures/block/io_crimp_old.png | Bin 3218 -> 0 bytes .../textures/block/io_redstone_connector.png | Bin 0 -> 3814 bytes .../textures/block/surface/fabio-0.png | Bin 1793 -> 0 bytes .../textures/block/surface/io_redstone-0.png | Bin 0 -> 1794 bytes 34 files changed, 847 insertions(+), 418 deletions(-) create mode 100644 fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledColorIOGateTile.java create mode 100644 fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/RedstoneIOGateTile.java rename fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/{IOGateTile.java => SingleBitIOGateTile.java} (54%) create mode 100644 fabrication/src/main/java/mrtjp/projectred/fabrication/engine/log/IOTypeMismatchError.java create mode 100644 integration/src/main/resources/assets/projectred_integration/obj/io_buffer.blend rename integration/src/main/resources/assets/projectred_integration/obj/{io_colour_box.obj => io_buffer.obj} (75%) create mode 100644 integration/src/main/resources/assets/projectred_integration/obj/io_bundled_buffer.blend create mode 100644 integration/src/main/resources/assets/projectred_integration/obj/io_bundled_buffer.obj rename integration/src/main/resources/assets/projectred_integration/obj/{io_colour_box.blend => io_bundled_connector.blend} (65%) create mode 100644 integration/src/main/resources/assets/projectred_integration/obj/io_bundled_connector.obj delete mode 100644 integration/src/main/resources/assets/projectred_integration/obj/io_crimp.obj rename integration/src/main/resources/assets/projectred_integration/obj/{io_crimp.blend => io_redstone_connector.blend} (69%) create mode 100644 integration/src/main/resources/assets/projectred_integration/obj/io_redstone_connector.obj create mode 100644 integration/src/main/resources/assets/projectred_integration/textures/block/io_buffer.png create mode 100644 integration/src/main/resources/assets/projectred_integration/textures/block/io_bundled_buffer.png create mode 100644 integration/src/main/resources/assets/projectred_integration/textures/block/io_bundled_connector.png delete mode 100644 integration/src/main/resources/assets/projectred_integration/textures/block/io_colour_box.png delete mode 100644 integration/src/main/resources/assets/projectred_integration/textures/block/io_crimp.png delete mode 100644 integration/src/main/resources/assets/projectred_integration/textures/block/io_crimp_old.png create mode 100644 integration/src/main/resources/assets/projectred_integration/textures/block/io_redstone_connector.png delete mode 100644 integration/src/main/resources/assets/projectred_integration/textures/block/surface/fabio-0.png create mode 100644 integration/src/main/resources/assets/projectred_integration/textures/block/surface/io_redstone-0.png diff --git a/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 b/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 index 5029e3fc2..ec278c70f 100644 --- a/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 +++ b/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 @@ -1,2 +1,2 @@ -// 1.19.2 2024-04-29T13:40:44.325463 ProjectRed-Fabrication Languages: en_us -5da5b8cc9a7b6e62337421001761920875beea36 assets/projectred_fabrication/lang/en_us.json +// 1.19.2 2025-01-21T11:08:50.000856 ProjectRed-Fabrication Languages: en_us +544f30078813d520aa0605fe587d997ab84a2324 assets/projectred_fabrication/lang/en_us.json diff --git a/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json b/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json index 76bce5331..d76cd06c8 100644 --- a/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json +++ b/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json @@ -80,6 +80,8 @@ "projectred_fabrication.problems.dead_wire.title": "Dead wire", "projectred_fabrication.problems.io_dir_mismatch.desc": "Side has IO gates with conflicting directions", "projectred_fabrication.problems.io_dir_mismatch.title": "IO direction mismatch", + "projectred_fabrication.problems.io_type_mismatch.desc": "Side has IO gates with conflicting types", + "projectred_fabrication.problems.io_type_mismatch.title": "IO type mismatch", "projectred_fabrication.problems.multiple_drivers.desc": "Multiple registers connected to an input:", "projectred_fabrication.problems.multiple_drivers.title": "Multiple drivers", "projectred_fabrication.problems.no_errors": "No errors", @@ -100,11 +102,12 @@ "projectred_fabrication.tilegroup.memory": "Memory", "projectred_fabrication.tilegroup.redwire": "Redwire", "projectred_fabrication.tilegroup.timing": "Timing", + "projectred_fabrication.tiles.bundled_color_io_gate": "Bundled Color IO Gate", "projectred_fabrication.tiles.counter.decr": "Decrement", "projectred_fabrication.tiles.counter.incr": "Increment", "projectred_fabrication.tiles.counter.max": "Max", "projectred_fabrication.tiles.counter.value": "Value", - "projectred_fabrication.tiles.io_gate": "IO Gate", + "projectred_fabrication.tiles.redstone_io_gate": "Redstone IO Gate", "projectred_fabrication.tiles.timer.interval": "Interval", "projectred_fabrication.tool.eraser": "Erase", "projectred_fabrication.tool.gates": "Gates", diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java index a53996a55..4f97da66c 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java @@ -114,6 +114,8 @@ protected void addTranslations() { add(UL_DEAD_GATE_DESC, "No signals drive this gate"); add(UL_IO_DIR_MISMATCH_TITLE, "IO direction mismatch"); add(UL_IO_DIR_MISMATCH_DESC, "Side has IO gates with conflicting directions"); + add(UL_IO_TYPE_MISMATCH_TITLE, "IO type mismatch"); + add(UL_IO_TYPE_MISMATCH_DESC, "Side has IO gates with conflicting types"); add(UL_NO_INPUTS_TITLE, "No inputs"); add(UL_NO_INPUTS_DESC, "Design has no inputs"); add(UL_NO_OUTPUTS_TITLE, "No outputs"); @@ -166,7 +168,8 @@ protected void addTranslations() { add(UL_FAB_ERR_COMPILE_FORMAT, "Cannot fabricate: Re-compile required"); add(UL_FAB_ERR_GENERIC, "Cannot fabricate"); - add(UL_IO_GATE_TILE, "IO Gate"); + add(UL_REDSTONE_IO_GATE_TILE, "Redstone IO Gate"); + add(UL_BUNDLED_COLOR_IO_GATE_TILE, "Bundled Color IO Gate"); add(UL_TIMER_INTERVAL, "Interval"); add(UL_COUNTER_VALUE, "Value"); add(UL_COUNTER_MAX, "Max"); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/editor/ICEditorStateMachine.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/editor/ICEditorStateMachine.java index 06dc5ab23..b63077329 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/editor/ICEditorStateMachine.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/editor/ICEditorStateMachine.java @@ -6,14 +6,8 @@ import mrtjp.fengine.api.ICFlatMap; import mrtjp.fengine.api.ICStepThroughAssembler; import mrtjp.projectred.core.Configurator; -import mrtjp.projectred.fabrication.engine.BaseTile; -import mrtjp.projectred.fabrication.engine.ICSimulationContainer; -import mrtjp.projectred.fabrication.engine.IIOConnectionTile; -import mrtjp.projectred.fabrication.engine.PRFabricationEngine; -import mrtjp.projectred.fabrication.engine.log.ICCompilerLog; -import mrtjp.projectred.fabrication.engine.log.IODirectionMismatchError; -import mrtjp.projectred.fabrication.engine.log.NoInputsError; -import mrtjp.projectred.fabrication.engine.log.NoOutputsError; +import mrtjp.projectred.fabrication.engine.*; +import mrtjp.projectred.fabrication.engine.log.*; import net.covers1624.quack.collection.FastStream; import net.minecraft.nbt.CompoundTag; @@ -485,6 +479,24 @@ private void restartAssembly() { } } + // Check for IO type conflicts + for (int r = 0; r < 4; r++) { + int finalR = r; + var rIO = FastStream.of(ioTiles).filter(io -> io.getIOSide() == finalR).toList(); + var typeSet = FastStream.of(rIO) + .map(IIOConnectionTile::getInterfaceType) + .filter(t -> t != ICInterfaceType.NC) + .toSet(); + + if (typeSet.size() > 1) { + var coordList = FastStream.of(rIO) + .map(io -> ((BaseTile)io).getPos()) + .toList(); + + compilerLog.addProblem(new IOTypeMismatchError(coordList)); + } + } + if ((ioMask & 0x55) == 0) { compilerLog.addProblem(new NoInputsError()); } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/BaseTileMap.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/BaseTileMap.java index 36e4f2ec2..422290d37 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/BaseTileMap.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/BaseTileMap.java @@ -135,7 +135,7 @@ public InterfaceSpec getInterfaceSpec() { } public void save(CompoundTag tag) { - + tag.putByte("format", (byte) ICTileType.ID_MAP_FORMAT); ListTag tileList = new ListTag(); for (Map.Entry entry : tileMap.entrySet()) { CompoundTag tileTag = new CompoundTag(); @@ -154,7 +154,7 @@ public void save(CompoundTag tag) { public void load(CompoundTag tag) { removeAll(); - + int format = tag.getByte("format") & 0xFF; ListTag tileList = tag.getList("tiles", 10); for (int i = 0; i < tileList.size(); i++) { CompoundTag tileTag = tileList.getCompound(i); @@ -162,7 +162,7 @@ public void load(CompoundTag tag) { int x = tileTag.getByte("_x"); int y = tileTag.getByte("_y"); int z = tileTag.getByte("_z"); - BaseTile tile = Objects.requireNonNull(ICTileType.createFromId(id)); + BaseTile tile = Objects.requireNonNull(ICTileType.createFromIdAndFormat(id, format)); addTile(new TileCoord(x, y, z), tile); tile.load(tileTag); } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICTileType.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICTileType.java index f763acf1c..0c9edad44 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICTileType.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICTileType.java @@ -10,15 +10,18 @@ import javax.annotation.Nullable; import java.util.function.Supplier; +import static mrtjp.projectred.fabrication.ProjectRedFabrication.LOGGER; import static mrtjp.projectred.fabrication.engine.ICTileTypeOffsets.*; -import static mrtjp.projectred.fabrication.init.FabricationUnlocal.UL_IO_GATE_TILE; +import static mrtjp.projectred.fabrication.init.FabricationUnlocal.UL_BUNDLED_COLOR_IO_GATE_TILE; +import static mrtjp.projectred.fabrication.init.FabricationUnlocal.UL_REDSTONE_IO_GATE_TILE; import static mrtjp.projectred.integration.GateType.*; import static mrtjp.projectred.transmission.WireType.*; public enum ICTileType { //@formatter:off - IO_GATE(ID_OFFSET_IOGATE, UL_IO_GATE_TILE, IOGateTile::new), + REDSTONE_IO_GATE (ID_OFFSET_IOGATE, UL_REDSTONE_IO_GATE_TILE, RedstoneIOGateTile::new), + BUNDLED_COLOR_IO_GATE (ID_OFFSET_IOGATE + 1, UL_BUNDLED_COLOR_IO_GATE_TILE, BundledColorIOGateTile::new), OR_GATE (ID_OFFSET_GATE, OR, ORGateTile::new), NOR_GATE (ID_OFFSET_GATE + 1, NOR, NORGateTile::new), @@ -87,6 +90,14 @@ public enum ICTileType { } } + /* + * If any breaking ID changes are made, this number should be incremented. + * Changelog: + * - 0: Initial format + * - 1: Bundled color IO gate moved from ID 0 to 1 + */ + public static final int ID_MAP_FORMAT = 1; + private final int id; private final String unlocalizedName; private final Supplier factory; @@ -121,4 +132,25 @@ public int getID() { if (id < 0 || id >= VALUES_BY_ID.length) return null; return VALUES_BY_ID[id].create(); } + + /** + * Create a tile from a previously saved ID value, taking into account any ID mapping changes + * since it was saved. + * + * @param id The ID of the tile to create + * @param format Value of {@link ICTileType#ID_MAP_FORMAT} when the id value was saved + */ + public static @Nullable BaseTile createFromIdAndFormat(int id, int format) { + // Convert formats if necessary + // Since format 0: + // - Bundled color IO gates moved from ID 0 to ID 1 + if (format == 0) { + if (id == 0) { + LOGGER.warn("Loading format {}: Remapping bundled color IO tile from 0 to 1", format); + id = 1; + } + } + + return createFromId(id); + } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledColorIOGateTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledColorIOGateTile.java new file mode 100644 index 000000000..52518043f --- /dev/null +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledColorIOGateTile.java @@ -0,0 +1,84 @@ +package mrtjp.projectred.fabrication.engine.gates; + +import codechicken.lib.colour.EnumColour; +import codechicken.lib.vec.*; +import mrtjp.projectred.fabrication.editor.ICWorkbenchEditor; +import mrtjp.projectred.fabrication.editor.tools.InteractionZone; +import mrtjp.projectred.fabrication.editor.tools.SimpleInteractionZone; +import mrtjp.projectred.fabrication.engine.ICInterfaceType; +import net.minecraft.network.chat.Component; + +import java.util.List; + +import static mrtjp.projectred.fabrication.init.FabricationUnlocal.*; + +public class BundledColorIOGateTile extends SingleBitIOGateTile { + + private static final Cuboid6[] INPUT_TOGGLE_ZONE_BOUNDS = new Cuboid6[4]; + private static final Cuboid6[] DIR_ZONE_BOUNDS = new Cuboid6[4]; + private static final Cuboid6[] COLOR_ZONE_BOUNDS = new Cuboid6[4]; + + static { + for (int r = 0; r < 4; r++) { + Transformation t = new Scale(1/16D).with(Rotation.quarterRotations[r].at(Vector3.CENTER)); + INPUT_TOGGLE_ZONE_BOUNDS[r] = new Cuboid6(1, 2, 0, 15, 3, 3).apply(t); // Toggle state of IO register + DIR_ZONE_BOUNDS[r] = new Cuboid6(3, 2, 6, 13, 5, 10).apply(t); // Toggle IO mode + COLOR_ZONE_BOUNDS[r] = new Cuboid6(6, 2, 10, 10, 4, 14).apply(t); // Toggle colour + } + } + + public BundledColorIOGateTile() { + super(ICGateTileType.BUNDLED_COLOR_IO); + } + + //region IIOConnectionTile overrides + @Override + public ICInterfaceType getInterfaceType() { + return ICInterfaceType.BUNDLED; + } + //endregion + + //region BaseTile overrides + @Override + public void buildInteractionZoneList(List zones) { + super.buildInteractionZoneList(zones); + + // For toggling input to simulation + zones.add(new SimpleInteractionZone.Builder() + .bounds(() -> INPUT_TOGGLE_ZONE_BOUNDS[getRotation()]) + .leftClickAction(this::toggleWorldInput) + .tooltip(toolTip -> { + toolTip.add(Component.translatable(isInputIOMode() ? UL_SIM_INPUT : UL_SIM_OUTPUT) + .append(Component.literal(": " + ((getState() & 0x44) != 0 ? "0x1" : "0x0"))) + .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); + }) + .build()); + + // For toggling input/output direction + zones.add(new SimpleInteractionZone.Builder() + .bounds(() -> DIR_ZONE_BOUNDS[getRotation()]) + .leftClickAction(this::toggleDirection) + .tooltip(toolTip -> { + toolTip.add(Component.translatable(UL_IO_DIRECTION) + .append(Component.literal(": ")) + .append(Component.translatable((isInputIOMode() ? UL_IO_DIR_INPUT : UL_IO_DIR_OUTPUT))) + .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); + }) + .build()); + + // For toggling colour + zones.add(new SimpleInteractionZone.Builder() + .bounds(() -> COLOR_ZONE_BOUNDS[getRotation()]) + .leftClickAction(() -> shiftIOBit(true)) + .rightClickAction(() -> shiftIOBit(false)) + .tooltip(toolTip -> { + toolTip.add(Component.translatable(UL_SIGNAL_COLOUR) + .append(Component.literal(": ")) + .append(Component.translatable(EnumColour.values()[ioBit & 0xFF].getUnlocalizedName())) + .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); + }) + .build()); + } + //endregion + +} diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/ICGateTileType.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/ICGateTileType.java index d6562ed09..6de4172a8 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/ICGateTileType.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/ICGateTileType.java @@ -9,29 +9,30 @@ import static mrtjp.projectred.fabrication.editor.GatePlacementType.IO_EDGE; public enum ICGateTileType { - IO(ICTileType.IO_GATE, GateModelRenderer.getNonPartRenderIndex(0), IO_EDGE), - - - OR(ICTileType.OR_GATE, GateModelRenderer.getRenderIndex(GateType.OR)), - NOR(ICTileType.NOR_GATE, GateModelRenderer.getRenderIndex(GateType.NOR)), - NOT(ICTileType.NOT_GATE, GateModelRenderer.getRenderIndex(GateType.NOT)), - AND(ICTileType.AND_GATE, GateModelRenderer.getRenderIndex(GateType.AND)), - NAND(ICTileType.NAND_GATE, GateModelRenderer.getRenderIndex(GateType.NAND)), - XOR(ICTileType.XOR_GATE, GateModelRenderer.getRenderIndex(GateType.XOR)), - XNOR(ICTileType.XNOR_GATE, GateModelRenderer.getRenderIndex(GateType.XNOR)), - BUFFER(ICTileType.BUFFER_GATE, GateModelRenderer.getRenderIndex(GateType.BUFFER)), - MULTIPLEXER(ICTileType.MULTIPLEXER_GATE, GateModelRenderer.getRenderIndex(GateType.MULTIPLEXER)), - PULSE(ICTileType.PULSE_GATE, GateModelRenderer.getRenderIndex(GateType.PULSE)), - REPEATER(ICTileType.REPEATER_GATE, GateModelRenderer.getRenderIndex(GateType.REPEATER)), - RANDOMIZER(ICTileType.RANDOMIZER_GATE, GateModelRenderer.getRenderIndex(GateType.RANDOMIZER)), - SR_LATCH(ICTileType.SR_LATCH_GATE, GateModelRenderer.getRenderIndex(GateType.SR_LATCH)), - TOGGLE_LATCH(ICTileType.TOGGLE_LATCH_GATE, GateModelRenderer.getRenderIndex(GateType.TOGGLE_LATCH)), - TRANSPARENT_LATCH(ICTileType.TRANSPARENT_LATCH_GATE, GateModelRenderer.getRenderIndex(GateType.TRANSPARENT_LATCH)), - TIMER(ICTileType.TIMER_GATE, GateModelRenderer.getRenderIndex(GateType.TIMER)), - SEQUENCER(ICTileType.SEQUENCER_GATE, GateModelRenderer.getRenderIndex(GateType.SEQUENCER)), - COUNTER(ICTileType.COUNTER_GATE, GateModelRenderer.getRenderIndex(GateType.COUNTER)), - STATE_CELL(ICTileType.STATE_CELL_GATE, GateModelRenderer.getRenderIndex(GateType.STATE_CELL)), - SYNCHRONIZER(ICTileType.SYNCHRONIZER_GATE, GateModelRenderer.getRenderIndex(GateType.SYNCHRONIZER)), + + REDSTONE_IO (ICTileType.REDSTONE_IO_GATE, GateModelRenderer.getNonPartRenderIndex(0), IO_EDGE), + BUNDLED_COLOR_IO (ICTileType.BUNDLED_COLOR_IO_GATE, GateModelRenderer.getNonPartRenderIndex(1), IO_EDGE), + + OR (ICTileType.OR_GATE, GateModelRenderer.getRenderIndex(GateType.OR)), + NOR (ICTileType.NOR_GATE, GateModelRenderer.getRenderIndex(GateType.NOR)), + NOT (ICTileType.NOT_GATE, GateModelRenderer.getRenderIndex(GateType.NOT)), + AND (ICTileType.AND_GATE, GateModelRenderer.getRenderIndex(GateType.AND)), + NAND (ICTileType.NAND_GATE, GateModelRenderer.getRenderIndex(GateType.NAND)), + XOR (ICTileType.XOR_GATE, GateModelRenderer.getRenderIndex(GateType.XOR)), + XNOR (ICTileType.XNOR_GATE, GateModelRenderer.getRenderIndex(GateType.XNOR)), + BUFFER (ICTileType.BUFFER_GATE, GateModelRenderer.getRenderIndex(GateType.BUFFER)), + MULTIPLEXER (ICTileType.MULTIPLEXER_GATE, GateModelRenderer.getRenderIndex(GateType.MULTIPLEXER)), + PULSE (ICTileType.PULSE_GATE, GateModelRenderer.getRenderIndex(GateType.PULSE)), + REPEATER (ICTileType.REPEATER_GATE, GateModelRenderer.getRenderIndex(GateType.REPEATER)), + RANDOMIZER (ICTileType.RANDOMIZER_GATE, GateModelRenderer.getRenderIndex(GateType.RANDOMIZER)), + SR_LATCH (ICTileType.SR_LATCH_GATE, GateModelRenderer.getRenderIndex(GateType.SR_LATCH)), + TOGGLE_LATCH (ICTileType.TOGGLE_LATCH_GATE, GateModelRenderer.getRenderIndex(GateType.TOGGLE_LATCH)), + TRANSPARENT_LATCH (ICTileType.TRANSPARENT_LATCH_GATE, GateModelRenderer.getRenderIndex(GateType.TRANSPARENT_LATCH)), + TIMER (ICTileType.TIMER_GATE, GateModelRenderer.getRenderIndex(GateType.TIMER)), + SEQUENCER (ICTileType.SEQUENCER_GATE, GateModelRenderer.getRenderIndex(GateType.SEQUENCER)), + COUNTER (ICTileType.COUNTER_GATE, GateModelRenderer.getRenderIndex(GateType.COUNTER)), + STATE_CELL (ICTileType.STATE_CELL_GATE, GateModelRenderer.getRenderIndex(GateType.STATE_CELL)), + SYNCHRONIZER (ICTileType.SYNCHRONIZER_GATE, GateModelRenderer.getRenderIndex(GateType.SYNCHRONIZER)), ; public final ICTileType tileType; diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/RedstoneIOGateTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/RedstoneIOGateTile.java new file mode 100644 index 000000000..f0acda05c --- /dev/null +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/RedstoneIOGateTile.java @@ -0,0 +1,66 @@ +package mrtjp.projectred.fabrication.engine.gates; + +import codechicken.lib.vec.*; +import mrtjp.projectred.fabrication.editor.ICWorkbenchEditor; +import mrtjp.projectred.fabrication.editor.tools.InteractionZone; +import mrtjp.projectred.fabrication.editor.tools.SimpleInteractionZone; +import mrtjp.projectred.fabrication.engine.ICInterfaceType; +import net.minecraft.network.chat.Component; + +import java.util.List; + +import static mrtjp.projectred.fabrication.init.FabricationUnlocal.*; + +public class RedstoneIOGateTile extends SingleBitIOGateTile { + + private static final Cuboid6[] INPUT_TOGGLE_ZONE_BOUNDS = new Cuboid6[4]; + private static final Cuboid6[] DIR_ZONE_BOUNDS = new Cuboid6[4]; + + static { + for (int r = 0; r < 4; r++) { + Transformation t = new Scale(1/16D).with(Rotation.quarterRotations[r].at(Vector3.CENTER)); + INPUT_TOGGLE_ZONE_BOUNDS[r] = new Cuboid6(1, 2, 0, 15, 3, 3).apply(t); // Toggle state of IO register + DIR_ZONE_BOUNDS[r] = new Cuboid6(6, 2, 8, 10, 4, 12).apply(t); // Toggle IO direction + } + } + + public RedstoneIOGateTile() { + super(ICGateTileType.REDSTONE_IO); + } + + @Override + public ICInterfaceType getInterfaceType() { + return ICInterfaceType.REDSTONE; + } + + //region BaseTile overrides + @Override + public void buildInteractionZoneList(List zones) { + super.buildInteractionZoneList(zones); + + // For toggling input to simulation + zones.add(new SimpleInteractionZone.Builder() + .bounds(() -> INPUT_TOGGLE_ZONE_BOUNDS[getRotation()]) + .leftClickAction(this::toggleWorldInput) + .tooltip(toolTip -> { + toolTip.add(Component.translatable(isInputIOMode() ? UL_SIM_INPUT : UL_SIM_OUTPUT) + .append(Component.literal(": " + ((getState() & 0x44) != 0 ? "0x1" : "0x0"))) + .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); + }) + .build()); + + // For toggling input/output direction + zones.add(new SimpleInteractionZone.Builder() + .bounds(() -> DIR_ZONE_BOUNDS[getRotation()]) + .leftClickAction(this::toggleDirection) + .tooltip(toolTip -> { + toolTip.add(Component.translatable(UL_IO_DIRECTION) + .append(Component.literal(": ")) + .append(Component.translatable((isInputIOMode() ? UL_IO_DIR_INPUT : UL_IO_DIR_OUTPUT))) + .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); + }) + .build()); + } + //endregion + +} diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/IOGateTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/SingleBitIOGateTile.java similarity index 54% rename from fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/IOGateTile.java rename to fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/SingleBitIOGateTile.java index fcf3a2f00..eb0272649 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/IOGateTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/SingleBitIOGateTile.java @@ -1,97 +1,83 @@ package mrtjp.projectred.fabrication.engine.gates; -import codechicken.lib.colour.EnumColour; import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataOutput; -import codechicken.lib.vec.*; import mrtjp.fengine.api.IPathFinder; import mrtjp.fengine.assemble.PathFinderResult; -import mrtjp.projectred.fabrication.editor.ICWorkbenchEditor; -import mrtjp.projectred.fabrication.editor.tools.InteractionZone; -import mrtjp.projectred.fabrication.editor.tools.SimpleInteractionZone; -import mrtjp.projectred.fabrication.engine.ICInterfaceType; import mrtjp.projectred.fabrication.engine.ICSimulationContainer; import mrtjp.projectred.fabrication.engine.IIOConnectionTile; import mrtjp.projectred.fabrication.engine.IRotatableICTile; import mrtjp.projectred.fabrication.engine.log.MultipleDriversError; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.Component; -import java.util.List; import java.util.Optional; import static mrtjp.projectred.fabrication.engine.PRFabricationEngine.*; -import static mrtjp.projectred.fabrication.init.FabricationUnlocal.*; -public class IOGateTile extends RedstoneGateTile implements IIOConnectionTile { +public abstract class SingleBitIOGateTile extends RedstoneGateTile implements IIOConnectionTile { - private static final Cuboid6[] INPUT_TOGGLE_ZONE_BOUNDS = new Cuboid6[4]; - private static final Cuboid6[] DIR_ZONE_BOUNDS = new Cuboid6[4]; - private static final Cuboid6[] COLOR_ZONE_BOUNDS = new Cuboid6[4]; - - static { - for (int r = 0; r < 4; r++) { - Transformation t = new Scale(1/16D).with(Rotation.quarterRotations[r].at(Vector3.CENTER)); - INPUT_TOGGLE_ZONE_BOUNDS[r] = new Cuboid6(1, 2, 0, 15, 3, 5).apply(t); // Toggle state of IO register - DIR_ZONE_BOUNDS[r] = new Cuboid6(2, 2, 5, 6, 3, 8).apply(t); // Toggle IO mode - COLOR_ZONE_BOUNDS[r] = new Cuboid6(1, 2, 8.5, 5, 4, 12.5).apply(t); // Toggle colour - } - } - - public static final int COLOUR_PACKET = 6; + public static final int IO_BIT_PACKET = 6; + protected byte ioBit = 0; private int regId = REG_ZERO; - private byte colour = 0; - public IOGateTile() { - super(ICGateTileType.IO); + public SingleBitIOGateTile(ICGateTileType gateType) { + super(gateType); } + //region Save/Load @Override public void save(CompoundTag tag) { super.save(tag); tag.putInt("reg", regId); - tag.putByte("colour", colour); + tag.putByte("io_bit", ioBit); } @Override public void load(CompoundTag tag) { super.load(tag); regId = tag.getInt("reg"); - colour = tag.getByte("colour"); + if (tag.contains("colour")) { //TODO remove legacy + ioBit = tag.getByte("colour"); + } else { + ioBit = tag.getByte("io_bit"); + } } + //endregion + //region Network @Override public void writeDesc(MCDataOutput out) { super.writeDesc(out); - out.writeByte(colour); + out.writeByte(ioBit); } @Override public void readDesc(MCDataInput in) { super.readDesc(in); - colour = in.readByte(); + ioBit = in.readByte(); } @Override public void read(MCDataInput in, int key) { switch (key) { - case COLOUR_PACKET -> colour = in.readByte(); + case IO_BIT_PACKET -> ioBit = in.readByte(); default -> super.read(in, key); } } - protected void sendColourUpdate() { - getWriteStream(COLOUR_PACKET).writeByte(colour); + protected void sendIOBitUpdate() { + getWriteStream(IO_BIT_PACKET).writeByte(ioBit); } + //endregion protected void toggleWorldInput() { - getEditor().getStateMachine().onInputRegistersChanged(getIOSide(), i -> (short) (i ^ (1< (short) (i ^ (1<< ioBit))); } - protected void shiftColour(boolean up) { - colour = (byte) ((colour + (up ? 1 : 15)) % 16); - sendColourUpdate(); + protected void shiftIOBit(boolean up) { + ioBit = (byte) ((ioBit + (up ? 1 : 15)) % 16); + sendIOBitUpdate(); getEditor().markTileChange(); } @@ -99,12 +85,12 @@ protected void toggleDirection() { configureShapeAndSend((getShape() + 1) % 2); } - protected int getStaticOutputRegister(int colour) { - return outputRegisterId(getIOSide(), colour); + protected int getStaticOutputRegister(int ioBit) { + return outputRegisterId(getIOSide(), ioBit); } - protected int getStaticInputRegister(int colour) { - return inputRegisterId(getIOSide(), colour); + protected int getStaticInputRegister(int ioBit) { + return inputRegisterId(getIOSide(), ioBit); } //region GateTile overrides @@ -124,55 +110,9 @@ public boolean isInputIOMode() { public int getIOSide() { return getRotation(); } - - @Override - public ICInterfaceType getInterfaceType() { - return ICInterfaceType.BUNDLED; - } //endregion //region BaseTile overrides - @Override - public void buildInteractionZoneList(List zones) { - super.buildInteractionZoneList(zones); - - // For toggling input to simulation - zones.add(new SimpleInteractionZone.Builder() - .bounds(() -> INPUT_TOGGLE_ZONE_BOUNDS[getRotation()]) - .leftClickAction(this::toggleWorldInput) - .tooltip(toolTip -> { - toolTip.add(Component.translatable(isInputIOMode() ? UL_SIM_INPUT : UL_SIM_OUTPUT) - .append(Component.literal(": " + ((getState() & 0x44) != 0 ? "0x1" : "0x0"))) - .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); - }) - .build()); - - // For toggling input/output direction - zones.add(new SimpleInteractionZone.Builder() - .bounds(() -> DIR_ZONE_BOUNDS[getRotation()]) - .leftClickAction(this::toggleDirection) - .tooltip(toolTip -> { - toolTip.add(Component.translatable(UL_IO_DIRECTION) - .append(Component.literal(": ")) - .append(Component.translatable((isInputIOMode() ? UL_IO_DIR_INPUT : UL_IO_DIR_OUTPUT))) - .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); - }) - .build()); - - // For toggling colour - zones.add(new SimpleInteractionZone.Builder() - .bounds(() -> COLOR_ZONE_BOUNDS[getRotation()]) - .leftClickAction(() -> shiftColour(true)) - .rightClickAction(() -> shiftColour(false)) - .tooltip(toolTip -> { - toolTip.add(Component.translatable(UL_SIGNAL_COLOUR) - .append(Component.literal(": ")) - .append(Component.translatable(EnumColour.values()[colour & 0xFF].getUnlocalizedName())) - .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); - }) - .build()); - } - @Override public void onSimRegistersChanged(int rMask, ICSimulationContainer container) { int oldState = getState(); @@ -195,7 +135,7 @@ protected int pullOutputMask(ICSimulationContainer container) { //region IGateRenderKey overrides @Override public int state2() { - return colour & 0xFF; + return ioBit & 0xFF; } //endregion @@ -215,7 +155,7 @@ protected int redstoneInputMask() { @Override public void allocate(Allocator allocator) { if (isInputIOMode()) { // Input from world, output into simulation - regId = allocator.allocRegisterID(getStaticInputRegister(colour)); + regId = allocator.allocRegisterID(getStaticInputRegister(ioBit)); } else { // Input from simulation, output into world regId = REG_ZERO; // Will be located, then remapped to target static register } @@ -239,7 +179,7 @@ public void locate(IPathFinder pathFinder) { @Override public void registerRemaps(RemapRegistry remapRegistry) { if (!isInputIOMode() && regId != REG_ZERO) { - remapRegistry.addRemap(regId, getStaticOutputRegister(colour)); + remapRegistry.addRemap(regId, getStaticOutputRegister(ioBit)); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/log/CompileProblemType.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/log/CompileProblemType.java index 4dc79ed14..e0dc419c0 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/log/CompileProblemType.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/log/CompileProblemType.java @@ -7,6 +7,7 @@ public enum CompileProblemType { DEAD_WIRE(DeadWireWarning::new), DEAD_GATE(DeadGateWarning::new), IO_DIR_MISMATCH(IODirectionMismatchError::new), + IO_TYPE_MISMATCH(IOTypeMismatchError::new), NO_INPUTS(NoInputsError::new), NO_OUTPUTS(NoOutputsError::new), ; diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/log/IOTypeMismatchError.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/log/IOTypeMismatchError.java new file mode 100644 index 000000000..09e2fdc13 --- /dev/null +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/log/IOTypeMismatchError.java @@ -0,0 +1,32 @@ +package mrtjp.projectred.fabrication.engine.log; + +import mrtjp.fengine.TileCoord; +import net.minecraft.network.chat.Component; + +import java.util.Collection; +import java.util.List; + +import static mrtjp.projectred.fabrication.editor.ICWorkbenchEditor.UNIFORM_GRAY; +import static mrtjp.projectred.fabrication.init.FabricationUnlocal.UL_IO_TYPE_MISMATCH_DESC; +import static mrtjp.projectred.fabrication.init.FabricationUnlocal.UL_IO_TYPE_MISMATCH_TITLE; + +public class IOTypeMismatchError extends MultiPositionProblem { + + public IOTypeMismatchError(Collection coordList) { + super(CompileProblemType.IO_TYPE_MISMATCH, CompileProblemSeverity.ERROR, coordList); + } + + public IOTypeMismatchError() { + super(CompileProblemType.IO_TYPE_MISMATCH, CompileProblemSeverity.ERROR); + } + + @Override + public Component getName() { + return Component.translatable(UL_IO_TYPE_MISMATCH_TITLE); + } + + @Override + public void buildToolTip(List tooltip) { + tooltip.add(Component.translatable(UL_IO_TYPE_MISMATCH_DESC).withStyle(UNIFORM_GRAY)); + } +} diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java index ec9fb4cf9..cb9ec689d 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java @@ -69,7 +69,8 @@ public void renderIcon(PoseStack stack, Point absPos, float partialFrame) { private void construct() { addGroup(UL_TILEGROUP_IO); - addGateButton(ICGateTileType.IO); + addGateButton(ICGateTileType.REDSTONE_IO); + addGateButton(ICGateTileType.BUNDLED_COLOR_IO); addGroup(UL_TILEGROUP_BASIC); addGateButton(ICGateTileType.OR); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java index e4d990e4a..a7cf014fe 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java @@ -85,6 +85,8 @@ public class FabricationUnlocal { public static final String UL_DEAD_GATE_DESC = PREFIX + "problems.dead_gate.desc"; public static final String UL_IO_DIR_MISMATCH_TITLE = PREFIX + "problems.io_dir_mismatch.title"; public static final String UL_IO_DIR_MISMATCH_DESC = PREFIX + "problems.io_dir_mismatch.desc"; + public static final String UL_IO_TYPE_MISMATCH_TITLE = PREFIX + "problems.io_type_mismatch.title"; + public static final String UL_IO_TYPE_MISMATCH_DESC = PREFIX + "problems.io_type_mismatch.desc"; public static final String UL_NO_INPUTS_TITLE = PREFIX + "problems.no_inputs.title"; public static final String UL_NO_INPUTS_DESC = PREFIX + "problems.no_inputs.desc"; public static final String UL_NO_OUTPUTS_TITLE = PREFIX + "problems.no_outputs.title"; @@ -120,7 +122,8 @@ public class FabricationUnlocal { public static final String UL_YIELD = PREFIX + "ui.yield"; // IC Tiles - public static final String UL_IO_GATE_TILE = PREFIX + "tiles.io_gate"; + public static final String UL_REDSTONE_IO_GATE_TILE = PREFIX + "tiles.redstone_io_gate"; + public static final String UL_BUNDLED_COLOR_IO_GATE_TILE = PREFIX + "tiles.bundled_color_io_gate"; public static final String UL_TIMER_INTERVAL = PREFIX + "tiles.timer.interval"; public static final String UL_COUNTER_VALUE = PREFIX + "tiles.counter.value"; public static final String UL_COUNTER_MAX = PREFIX + "tiles.counter.max"; diff --git a/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java b/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java index 19cbe16bc..64710abb0 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java +++ b/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java @@ -63,8 +63,10 @@ public class GateComponentModels { public static final CCModel segbus = loadModel("array/segbus"); public static final Map fabIC = loadModels("fab_ic", (k, v) -> v.apply(new Translation(0.5, 0, 0.5))); - public static final Map ioCrimp = loadModels("io_crimp"); - public static final Map ioColourBox = loadModels("io_colour_box"); + public static final Map ioRedstoneConnector = loadModels("io_redstone_connector"); + public static final Map ioBundledConnector = loadModels("io_bundled_connector"); + public static final Map ioBuffer = loadModels("io_buffer"); + public static final Map ioBundledBuffer = loadModels("io_bundled_buffer"); public static IconTransformation baseIcon; public static IconTransformation wireBorderIcon; @@ -99,8 +101,10 @@ public class GateComponentModels { public static IconTransformation icChipIcon; public static IconTransformation icChipIconOff; public static IconTransformation icHousingIcon; - public static IconTransformation ioCrimpConnectorIcon; - public static IconTransformation ioColourBoxIcon; + public static IconTransformation ioRedstoneConnectorIcon; + public static IconTransformation ioBundledConnectorIcon; + public static IconTransformation ioBufferIcon; + public static IconTransformation ioBundledBufferIcon; public static void registerIcons(AtlasRegistrar registrar) { //@formatter:off @@ -141,8 +145,10 @@ public static void registerIcons(AtlasRegistrar registrar) { registrar.registerSprite(new ResourceLocation(MOD_ID, "block/ic_active"), i -> icChipIcon = new IconTransformation(i)); registrar.registerSprite(new ResourceLocation(MOD_ID, "block/ic_inert"), i -> icChipIconOff = new IconTransformation(i)); registrar.registerSprite(new ResourceLocation(MOD_ID, "block/ic_housing"), i -> icHousingIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_crimp"), i -> ioCrimpConnectorIcon = new IconTransformation(i)); - registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_colour_box"), i -> ioColourBoxIcon = new IconTransformation(i)); + registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_redstone_connector"), i -> ioRedstoneConnectorIcon = new IconTransformation(i)); + registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_bundled_connector"), i -> ioBundledConnectorIcon = new IconTransformation(i)); + registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_buffer"), i -> ioBufferIcon = new IconTransformation(i)); + registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_bundled_buffer"), i -> ioBundledBufferIcon = new IconTransformation(i)); //@formatter:on } @@ -1495,7 +1501,7 @@ public void renderModel(Transformation t, int orient, CCRenderState ccrs) { icChipModel[orient].render(ccrs, t, icChipIcon); } - public void renderName(String name, PoseStack mStack, Transformation t1, int argb) { + public void renderName(String name, Transformation t1, PoseStack mStack, MultiBufferSource bufferSource, int argb, int packedLight) { Component nameComponent = Component.literal(name).withStyle(UNIFORM); Font fr = Minecraft.getInstance().font; @@ -1519,7 +1525,7 @@ public void renderName(String name, PoseStack mStack, Transformation t1, int arg // Draw text mStack.pushPose(); mStack.mulPoseMatrix(m.toMatrix4f()); - fr.draw(mStack, nameComponent, 0, 0, argb); + fr.drawInBatch(nameComponent, 0, 0, argb, false, mStack.last().pose(), bufferSource, false, 0, packedLight); mStack.popPose(); } @@ -1528,28 +1534,28 @@ public void renderGlass(Transformation t, CCRenderState ccrs) { } } - public static class IOCrimpConnectorModel extends StaticComponentModel { + public static class IORedstoneConnectorModel extends StaticComponentModel { - public static final IOCrimpConnectorModel INSTANCE = new IOCrimpConnectorModel(); + public static final IORedstoneConnectorModel INSTANCE = new IORedstoneConnectorModel(); - private IOCrimpConnectorModel() { - super(ioCrimp.get("crimp") + private IORedstoneConnectorModel() { + super(ioRedstoneConnector.get("connector") .copy() .apply(new Translation(0.5, 2/16D, 0.5))); } @Override protected UVTransformation getUVT() { - return ioCrimpConnectorIcon; + return ioRedstoneConnectorIcon; } } - public static class IOCrimpWireModel extends CellWireModel { + public static class IORedstoneConnectorWireModel extends CellWireModel { - private static final CCModel[] models = bakeOrients(ioCrimp.get("redalloy").copy().apply(new Translation(0.5, 2/16D, 0.5))); + private static final CCModel[] models = bakeOrients(ioRedstoneConnector.get("redalloy").copy().apply(new Translation(0.5, 2/16D, 0.5))); private IconTransformation getUVT() { - return ioCrimpConnectorIcon; + return ioRedstoneConnectorIcon; } @Override @@ -1558,7 +1564,7 @@ public void renderModel(Transformation t, int orient, CCRenderState ccrs) { } } - public static class IOCrimpColourBoxModel extends ComponentModel { + public static class IOBufferModel extends ComponentModel { public int colour = EnumColour.WHITE.ordinal(); public boolean isInput = true; @@ -1567,26 +1573,27 @@ public static class IOCrimpColourBoxModel extends ComponentModel { private final CCModel[] inputArrowModels; private final CCModel[] outputArrowModels; - public IOCrimpColourBoxModel(double x, double z) { + public IOBufferModel(double x, double z) { + Transformation t = new Translation(x/16D, 2/16D, z/16D); - CCModel m = ioColourBox.get("box").copy().apply(new Translation(x/16D, 2/16D, z/16D)); + CCModel m = ioBuffer.get("box").copy().apply(t); boxModels = bakeOrients(m); - m = ioColourBox.get("arrow").copy().apply(new Translation(x/16D, 2/16D, z/16D)); + m = ioBuffer.get("arrow").copy().apply(t); inputArrowModels = bakeOrients(m); - m = ioColourBox.get("arrow").copy() + m = ioBuffer.get("arrow").copy() .apply(new Rotation(180 * MathHelper.torad, 0, 1, 0)) - .apply(new Translation(x/16D, 2/16D, z/16D)); + .apply(t); outputArrowModels = bakeOrients(m); } private UVTransformation getColourUVT() { - return new UVTranslation((colour%2) * 4 / 32D, (colour/2) * 4 / 32D).with(ioColourBoxIcon); + return new UVTranslation((colour%2) * 4 / 32D, (colour/2) * 4 / 32D).with(ioBufferIcon); } private UVTransformation getBoxUVT() { - return ioColourBoxIcon; + return ioBufferIcon; } @Override @@ -1596,6 +1603,83 @@ public void renderModel(Transformation t, int orient, CCRenderState ccrs) { } } + public static class IOBundledConnectorModel extends StaticComponentModel { + + public static final IOBundledConnectorModel INSTANCE = new IOBundledConnectorModel(); + + private IOBundledConnectorModel() { + super(Objects.requireNonNull(CCModel.combine(ioBundledConnector.values())) + .copy() + .apply(new Translation(0.5, 2/16D, 0.5))); + } + + @Override + protected UVTransformation getUVT() { + return ioBundledConnectorIcon; + } + } + + public static class IOBundledBufferModel extends ComponentModel { + + public int colour = EnumColour.WHITE.ordinal(); + public boolean isInput = true; + public boolean showInsulated = true; + + private final CCModel[] boxModels; + private final CCModel[] insulatedWireModels; + private final CCModel[] inputArrowModels; + private final CCModel[] outputArrowModels; + private final CCModel[][] selectorModels; + + public IOBundledBufferModel(double x, double z) { + Transformation t = new Translation(x/16D, 2/16D, z/16D); + + CCModel m = ioBundledBuffer.get("box").copy().apply(t); + boxModels = bakeOrients(m); + + m = ioBundledBuffer.get("insulated_wire").copy().apply(t); + insulatedWireModels = bakeOrients(m); + + m = ioBundledBuffer.get("arrow").copy().apply(t); + inputArrowModels = bakeOrients(m); + + m = ioBundledBuffer.get("arrow").copy() + .apply(new Rotation(180 * MathHelper.torad, 0, 1, 0)) + .apply(t); + outputArrowModels = bakeOrients(m); + + // Create 15 selector models + selectorModels = new CCModel[16][]; + for (int i = 0; i < 16; i++) { + // Each color is 0.5 wide, and starts at x = -4. + double xPos = -4.0 + 0.25 + i * 0.5; + + m = ioBundledBuffer.get("selector").copy() + .apply(new Translation(xPos/16D, 0, 0)) + .apply(t); + selectorModels[i] = bakeOrients(m); + } + } + + private UVTransformation getColourUVT() { + return new UVTranslation((colour%2) * 4 / 32D, (colour/2) * 4 / 32D).with(ioBundledBufferIcon); + } + + private UVTransformation getBoxUVT() { + return ioBundledBufferIcon; + } + + @Override + public void renderModel(Transformation t, int orient, CCRenderState ccrs) { + boxModels[orient].render(ccrs, t, getBoxUVT()); + selectorModels[colour][orient].render(ccrs, t, getBoxUVT()); + (isInput ? inputArrowModels : outputArrowModels)[orient].render(ccrs, t, getColourUVT()); + if (showInsulated) { + insulatedWireModels[orient].render(ccrs, t, getColourUVT()); + } + } + } + private static class RedundantUVTransformation extends UVTransformation { diff --git a/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java b/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java index 637a194c4..cb5806418 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java +++ b/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java @@ -79,7 +79,8 @@ public static GateModelRenderer instance() { }; private final GateRenderer[] nonPartRenderers = new GateRenderer[] { - new RenderIOGate(), + new RenderRedstoneIOGate(), + new RenderBundledColorIOGate(), }; //region Static rendering @@ -1960,7 +1961,7 @@ public void renderDynamic(CCRenderState ccrs, Transformation t) { public void renderCustomDynamic(CCRenderState ccrs, Transformation t, PoseStack mStack, MultiBufferSource buffers, int packedLight, int packedOverlay, float partialTicks) { // Render name - icHousing.renderName(name, mStack, t, runtimeError ? EnumColour.RED.argb() : EnumColour.WHITE.argb()); + icHousing.renderName(name, t, mStack, buffers, runtimeError ? EnumColour.RED.argb() : EnumColour.WHITE.argb(), packedLight); // Render glass ccrs.reset(); @@ -1971,20 +1972,20 @@ public void renderCustomDynamic(CCRenderState ccrs, Transformation t, PoseStack } } - public static class RenderIOGate extends GateRenderer { + public static class RenderRedstoneIOGate extends GateRenderer { private final List models = new LinkedList<>(); - private final WireModel[] wires = generateWireModels("fabio", 1); - private final IOCrimpWireModel crimpWire = new IOCrimpWireModel(); - private final IOCrimpColourBoxModel colourBox = new IOCrimpColourBoxModel(3, 10.5); + private final WireModel[] wires = generateWireModels("io_redstone", 1); + private final IORedstoneConnectorWireModel connWire = new IORedstoneConnectorWireModel(); + private final IOBufferModel buffer = new IOBufferModel(8, 10); - public RenderIOGate() { + public RenderRedstoneIOGate() { models.add(BaseComponentModel.INSTANCE); models.addAll(Arrays.asList(wires)); - models.add(IOCrimpConnectorModel.INSTANCE); - models.add(crimpWire); - models.add(colourBox); + models.add(IORedstoneConnectorModel.INSTANCE); + models.add(connWire); + models.add(buffer); } @Override @@ -1994,16 +1995,50 @@ protected List getModels() { @Override protected void prepareInventory(@Nullable ItemStack stack) { - crimpWire.signal = 0; - colourBox.colour = 0; + wires[0].on = false; + connWire.signal = 0; + buffer.isInput = true; + } + + @Override + protected void prepare(IGateRenderData gate) { + wires[0].on = (gate.state() & 0x44) != 0; + connWire.signal = (byte) (wires[0].on ? 255 : 0); + buffer.isInput = gate.shape() == 0; + } + } + + public static class RenderBundledColorIOGate extends GateRenderer { + + private final List models = new LinkedList<>(); + + private final WireModel[] wires = generateWireModels("io_redstone", 1); + private final IOBundledBufferModel buffer = new IOBundledBufferModel(8, 8); + + public RenderBundledColorIOGate() { + models.add(BaseComponentModel.INSTANCE); + models.addAll(Arrays.asList(wires)); + models.add(IOBundledConnectorModel.INSTANCE); + models.add(buffer); + } + + @Override + protected List getModels() { + return models; + } + + @Override + protected void prepareInventory(@Nullable ItemStack stack) { + wires[0].on = false; + buffer.colour = 0; + buffer.isInput = true; } @Override protected void prepare(IGateRenderData gate) { wires[0].on = (gate.state() & 0x44) != 0; - crimpWire.signal = (byte) (wires[0].on ? 255 : 0); - colourBox.colour = gate.state2() & 0xF; - colourBox.isInput = gate.shape() == 0; + buffer.colour = gate.state2() & 0xF; + buffer.isInput = gate.shape() == 0; } } } diff --git a/integration/src/main/resources/assets/projectred_integration/obj/io_buffer.blend b/integration/src/main/resources/assets/projectred_integration/obj/io_buffer.blend new file mode 100644 index 0000000000000000000000000000000000000000..6e6124a3d0cbfbea201766d85e4ec566b3c08a38 GIT binary patch literal 627384 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 literal 0 HcmV?d00001 diff --git a/integration/src/main/resources/assets/projectred_integration/obj/io_colour_box.obj b/integration/src/main/resources/assets/projectred_integration/obj/io_buffer.obj similarity index 75% rename from integration/src/main/resources/assets/projectred_integration/obj/io_colour_box.obj rename to integration/src/main/resources/assets/projectred_integration/obj/io_buffer.obj index 794e94787..9434c135e 100644 --- a/integration/src/main/resources/assets/projectred_integration/obj/io_colour_box.obj +++ b/integration/src/main/resources/assets/projectred_integration/obj/io_buffer.obj @@ -1,4 +1,4 @@ -# Blender v3.1.2 OBJ File: 'io_colour_box.blend' +# Blender v3.1.2 OBJ File: 'io_buffer.blend' # www.blender.org g box v -0.125000 0.125000 -0.125000 @@ -9,18 +9,18 @@ v -0.125000 0.125000 0.125000 v -0.125000 -0.000000 0.125000 v 0.125000 0.125000 0.125000 v 0.125000 -0.000000 0.125000 -vt 0.437500 0.875000 -vt 0.437500 1.000000 -vt 0.125000 1.000000 -vt 0.125000 0.875000 -vt 0.437500 0.562500 -vt 0.125000 0.562500 -vt 0.125000 0.437500 -vt 0.437500 0.437500 -vt 0.562500 0.562500 -vt 0.562500 0.875000 -vt 0.000000 0.875000 -vt 0.000000 0.562500 +vt 0.187500 0.937500 +vt 0.187500 1.000000 +vt 0.062500 1.000000 +vt 0.062500 0.937500 +vt 0.187500 0.812500 +vt 0.062500 0.812500 +vt 0.062500 0.750000 +vt 0.187500 0.750000 +vt 0.250000 0.812500 +vt 0.250000 0.937500 +vt 0.000000 0.937500 +vt 0.000000 0.812500 s off f 3/1 4/2 2/3 1/4 f 7/5 5/6 6/7 8/8 diff --git a/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_buffer.blend b/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_buffer.blend new file mode 100644 index 0000000000000000000000000000000000000000..7d04bb1bad3f1a706eac028f5d4c9e597727dd38 GIT binary patch literal 635240 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

3KkZJ2V_m*pO?KO@ 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 nX9n2B3$mMusG)3RFx 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 literal 0 HcmV?d00001 diff --git a/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_buffer.obj b/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_buffer.obj new file mode 100644 index 000000000..2d4241e24 --- /dev/null +++ b/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_buffer.obj @@ -0,0 +1,106 @@ +# Blender v3.1.2 OBJ File: 'io_bundled_buffer.blend' +# www.blender.org +g box +v -0.312500 0.187500 -0.125000 +v -0.312500 0.000000 -0.125000 +v 0.312500 0.187500 -0.125000 +v 0.312500 0.000000 -0.125000 +v -0.312500 0.187500 0.125000 +v -0.312500 -0.000000 0.125000 +v 0.312500 0.187500 0.125000 +v 0.312500 -0.000000 0.125000 +vt 0.406250 0.906250 +vt 0.406250 1.000000 +vt 0.093750 1.000000 +vt 0.093750 0.906250 +vt 0.406250 0.781250 +vt 0.093750 0.781250 +vt 0.093750 0.687500 +vt 0.406250 0.687500 +vt 0.500000 0.781250 +vt 0.500000 0.906250 +vt 0.000000 0.906250 +vt 0.000000 0.781250 +s off +f 3/1 4/2 2/3 1/4 +f 7/5 5/6 6/7 8/8 +f 3/1 7/5 8/9 4/10 +f 2/11 6/12 5/6 1/4 +f 1/4 5/6 7/5 3/1 +g arrow +v -0.100000 0.227562 -0.100000 +v -0.100000 0.186500 -0.100000 +v 0.100000 0.227562 -0.100000 +v 0.100000 0.186500 -0.100000 +v 0.000000 0.227562 0.100000 +v 0.000000 0.186500 0.100000 +vt 0.875000 0.968750 +vt 0.875000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 0.968750 +vt 0.843750 1.000000 +vt 0.843750 0.875000 +vt 0.875000 0.875000 +vt 0.750000 0.875000 +vt 0.781250 0.875000 +vt 0.781250 1.000000 +vt 0.750000 1.000000 +vt 0.812500 0.875000 +vt 0.875000 1.000000 +s off +f 11/13 12/14 10/15 9/16 +f 11/17 13/18 14/19 12/14 +f 10/15 14/20 13/21 9/22 +f 9/23 13/24 11/25 +g selector +v -0.015625 0.125000 -0.187500 +v -0.015625 -0.000000 -0.187500 +v 0.015625 0.125000 -0.187500 +v 0.015625 -0.000000 -0.187500 +v -0.015625 0.125000 -0.062500 +v -0.015625 0.000000 -0.062500 +v 0.015625 0.125000 -0.062500 +v 0.015625 0.000000 -0.062500 +vt 0.125000 0.531250 +vt 0.125000 0.406250 +vt 0.156250 0.406250 +vt 0.156250 0.531250 +vt 0.000000 0.531250 +vt 0.000000 0.406250 +vt 0.281250 0.406250 +vt 0.281250 0.531250 +vt 0.156250 0.656250 +vt 0.125000 0.656250 +s off +f 17/26 18/27 16/28 15/29 +f 17/26 21/30 22/31 18/27 +f 16/28 20/32 19/33 15/29 +f 15/29 19/34 21/35 17/26 +g insulated_wire +v -0.125000 0.125000 0.125000 +v -0.125000 0.000000 0.125000 +v 0.125000 0.125000 0.125000 +v 0.125000 0.000000 0.125000 +v -0.125000 0.125000 0.375000 +v -0.125000 -0.000000 0.375000 +v 0.125000 0.125000 0.375000 +v 0.125000 -0.000000 0.375000 +vt 0.812500 0.875000 +vt 0.812500 1.000000 +vt 0.750000 1.000000 +vt 0.750000 0.875000 +vt 0.875000 0.937500 +vt 0.750000 0.937500 +vt 0.875000 0.875000 +vt 0.875000 1.000000 +vt 0.750000 0.937500 +vt 0.875000 0.937500 +vt 0.875000 1.000000 +vt 0.750000 1.000000 +vt 0.750000 0.875000 +vt 0.875000 0.875000 +s off +f 29/36 27/37 28/38 30/39 +f 25/40 29/41 30/39 26/42 +f 24/43 28/38 27/44 23/45 +f 23/46 27/47 29/48 25/49 diff --git a/integration/src/main/resources/assets/projectred_integration/obj/io_colour_box.blend b/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_connector.blend similarity index 65% rename from integration/src/main/resources/assets/projectred_integration/obj/io_colour_box.blend rename to integration/src/main/resources/assets/projectred_integration/obj/io_bundled_connector.blend index 5d05f00aa14e4c6515c50cd62c39eda72b33c982..b41fbc70f9cf3637cde2e987cfd3aa76146684df 100644 GIT binary patch delta 73221 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

9KGCO4+GWh!ys;v#Zvs$@> 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 literal 0 HcmV?d00001 diff --git a/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_bus.obj b/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_bus.obj new file mode 100644 index 000000000..acfa70285 --- /dev/null +++ b/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_bus.obj @@ -0,0 +1,81 @@ +# Blender v3.1.2 OBJ File: 'io_bundled_bus.blend' +# www.blender.org +g cable +v -0.125000 0.000000 0.375000 +v -0.125000 0.000000 -0.187500 +v 0.125000 0.000000 -0.187500 +v 0.125000 0.000000 0.375000 +v -0.125000 0.250000 0.375000 +v -0.125000 0.250000 -0.187500 +v 0.125000 0.250000 -0.187500 +v 0.125000 0.250000 0.375000 +v -0.187500 0.000000 0.500500 +v -0.187500 0.000000 0.375000 +v 0.187500 0.000000 0.375000 +v 0.187500 0.000000 0.500500 +v -0.187500 0.250000 0.500500 +v -0.187500 0.250000 0.375000 +v 0.187500 0.250000 0.375000 +v 0.187500 0.250000 0.500500 +vt 0.125000 0.437500 +vt 0.125000 0.718750 +vt 0.000000 0.718750 +vt 0.000000 0.437500 +vt 0.312500 0.718750 +vt 0.312500 0.437500 +vt 0.437500 0.437500 +vt 0.437500 0.718750 +vt 0.281250 0.437500 +vt 0.281250 0.718750 +vt 0.156250 0.718750 +vt 0.156250 0.437500 +vt 0.125000 0.375000 +vt 0.125000 0.437500 +vt 0.000000 0.437500 +vt 0.000000 0.375000 +vt 0.125000 0.875000 +vt 0.312500 0.875000 +vt 0.312500 1.000000 +vt 0.125000 1.000000 +vt 0.312500 0.437500 +vt 0.312500 0.375000 +vt 0.437500 0.375000 +vt 0.437500 0.437500 +vt 0.125000 0.250000 +vt 0.312500 0.250000 +s off +f 5/1 6/2 2/3 1/4 +f 7/5 8/6 4/7 3/8 +f 8/9 7/10 6/11 5/12 +f 13/13 14/14 10/15 9/16 +f 14/17 15/18 11/19 10/20 +f 15/21 16/22 12/23 11/24 +f 16/22 13/13 9/25 12/26 +f 16/22 15/21 14/14 13/13 +g box +v -0.312500 0.000000 -0.124500 +v -0.312500 0.000000 -0.187500 +v 0.312500 0.000000 -0.187500 +v 0.312500 0.000000 -0.124500 +v -0.312500 0.312500 -0.124500 +v -0.312500 0.312500 -0.187500 +v 0.312500 0.312500 -0.187500 +v 0.312500 0.312500 -0.124500 +vt 0.656250 0.812500 +vt 0.625000 0.812500 +vt 0.625000 0.656250 +vt 0.656250 0.656250 +vt 0.656250 0.843750 +vt 0.968750 0.843750 +vt 0.968750 1.000000 +vt 0.656250 1.000000 +vt 1.000000 0.812500 +vt 0.968750 0.812500 +vt 0.968750 0.656250 +vt 1.000000 0.656250 +s off +f 21/27 22/28 18/29 17/30 +f 22/31 23/32 19/33 18/34 +f 23/35 24/36 20/37 19/38 +f 24/36 21/27 17/30 20/37 +f 24/36 23/32 22/31 21/27 diff --git a/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_connector.blend b/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_connector.blend index b41fbc70f9cf3637cde2e987cfd3aa76146684df..fea4b573feb3f64d875fd4b26939bc8ac87089f8 100644 GIT binary patch delta 77524 zcmce<34Bz?kv~48d4j>nMh+T~%m|5FfB=Cc5a_-KBq0F;#4Rv~FapFaE)QS~G6r)r z_{lal_`)*yknPx#ub3o0l*Eb2=2((-Y;WRCv>Wfj?mwF!-c8cK`gV7Xp2lE1zs>&T zPrI+G>guZM>gs;)4L`j)><_KOkNG?qDQk|$&I`Wga(P_?YuzsWhkOsEMU>*><7H}U zs!U8wlp{xulu1cRDo1(Ls8KRGIav-HHcXBlJz5SOI#jixZ^)1#s&Dx4;d1QQv2x6q zF{%ypkN`Vw+&D$IF9;!l5C{^&@hf9Qv^#3Sh!GCIpzl*Ie`!6AM*weEE}E+>X4to2`c7M;SLrU>P~{F zGaM$3I&v_9a(;fkoHlKmEGsLM<>lpHGX=|Uh;So9H){X-gF2WCer--Q(v1fH()Nn! zHeQ)f5uqFi1YmRGO60JfSez3lP83%>gFK{fk=tYZ z2&|*@^mMhJ^78WJ(xpq)T7in7Z{&n0WRF4OjUG`RT1R3@PhVI*RUGRXOUWzRdqjuz z`FdjQO_*FPKIjoII(kMAzygQb!4Jx%rKJ*MV;tghG)yTgD~oOIhB?8hIppNzD16Y$ z&d!!=)~xwooie4Q!4ToEiSYjn55~VZ#tc2nFLvnmaaolzt#r9eo{$w9IGhlynWaY#NqpS<=@VYB zXo`yRj2}P#_!VDI%HaRSxSM?*tQpFKv|hUVWAdNSIc(19Q&GnH%goGF8=|uh_KY_6zaxtxuom;SFNz2g{faa;~HNbrW#DZh|-+u(6>E;vNn-2tX{^I&viD z-~d*-aMrmzTFf{!zypu+@ho5ONjXzxMqas0%g7c>jt%qB>JcCJdKxS1cC0K=edLix zlZM2{ zw+zeNx^=5uv}lov<}j-b8#c&0?zlr9J$h8u)z!(zAAekK-n?1v+qX}yU%y@+Ja|xU z+O!EC9r&xDY0#WKd$!!TaiiiDb)>?=LKzGO<*Zq=ZCAs4J6><}=8Fg1140!uwCCyOf1OiN2s(GvPV19ez5 z5>^FdjWM{+eOQUK8?1t?xGg+KA3T0|dw3n=gtu`W{E%;OT0c~X1&GChZse$g3>G4C zH~=JUVn}Gih72)71@miH%SSJ~F7vBasp&yQMMXs+T$G_wOdqtd36k>&ss`?aU7-_z zAb`1IAoRn=fQ*DXGlra*MU+}xTpSvNcSipS;D%6YP&pg=WZ zKo}KrC2Pk-(GiQ!M!Prb1 zQ3`kiub2z?!)^{zH8nMI-n@BAs0)^@k$0YaMV8E28xk7$XPF=xLLG9$SSV8-RF#T~ z3e^CCA>6>ASlBF72o!a=a0ndCKn@^|GH_7Fe8D8#6LP>J!8w3o;InLstCq>5kIr~g zmd#wKGziloj?|0*2u-n2L45i0<%$T()terdRZDj&j{?FQ4?QPWZrqQR$KERytCW?% ziV4p_3vI}0^5RNNTo6Lw6~H+Z>}=;%$^D@`GcSY-7-%xoXI6H2J!j%1nLSC5NjO8* zK-U|;)4+*rmolP1!&%xP-GH`jyUnM4n0}jS9v>>J+ zkICb}B%EzdzPZfu04+8NB@2=pa&G4`=fDGfu20R#tPfSVk#lC2_ck6pJO?~81jfTB zfHp%5_SGL{wjKDL?n`VEmKb|{mK$=&3`6notPdkA@j<^h@!`N|bz)~2mJRB_1#6SD za^$4UTyY^ydwHHN`bsBf%1l~H+;+X3<%gWdapu5rj?2?Wo8gt|TWC-+K?h`ryqhtp zLs$aGh2ioD+0n>2aj9QSAD*WfU&z~heZ%K4C9gz$JiPnd0h2@XF3rpit%Yzro)_3e z8M$+wVPk(mHjHQJdRZ81{yZ2a)NTIS=k$ipF_S0wxC9nBh@#AbHMyva^W}m$9uzRB z^Eln|oMJhd`rr#4FyhR3pJ&?SOd%6}qAET{>>BA6i3!#k2h0})z6@B%^Yn6C!R0%jQ|c3 zmO<8JEj^~g(xke`jgQL(9@;PlkApUh9iCWX$eGWhafA8*9!tHu2j~e8K*|<&Tzr3k zIE81XCdz0}ZXXjBM1MF7Xj6%%kdadqVw0x=c$7KiP`P+Y_cn&*X~Q@e9=RDq?4*_F z?H?_!-4-Q2=@&Z${DEJyGF6T?1P!5SYNPHCqlN=SpbQuU$Q0F6>>A$}(LK)tJWvwP zkMWImwlR-Rz9z$%Y2GwPF>Zt}$bHi$cjuqmnFb8i*%n@A6|+2;56;n!IXDyHq=gzl z(5XnLkhnceKqg(DFhHir&EGl#-u@v1w}c6 z|K8oKO5IMCVevp_=qf2LRWd^zR}{!0BfhR+c_DYo%&;QXkMxPec*{d|GNyh#@=73T zaWvg0K1s3q<`BnIX*b2xfC8`&PEx=*-#eP8%OVJ`b32Ja$iY4l)jv9wMS@v7W~wB@ zv&XvX<}#FnRM*T{N|>3taTrAxTM2`Ppv*#qaLvp@OAEulHPJVh+2K5^V5&NBn`!a% zLV4K~J!P;An# zpoCURZde=S1UO20Ul5uT8A}^==YU)`1ZWHLi6>HHMBV_)Lv7;B2wz{enQlT+_Avw& z4weN5(MytQWLz+t*bPwd z#IT`$YR9~BrQvLImf3!oKKEg4ZexDX2N6I|3`b?!hI-Kw@{Ts*aoR~}DFFvDRLILJ zhtZegZC*NK#*D?%QBT7_`Uhj<3VC>tXOVz4W)G}n<(Gz7V%CsjdgWO;;>`9qu`u1+ z$6*G57cx0sIT#8+W-)ERpbVD76KJ9hyf~JFDgy^?-7G-g*OtNrVD=N!C&|^z*UC&< z!mt?7fqIZ&c}Qqy=LpA$@yxhl+z|3`#oqp?bAlYeb5?!;9x$?mHj4r=L-ZF-#nGwG z8FQI2IY&E^sgt{n6Prgy!~H712o89*7!7627U{ZnubqLqrPfA1R<2l9NAZZhv|#CC zJkUlRaN)Bi=^&2Cyb<5P&(1B7+4;rF8X!$h*;JmEnJt3FaS4pieaPYXkZ3;Q%nYCC zD321y@-5Lmn_{VxmdG0774;*%xvXvG8FiKi=s+H*vmB6rac5LvB{h?Aj~Rh|0pyq+ zl$}XUD?3|Um>o9>djSuFX<#_i%W1tcKIiC%AGM#ZIJ&^s6AYnD!t2d~AvlU1;>0ug zQQ}WYUJ*6OtBw{B0yD;T&`k*1+4aW6u$(7PnnLzIvNy*;G!ZOkca9h|x^DuerMM$? zWETWNlraKacAw)u(YPW?(c*3c)S_9G=F%Kp zqm9MFA^?4~JC(XV&zCSVcZy6Z))ovL%pW`Uw8A1euXHLYdAAC3(kG|LX~pI8#Yf+i zf#Nbni!GiW=s;GLSRGIi#$i>V3_io#Ap`J)_Do~tfXk*-k*y8)2P@-700!wsGBPq1 zAJqFq?Y&lzVHI6tE*J}ZAfe2>A!nT;M?dgUX89rKKF%F73_XU#LZCEMF*TV8x{I+a6;sFTl^4NwBV4;t2rnO=O2{Q79W(2oA=6!1v}*2#p`9oyv;JTBKX&) zzZ&5y2bi-)$g-tJWW(OaL;=Fkc`a)M4EQ|O6xLS?aJg|7_l+y;2S0N&ZA=#b6;%L|Oh zW;pP4W>(jw4Eli=ZpfGe+MqwBGyfo&J7bHizJ0HpICZ_On!8RmtXd-{PFpWiOY7x? zlC^UD*H6K}2KcXnEuFVRW>s#Ii`E>F1CC51=4#_Gh=N8LMI(wpAk)<`})EeMe;%H}FhCv?^!FhQZnyv2U9KtQ6 zXVyjZJR9di1PS3hK|5%}IN%TbBPoj;>sx?+Bwl@vT`k-V(eU|l#FUA0c+OIY9>Sq?ilj0(`(C zQCTcW?OGL(rD+ejcO&1B7o$hAYT;w?a~eOEUdx_1L5`pcHH-uKAm@J0r_fDe@)z61 zm4rn@fP>fx^35v9l?!&Qmbs+`s?G2ZyG_6f&n?Q3xy6%I4w*w9m>1?#nd|FIhe26H zAqG5-(S^7|+h5`qD>$pXOzvJ?EAw-*)FXMkqK04`^9CJGu(5DmDA^EP0p6H#$ao5k zJ!;fw#VZZ~kU3!49vm{SRgAJw(E%WA8D;{ZekjYij{*(?0%O_fW90UlEHw~b^uPrZ zUIQmcv}oFjhs4lO1%vQI(dOYdFmH0$g%}9lnX^aULL{QVR)kqaZPws-ZgUsO{YuqLR$I>xxOF^x3YYi+`eJ4+)`d7m(W|2rDWEl z&71UziQR?kG~?A!lSzJ6H=8$4I4HbE;^`~hcKPYvv7H0 zPQgO^=npq<_zO;;g%hvY)JEUs6&ci|PG_JoJ%{Kpz1J@BoWcL1*3FtC!2^ zOA2LTX*^Ah&5?!{4x#XOO{R&qKogmy?q%S5&9TqiaXW zeJjSu>814SlmW(iAXslZoY=12rb?=kI7fU|=_aJHK^Yr2vy{19GNtE{Yq!|u<{ z5MzQd(4!=BGkrMTl0&YN)25QME+uW`Y6(NSNRW0py*anNZmX;=sg`L&2FkH1^zBhL zeS=gIFURJ`%d+Hnxp-i_tR_iM#`iAfI~NEVFa5EAXP0NnyH|~o^lT-Rb}b_dF35w= z=#uVax@&p!S4eyJN$rx$#y3b)II_|0IYKHbhPu zL$9gl#LI;8csU{vFAG!S<$}a`IiJ*;OA83X$)(t6TA)B~U799OY#c4chEYnDcdtrL zl5;CENIg)IP8Fp%tHP5}-6XP8QJLur8s<584A~`ne^#$keGmfP5QPe%EtCNVTQ4ZB zl2e!6Ba14Rs_$OVws7G>1&8$lRbv9??u3qPWSAg`0YMNF1po%bB807R9Y`oM0eD4} zb7wWk>XrMHCb$g)lgw%+Uwu@)1APn?}?1!2labfZXj zG_=*y)fBHoJ~roM(@Uf?isYS}*2n<8N<3!VGC5)33OPD{tsD}+l@z;ECM7PA=|j`y zl%#k$ZeqL~LSAuDS-i|iOOz!vJp@lvOY&sXnz2$qk(3Ut9g`=Q%%l$r)Z*7loKul0 z_tZ_0V#`>$zka-|nikr&RcruevCfRQ6aPInUOZFj4MH(U?BH&@?KUM_Yz=q=7VUVo z9f1>GY@NIK4!P~*MY(>rQ0sI4{P}X*wrxsJcyAhdfgGVsyvhrq@Yaqx^aUM&9&H&x zWfhD7kBCmxfyjppTc=AQnhkXWv;2rqJ#zs}f0ALi>I(24+G7L-#6M&+XUX z)P{0e+O0bNgmi!m6^}dO>!q%Za2gkbHuMda1xn?<`jxW&j@7bs{sNgYdyX75y;=^> zo-fCZS|-QG*U6Fb8)Rbq7Fww*<(NT5GIhvMIbqUhnOA_02oOlzi82%6GWTIH?!zFM z09N~?DeCbFZHvRyq%e8b5ppC5g15>ta%K6DWC8h9>f>k_Fw>@%$h)`SF89t_B&SWm zStVairSt0yiktE%jjEU~2NhS!;c3+}d1#Fs6TeE17_^Lbx~VcyT39PLE}JZOtV)w} zrt5eBTVNVJqe@M~%TXD0mkHISNwFG~~`Q1jub%W{t6M(eLbYmZ`5Uq=j%mChR20ZDB;dz!Wsektild zTQ+vZATL#DF-#arvjwCzJg!mwvX+n(@jif0`+gGKNccq|&0vTvD zoi-SRng}CjmSxEGi&N$7>2#VS?SUC+ku}LCd7bqrF5PJj0X$&BwaOZ$H7c&men2!F zN*s_~oG0h3ua#M3G5Dkbj*_B6Y)rHS^tyHm3qoUSLOa5V9LiD7DJl!`SW;Xh_ph#( z%WJpF`AeqBMXSckx%C5O#b!z?lH?s^r8{#<nF-BE7E1*S8uV1W{lW#%n}!SSmT^@ z01vB89+NB!D@w_Wr-e2S+^6$iob1F0C-nHrS#P$jD$d(C7vVQR-WyLIX&cPTMVByQdI7fKJhbz6} z?K@%;AZ#eWDSQ?@z9*os>?)mtVb^dY0f!48aN)wQtR5`>^_Jcwd@I382Vok7o{~CV zPASe+mXF66#E%kko)L1$pvcNGH=ZAMczlUeTT><1%`cW)XXMI;%tE;?jlQN!T`6m_ zx02JZl*P2#E6eo7VJ5|HIk_l4{Xc0}%AR*v}Li(CvQEU)`WdS>ueK$YJ7Rtiq`d=e>#$g&puyluR zc7`x5Cw=Qve7R{^x;(ToMQ*x1O_mnJ z?c~aus!X|WUAo*uzG`MUUH$_Z#{v*^CbTQ%(ZRWp4#7}f9^I_b#ofSdw~2bvU*dL4 z>{(=q+FW|w=I$uOl43&Xsy(PG81GU3A12HW88gEq(sCq`_lh(Z7l8ki^WbIBb9 zjGeMu$;~SuTMa1Iohu*H0NY4thb(HUvgDns#>$2z<7HVuUkW0aKs>r~{uFs=QyT4; z6XlF@^)aaaA{5BsGI0_Pl}R3uO@0Y&!ui=EVOyNowZSX?uq#Hr`NFP-H&9FnWv4L4 zEsW<4uheNkC?h$I5M?AM92=nnPAoB-soqFwg)O8NR_zTsU_!_9j7$;+J+Ochz%P6@ zJO_@AkO3kdl%W)TI_o-|p>3K83E41JZuWtYoU}ZH5)C2267lNkx$@4sWVv_sNI926 zI^2UVsLqwU*G!V@YU$Ig0v){oCqKWtfrjW@*KqZIz}BJ0Eso13_k+7piqmqt#f^Bl zF7hHR5tZ&0msVQh?Lc%NNCTG}>Om^Sg&*HCh@?13{CQTY(U_KO!#Y2OD=1q_AYo{? zu)0j{X|rW1xld>aml;_0xF3V|P=-4|&QgUmVIjq2@*K8+ab6DDh11A2`+}I1GvWRl z_s1orC6r3#>=}h}!}2L|)xycLq(}?gDXbfnnI^_$!Euf@lVT{|M1?NiNsuu8ykdH8 zwUgqv12H1{RCJKd`|CLFuj5OvW8xtne4V8bRGp0E9Kcy-#BewqkDztztjdAIiC-t7 z-}+RPRtSi*%u!}s(=W!YrNDH3lt|uolMk^jxws;dGExDa z=+G}|?2Qwr7kJf0HG3bkX{yBqu}sV*za7x($MaA4Y&@ysr*$kIoAj4 zqCjv#haBeGnLB4gGpSQR;ZrtKyKW!Davm-^9?UrqwTV9K<3!3@iY``IB84{9stw*g zxp@?XKv0FG@4QU$@qKY494@+>O@-Unl?CZ^!i?(Xx~r()ezs@*+C(jG|$fEs`O9)9=!79=DBK%KaWGlbipbmOnQKk~CCan1!sCYYUYWF`OrY2xP0XlH6n~yQ z3sRZ{lft^)|Fobli}h<;xJk!}4V=QXo$J`FWs$IDV9?>sm@n|j<*&+lPS+C>_i+wd zOq<)f*;BZdjHblsRdlhm(<}b8E0%VT9zi@oCA%UyP0s9ka*GEQ_uO-jJQUn6@7=Xg z9&X$tk8C<54{Sds@7&ug?>=}$3b9ch6`SM^q!XLu<2&}r$F}d4ySML<+qZ9*d-v{@ z`}gmc+xP5|8-qc)h5EPBTfbX2;M{x5-xns*FxoPhvxpB`%d2rK4c@OIZ>Xh$h|I1+k%Pyy&gseyZ z+Kf|q+|N1sP-Yk?1WIH@a{G01{XPn7kO5e;T)$pU1FFMK;x@n7wZJP5&yAw{6mM|S zBpn{(A{;-n^z5_G%GO7Oe6hJnzI5!2eEHA|^68VW%LmVP$aCkvDKB1ZlI@fPrTf2i zkNl~4RQ}zGv+@CPl2k0@qmMo+pM3I3DbAjiP4poDUh2QE=}CFG=^5G7^r}46^t?QE zZ<9QExJfphZ7Rb5|Ci-@}s-a%7NjXKL%n7ln#RnL^U^q$!GN%XZA`A)1cs0ODagoxn_68@K9 z#K$%LBIt0Hu!SOyO%!eHjGDzl=bVL){CaKNemyt?FUGB+AbO{z?n$s*ajb4=XbAo2 z7=Ao#-MV$^2h0{OTqw@0h!d?Vyg~ek7=BEQ+LXdM;=vmk7cN|oFTC)A{Pv+z*|B4Q zY%g0aFC;xC?}|=M!Gn}s z!3=(ml=MXrLA=`Ea6ZDxcjd~J3I_Uw%<nu+eDdo!6_!H~t zo@pNGg>;igcTTliERnP=%IGSF?h>O!#wz;SWTz!!w?v8Z^@tX!pWc^*2|yu7|_$nokRzdndM^Z^(Sqn$bb2puk0p*yDz&YwRoTU%S@TlbX8cef9aua>Qm&yPGO z4^M3k%4Hkgl#TSubLY>y!D7iQSgytf6lZx5ZM5HkXB7twd6uzC6@* z+D-_39IprbxE|KQ?YG~q)&Xpv%V>dONz%_viL!lEW6*5-!E9L(!2`&BZLSl z?xyvSLaK1>+$o1;ACgmD&2qeTPTq9Wn=&rCSkE75TYKc>m*~yDk?NtXqYudfbg@EnDPW2VakVQr5WZDhoeW73SE&6!!n5kgrmh zvmbjD?k8AzFfu%wheD_?s5UYDh%f-Liz6Q8O$|AK!xPpU2%sPFlT(AwJ@=eC7qs79 zB46Khn`|jrA|D)jLI#T-my7D#<@URRvaQV}&rzDy9_+sE7FSlQC4rk6c*Akz6cA~^UO2y#TQ?c-#uI^zrS;U{Py$>^0nkvDau}vw{QFw z9kTCI2Z~eYD875aCFeXFDL<*+rP7j_bJVYc-+AYq>UK(<@2EU1=a3Az?w8{|kI-6r zmdvm3(B6%{m<+l{SZ|6#u3S&JpYrp++tvN5UN!R1Ni#`+<85vU?1v*zqf_ zPPIDA*HKeQ3x8!_mwLYn5!)S@VFRhD{&z7u|EhEmzrji!9WbMmxu@qdv{4SjG0 zV9E3Z{jcyKIKdT|iuu*Gn72RN3;R?AGME7E?O3sWojz5mHMxnb|iE*2NY#C_q%a!Evjeg`)AHOk&D;`t@LMC%f-NmdXM3RHopA34r-h*&UB(8LatkdUCxa)4b_ zmM&{cM#x2z3g!IKb7fV=LVD+C8NGg6PG`h{a#qbinLaaKX3R{GizepDh3WL$ei`~h zWY{=j*0FRcGmx%TMopkVchbNaa$Ev^sxxS@95%R0P8mH=PNHuh6LKi!4wS`15@ab| zXN>P!ILiNp`$P^G;TutQ)}h4fr!imbKrDxCM`;y51x~;4XEY4W-f-nX^5N;rv<+Bi ze>kqHPg^P{70qTy3=CEOn5>#R*m(4s}QfM#EQI_>KYzvGlm_tE7A# zxcU&0uS*a_!UyKMlLj-BPH|>FML3j`j~q4vFwmGvS>1p0-my0SYVBQDBiGS##^elH zJaYnlph9;yc~fN(@$f)8y?{q{&*PglY2ji-oLNE-azcwxEyf_OxNrrAMTW%($BzXA zzlfk4R}whjA>sZJITkkBaXy> zphW+u>FP;2vV8)5bu+2!$MO)mV1tIEq&%o9X!vUqlneq;3L;R*8GZ-KMyQIXdq}wC zLUPt|FNLM8p8{5N2Lv)YvD-S4!ik_CaL&PK8=*tQ$RL!rmQMG$G*XHjkM9%HWL^&a zQ#BLm!`pH6lQCl{nS3;r!_$OR$G-za%Yik?d6*_c%Y@o#OE70hp?LieR>QsDwBJ5T79acRhyQM)U*{YXC0d8a zsvntW`0@<;ynZtMJ5$AT=wEW7FRN#!$g;)i0!Wzwt{o^`77wi+kEb;1sSCmuyhqKC z%HMu;s{HNC8I&^R?_SB4&xuN9>-X(lB7gf@nMoD$lUJszhX;6ofSWB`rvC84T_QewU+ZT%EZ=WrYziOf1C0V>UT0Nmacnfo&Q@1*W(`Qpb_J$_b zSCXH#^}O67zAdXs1B>^y%Qg4DCRZJNRjz7!P1fK0x}3YaEp(8@VK=*Cr3#HFPRW-O z>ARY6fjjFgK$CZ0L}8uX7TEu!FS+hHnMyzX=A;3p=oN}(cl8sW)YJES-5#q&DTP7c zP#EL}$Ml?-A>VzpP`>wAiTvIZ0W$k)<$U%vE|Kp(Nqs8Kl;3%5mb$sd?KLaxn-4CK z?>;e;U}nkp&Q;6fdutTT{;hN6yN^^*Dwpp*G)=x`mqAxSr7*Zo432H+%eFNvAux); zuwDV1o>d}eu6sbvpj5f;Az6IKV_%uFrY=^BOwSA!YK?NV@-=d&aR0~UX%5%wB$igT zLZ;{GZ}OdHg|G$A29I;_D@;gGA8la9D{7TuQ-`D=B|I~ObODR~1xo{a362<09mk|- zLz#~!z{48EzO-!VGKG&aVp$wzaDjUJGKyy@0T+q*Dp$;b5E`J;FY}7rhsYbw1Q83| zxrs)^m7WRl_zZ)S{#Tbr(m4UAK1y`avbH~_3V-TMw9=_>P|(@-w#0I$Q!?P#^ zeAovN(&L&8aTUts8iVR&4u_8hP7n(cM~*-$qEGsuTaHJZ+3=o@GIlgD0lmO)qKz3x4#PwnB1ypD=^g4w zI0Hks>EvM)AXEekM<)P*j4%s|$3VC@Lm%My@C+C*gnlp%Ch%)auv*0CkOB_G@C%>~ zIN;+p6NUtOK@bKJ0DvRqG|UMdfRF@E)Zmy01XDnUC4w2?03ZFRqYuoWj&}5e7HFW% z6QMk)Drms0;pw1TFa-pN4I%~uH%eGVZ8vvYJ!b`QIsJ@E~6b5&-#UExs7kU&3aWdfrkY8@yGwOPk&V~jiHYC z_~TdN6P#U;Ht4b;Qpn++@*f>Fq@WIe4=wQs!^2&lL%jLS7k+McK zKj@F?$n8JE?Q*%iE63L$Z+SCz#7i9yrdytUy^2npc_Xc5V?PCOqufJC`19_0*zKw% z0{1-Z7FW;2M77-BGXf3Q{@61@M4v6Mu3P(vg7DVsoa^nT&h0gO=evLyo(ERGmwTn7$dRyo1 zCilLp>w)5_noxD{ObHf%9-I_G!EL6?$k;NRG$}1o}!oR&sn|N z2^Zpd-QMtgkG`VzoYnW5nI9Agw7T!ozeW6Ftlj#76*-h?Q=`ITpd=#%AdB{M{vbCn zz%_%wh(uWZ<@QeZqQHb1j`2DS9@EoUE>~`ES2sL{Gk7<{8Oe4U4j7hI|ExysF zpW$QQ>27g=gYqC7JEg_r8*Km>AzY6RXh^Q7(%xj2*E?kPBeTH6T_r2HYN!O5q&-;$P03U z5qpPOnAa0KO9weii{X%y*|{Rf@L;q)pUaikJ56;2j<6FyZ8WN3%rbD4t6 zyIC*5x^4YN*thy4lI@GFR+PAU-m-uruANVeVVE?-Z2OjeBSi9r!EU#xyf7vr#w+f; zkkZrVO>hZi= zqXP4_OYtr^?-HN9IMnJq_$i5ZiaRa2?(${jbzsCTgb0R!&kSNRiXKf){Nb6?H~Wa4 zkeI-dXni&|hKG;stA|G(8oq;uRVrI}-ep(K@C@@DF~i5ShYgS6#IYA*5||G&!2*-# z>6~5%e{PIjH8;X5tmjAd%0Q6x3_&XcPC32td`0e#m+_R$s zi;TZrOx#_nAnsoIClb!Oh&++_vSmTLVqt5R1-r5@`Ym6OcK~CFP9tZ_MDF~9#PBzQ zQonvMtRz)ehV`5_tfYb3utpd(%pFbk0%eH_f>R(8-&`+`(G$8LA#frEq z(TFWAR6jm`s21C`7a+DIFcK1**FEC+_`b<#hKb?tY-EfkMgJ%NrcCVes_0?pMIO>| z(h@DjPRg~3Jq0O}iN$pM{udz=!>lncQS}l@bO#uI=?#Bpl|eQ+S(92~$W`3X^o|ZB zklSaEcoIckTa*PfQPt-6cJ9{_65sk2eOKJ-wG`sTHh&avk{a~o7z-3c^mk(Hs$6=P zdjHF3t zVwjNS(R(`xio~~0TJ6vM-YxdL7GtRvnm(B|b+x|sgzjp6du{L5-z)9bQ7$gMKGaf$ zhVRx#T{At%RgWq}zkO2pU-4Q9J4lHW#kw~S4yZQLGkMZ`W<#P}>9P4eJ=2=+)95MR z8si~AH93TwV$ZkAEueH4rvjnLF)mLo&|xOm^n#w8A1zpT3~|lWfhjuQdcw~Q4AAmD zji5-izBW_**Turot3Oo^R5?V_1j8^6SjQlsMFQ+Eg5Tca&v;1-uVaZ%c}qrC^MtrT zMM39&XN&)GyN33D*f#{-L_?{GT>4IZRP2iy0J)O5DnJ)4rU$v|QHAKYPg`I?5OSXm z!%I?|B4U5=kUP%47#rEEujz=Up|E~CzeyOi?<|a}p#r9aToF};tM8ol0|Y&c;(bNe zF@|V)w>qlvW!->Wp{hd4d#C*j%BY4NJ!3h|E z+Vxyq0WCSKj{f$*_{iRUO$Uzx0CDkqhb>hg8a*_sxar+}7UV9-)NgrJGhO%jXPDio zTzB04zv$7cuW4plO|KC+WTE2_pcAXliWK%(_CD5HAc(x@OQpq0jN z=?3HqRTY5Bpp0sy=K@L5`Qz%S%fD6PbRicFZw&LOob(AutxpjZucA!Ja4Y{5h z3avjmZ3TklPO5(ThQG!55YB6iFF}5yE#<_Yqm+9@w|2u9{fP)SPz!px5mq44Klgd|lB2);hQH2`REe}Ah-Q;zqHi6w{ri*gJ7-3Wt#0LLx+49Bulc_ga>F&`U4;?H{GM_Af^I9JNmbt8Fs@?%P+3J5Gnrr8|h~l z#)*AUz`3-XD7yX@y4 zhU_@0Awhv5ZxTPc+EcuFSX ztsy}n1ZgMV<%zb>@1nRq?f+}>GYsRvM4)TX3gHOgx3!2C}yLyY<|NNn! zjgE~FRu4ijPLcG-&!RdW(hY$pzG#Hp$6Q=K?J&Zd?7yt`>=1jdE%&3{X^EW=>pJk6 zrJKaS&p+~W4^zDMh=v4(5Tre}-m~?19(}d-U(5Xr!5H4N8UvI<7-IT=f8^&LhKzkw zLxO@6vZq-4r@!}eFGD9irlCQl3;NDKf8^&LhRk?eLxMsG(jK_Y;}wtm<>!9xW^f1= z!U35OxOh%}WGRu?7F#|KQRJ@PcI9@D_tXdOpIOiqZUQVQG0e-@wGr<3E$>shBbknT zmR;*{(>)8CqF-?*wl#U&r#v3=dToh4-PMumyrwoK`?)Chf#eS3g`3~kKD5K+fgkI7 zAYg8H%gwID2$&5fbd3numu_|s^`qq6mXf}2NCG1I7PsHeEsR@ZAQX+(Cp>;Xw=hJL zfdHnx2Q;{aA=(WDFzt3ga0^3p8VF$8R{_B-3=#VS%_%VLq(1KW0j7Zg0;Uc`yS5LJ z;1-5xG!P(VHv@uO7^1~M0Mot%2yS7B%LW3Nwl|s}xP>9SMmxZ?^8mpu43S|VfN3`Z zf?F7(&OiXuZUqFlFa+BIFzrr)u+W05Ukjji;;n9fatD>5ZQlQ{nL3$-`eQqR)J4_P zzR_XuNk25!VcOYx6#Ox|vo-xpzsA&g9OxV4LuVqI=!d~Kaoyyg3wWi%hNmciVE|*u z?WP_Y$e431B-wf$gifYxa!|$yKv37(VFSee$Z%}hSwhMn)U~z&;3)@8od;sWZo~k% z)((SjG<6<`rwn*~tsREYV(L5)IKd1Qg1XiYL%3|}JQ5=)dsNrjVF=z2G({c>lre%r zz_s>h1Hg06Fm)a&$q4nbn!|Mv>I?#p#6nUCD((y$q1n`VB(MUOfPlC&oTCl{&jazC zv3|s{FT!6l@H`IF$7)gwA&j4-OL}}B2Xw)Yg2zHI{VbsxQ|EEm?65S|LI{Iz;=0LM zK!CT^LSO)12&T>h)fg2t13@i>FoaH1=aFKKM1i0dLKu9k*<0F8J2=6N)c|TC7yzC! zZ$>;28wEs#h2SB0byQ%=&}B%5^lT)Hw=sS;;+?9uHJAD0rNYAGDX5+4*iv_l{eFM< z$N}e))oI;p@@p6Lre5@h+F189Za<3HHMt9zY8NF+-S_q! z`(JKz|JqWdFHLg$JcMa?4sd@K<$Xcpw7=oNQ3r-zeN7if9kDNJ5WoFKyt~tnDn{e( zq?dFZ6jkK${vmghy)eOD>*p>8&G@DU1qlWESppH{R)z|^tf7Fdp#F522p%3p1i6br zYhKZyAfZ70gNY!wGE`lgh61*NNsvlW& z1f)))H)id0F?qk9j7P#F8PzPu-{}eKR0I1*>m~EZo-A}k< zcnfM9JTnlnWw0_>&`_CZY!ARKIFDgS2F^jeeqvBx3xuNpaXR6 zW0TzmbxtI|CBoCdLMBpa3;|_IXuqtL@?}w?!+A!1QU9NVa`a?S9hj zAujDVes8^RHC^lFvJZb|WyPR`DcwONK^11Hs2GviauJLiqR()Ffa^IX)@eA4BA(hxPRtx%H!Oiz>HxUVLVTdFnG?22J0l_T{QDY#0X@)Xt-( zWY!J`>79lw=|TNL8Ca{Bi#i3Eeuj_zX?HDW5FEqnx4aAhBLqyH2l5&O$U+^5!{8fD zod;r_17078!w_0bod;r$6oNVqhap@xbsmX1!j$z}USSB{pBXbV?aWdK5Y%zl0PvhM zOr1vpD-hB(H3uAr!w~9Boks%Y5P~`mhaohZI*-H%(7ieihrxH4Iu8U+Fo1%`aX1YA znyK?Rjm9isNa{Eo2A^aWJCDP**#vkThfP0AsK(TJ95y=zk9(mo_$IEKJj3u0czqmZ z0OM5JO`QkAL@{Bt64Y@x3?byMOgl?Rade4JtJJPet4x_i0@2f(e7;QM=Xh5POxJ$T zW&S`295Cy3W(vyv#cp?J`D^~D{dd5Gjm=kdz2y(=vGtB%nnOFnzmt=`xLxfCRD?_A zu515cb_7CEJ|9s%-jz*h8@kKwr69}zFam}GfdCN-+a&1Om}NI?iLjpfY`5EO0a9(0 zAYn(ZjTqQAJm@~)j^SBwppV(u7x%c|>9%_&&hvQf&-S{LEY+Xb5aILC^iA|1o5j*& zX?iQoE@Gt2QfxL-^qL$}wVU_R_WG!a#!TM+fAq|f{=_p=(U@uF`PY3;vdp_nMPpQS z$`XjEgOKgLn~wCc|E*h)hlHh{0a|ElYb9~GEj8lRJ89=7iuNZ53G?!w4Xyb8;g~Vp z$LG(^zi8^}HlWGQIz(qww1F3fxh8cTxau%UR|1`WZe=L1TfZ0&Yz0NP0Zn%OVIs&~ z3>q7uK|w-+(v<++M3`2FO7fUD?TN60qT7Hb`}BQ8kh>T(!_uH2p+M7@$71XXr+_&1k2i)|8)O0cE0;1p(Haya6lnQrBFL=_<^6_+0(KXNTOKA3 zxr;$#`)W{-U{JC{)5=guF&YZkT^v4fhB)Ld2F>tkP>@id&zvO=xs{;;{WKJ?y9oaD zQ6k7)3|iA)gMx$t{qQj&$gK=j7ptLwt)P@rBA=isa~Fd)#%WNHP@qvy5p+K{qB7)q?P%VB91#AUH&fz9|af|ySKX)-`J9#a5ACOR> z^-tqQ48Ba=h!G`C!FEU4$IiQdE!27jx8@Ah@A-_J< z9GgtuG0^Zmj9sa^3p1_k*BcZ2(-Hbv_;nP!`SroN4niR>u5Pnp+unX2n`DxKU}Bet zXbe!Y>89dz+x`~-$L$Q)L@Z$>;J3BBh@&K$^zo8tgpFofFViV3V}$N-oWju5MvsN* z6h@Oa*A*-{7Gx70uMl4FMv1Tlbq-c}ql7^1nztz2=twmaH+knMU5}l>tm&&U)6BDK zPVPVAm5Y!hN=``z#_Bo3liVdHpjU#j(_QOJ~HCw||ZuJ77jNOi}Fbx#bm&qi92_Nni?S6L9f zI{ULuoS`9fz{aeC&x{|C5#M2q*yI`Mdb+VWEV=dT>8i-IvbZ`Yg4rKH^e8$--<+ZA zAk4c3yAG*EZ&7 z?qhBb390Sk&)xe+T6oV|T|Jz-GvYvU?B8n>@3^eDKQbp$843OVzBh*HVFs8)fav4Zy=oMoNA74ebw<#{@L>r)km&kcjNurs z#o&RS9UBqh4{{4bTs9Dl*+m)O&~#B|IL7musWUysEABZ$T^QpAI*}R~&fo=I83vIF zb|FT1aTCpm495f389XM~g*VJ{;xQcKH5)ulZz7{XcEji+&aN3UAR~4dL=d#=JQ02i zE%vc<9$%U1Vq(QT{}7rqzSy{C`uXsg^b4&{hL1HuhYZwV)$}ubjj1yos86|8z~itQ z2H(VWlQ$Z8FBn$OZW+KBTDz(9K&(ZDpbo2H2%VM#I3yB!?{-)QPQ5Q_-#`qm~4p~cjBAaDYX6oR_72}8JS>YO-{z0n(y((`jq8ZoB64IFT@lk0`}b_>1m9uY+2PwuYI1Kalx zRKZRAFRu;3kjT|$g3kk6YV|wdbxSEmNW}Mf_yVqVV?=u2fA0EptA+5?yqHeE)zRSFOu6 zj|hMU9z!BsGVOp%p$^pT=$j*a!EVnhX;4$w&nvs?^v$Ve%JfrJ)$zO%1K|()ZTZ|; zrvPa{+?VzTy93ZOgD)j;<9=)hV1Xwvoa_JD#gOWsqXRSz?JjnCzcWF-iH?Sd2qN%C zR~<9*eqYxiI+)tE61_Nhv9tszW~#d-f?_umAq?)SnWpPNX-kQYz*9|Xvei>fpk2K+ z;z{>t(ld1SJHiCE_oU{K?SThWs2BT2d>Z2|?>> z_oqm}&k)RX>(BKQ zN?1Ll!E*#^+p+kFg(G7ctGmxFX%3xNN-=AcoU^_>SJ#2j))64V`?-mkZkne-fNDoa zSn+L7PK!85=QwKD=QyI#7APlHQw(d+4o11QRHL$@m@g*TS8VukrQNXJ>eY8acfL9o z63wRRU>QXx%gu{*J%do%s;a;;H!;hBS`7l!>&qDsig}>6U7AHyl9}5-v!HojFtfsd zU<9~rXJ<#0yJPBZ@6KE73KH~OaE+3a>yDMW4h#oNdH-P**!Rtg_{h%yJcq_QjQ~RS zp8GvY|947@h+&rl6xAq=EFm*BhG-uAsRr=J2S~7^jAo`Fm~YopcEBFv24%pD^pNA z@VV|gaA$*>qR-W2oNm$`dd?Z^%?{i-QhWaP5oQODVGtJ6#}6Rl?EBY7+;%)K(oVZ0BE@Pv zH;|5Km7e$gjKOn+I6zU&mCpI8p|5pfdqLhx=Jr3X?b+Y1t+%3We|?14s(Z?ivy?RP z9zN*eF~!i~69}t_QY=wDMG1ePfr5e5mDpU4M~Z6l0X`;%6h!{g*u(QT_C6guY56bHPa!uSNxp ziL%Ky(fL+6L(|T|B1fCf;2m)M$Klrq9K7gw*`o)7#$R>?jgNLWS?}NJEhp>p9<7tW zMxA%;)OpJ_y*4MABr}^-|dn_3W%u?-J zeGwzCA5vmY^En{9eo)zRQrmpzLT&TNLpGmOr zf1St7I`n>S&Tm^uh4`U@7Sg5D{yR^6O1~X62xpV?yCR14HRjE+2CN*D@za;D-YDO~JV38pQj1sj#3N3ROT_;?{P z0YKARe4lx~={Zdfq5XUWy+nvo%7uuS`e-VFZG@J2XX!0MQwKZNO?uM!kr0k)|3@zs zwqA%>ga@^4(a%JjK4ZbP;A%6-+ak`kV201S>|=Oa)a>a0!)Zd8@GbZqsiK~}dqPc- zXgU+-Ti(~crQO6GN&B>H&5fNn*?DVBvvDJ_gY^Q$uM%i?!qBXV%XevP3?BMR>CxSt z?CIJxe_ihR;-(4KN0QI&+BI=3b?%yV_h=7Nw@m+R4Dyf%Y1*c(&AXkCrS0ZSmmIjQ zy9Z%*nf<1_HT#&BT{GQtHiGt}|C;WZU^OWJ2sTBg#h3Ge zCbNX_J!_twJk!(SM;okwVQTKtb>OPISbX|w$ISB3x38v)LF*1_P>|>XO|B+T?qbl! zdo?IXbb%JlCQ$BT(5Ay06ePMp7tSG2?qbm9BN`MWxxnA{?P&teFJN{ z7_{?*1_cQQjkZ5qNK9}SgI*IF6ePMpLm$D~X^TnC48%y@QyK}xx{&-!h(32QXzcwO z6eL2R^ucUzJGa(DpT(MP22ZjzILL&+?ee8WnY$P?qgjK3L>K7tWdzDy3>tVqgMvgC z=&sudl)D(T=0Ob#5?!DtmlG&=F=(AxWFWzy{cP(F4@CwmJS`UbPaSjnq72E-fB&c9 zZt;)59bmt`(z7}4zdn~Tmlh8qHO{fnZ$3Ug)xv_duioXMU=d6A>?+Ul(d-r2OSH6U zR@r+1*|i53U|xG%o#)6+3FMsNw@0}JZL;=IL<8HYzv zpD};rN1M~51kUO@a9POsgn5U3Y>kJ$y*J%VvhFbr4l*Hde8+q)s^(GMguAAo7lSrEp+P~S3v}yx0_83SZGKXNfCyU$k7&-~oa@YgPAc+g?^oA4F)M}F>N zQ17!E6ePNV_O|mIJwF-7{R|)boQ7vQu?N2~*L~^*_dt8@cF%^mPya0CugKPZONnzV zp_}a=Kjco0R4c=tG0zh-z|dj3NzZG#7%#+!(#zT%q!;dH@QhXs4t7G|_MJOvhTO%V zH7{yVkYLb$_G7y||F^d9kB_Rj`p$Ci-YgmrCCCB`MvS`pMvV$ILL{jMyKN()#ky+L zw59DX#RQRrE9=qDv z7*i4@P0J|_W30JiwzH%xwaoIhEEj3}94A_?Qq@H%&zlV?4KQ!bab9yFqj8NsMJ5U+ z+|}yjT$sUd=TIHg_d$KzDVTM$oCdS#TIynRuW>4A&n0UgDZ@8iL-j$BukBq(e*q_xMam^iB+6$?LI`RDlS#Me5fZu-)}bptPY zuKTnfk6lIJRZFKP>W-Xn+r&R-!gb_C-N3V#j2&=Gs_xD|e$q`O-6w3nv3tvvTUVa( zrBg>v)NQPf)eZgVCv{)+dl3$lG^}0O9o>1;#JdNa0|#0c{P0JsXT1@v+dOuk)$e|F z=jzLyk@YuJ-oEmb|9ZJ@sB0c}LkG;EO0W8G&fM;&$R0SB76qj^2zxG_(w%C&bLE|j zPv#(y&#R7@a9j87neZy&SanfRor>%5x6F^aAH246WyLjv>WCv$XF~5eJIo#J&g_Hk zp43oxQ@m8DzGvT(&r=1Ba!*1di zbj#O#U({4=421`;vRy;Fe9IGbuJzvP&>}Amp{hmkr))k;DuM3Xx5%piRp?n`6_}G2 zd2x$OB3>N;*01k?46fPr-H1313$P5d;q~3-!1`|6?anZV1pcDiomyIJnM9y%cRMSp zI^^+f=5<-Y)pVQ9C#KqEw8UBRp^7TN80=+Ba9we(kpprnA&Gu`oNFIR1p!U77#u25L|PEgG!^&I#v3Y8M3*3-X_7#wL=ibbK-0_xLM4ibN?4$2 zvOuUr5eY#+bN;;qP=Nwk1OP=-1B6Nxp=|(7GlLK=B=fLY1)wHFqN*M`LX`CZedG5XPjWO4jpXduf6>21}L;!-2E6-2#ixg6lS4-N?91A?r|35_v9gl;-Xp2iu}dEbM9wUHj|BY%3c>b5o`<9Qzd9$5xJMqSN}7Jg zj14lzh-5fqUJQQ&fbuh8ut3CvvGL`$TkX=Xg+ z>?-Sc-s&V?4(Q0HYFehV%*;BAk^QqUhSMhtz zNfB#@jl8PG-?3c+3WL47>ouDP3HR>6b_rUh#IOt90t3PA5&+;?4>bK5Pt&ZYTq~hZ z3Q-wsmvCl?9}(~~L0}L@-Y!AHq+v_{RGtZnTt_V(TjDYxV7Q#WmZFw?Uuq<2%QlNb+j-}j#{k3Zy+H4W|V4!;5v3ckf4+HmJ=)N6OfD*zU_a6{fzd)lx z`dusOcrQR9qk@)c?^8_7%)OZ2-){Y_yUm4+?>zzLZbxM~7lt_M@W8LwfVn1u;Me}n z?d*py-TP0FAZk!CGvrZIf*Kr#A=ls{*k;LQ8ddk$ry3DSdw1HZbbYK<;h?HGAA=9b zjpP;#s~I{B#xwa(n}9=WOtbh`1q+ zW=f8FVar$69ZjRXHlO{Mx^m}6x(ta_D}hqKH%IYuamda?)2EF(s8vCRJvv_JQ-|JL zxSS7YhmP{{xiU!L;TpE+K>q*j79ITA78bQh{Zcl_(-D2xyufm{N%%G>FhN zgFdD}Lt^G0O`9{~AVH$4937#n=`1k%j?Ggn`7a_hs^J>pw?PD;3JJ+8kt(2qJZ&t( zw@6+Mffx>OO_zL!fs81qArR*k_>Jfy3q6uoORB(;!nCot3X$!WQ7xs!0xQgbf&jG6 zHIi3L9iqUIUh*9ZDN#^Ms4VKh3cJ5Up+gkZ5?oOQzJDt6C@Xn2r1&)H@%>W~zE|>U z2abTB@wk5~!pG$V%-fL)phxljlayzi#W=0*_B#7UbqKnKvgGH)iX4khm zqV6@_d1VBZfl;xkkhK72X4Kiv384{Eq)-@zY5{$4vcq2S*U+Tt586Wmbh*|*Cp)N# z?hS?Um}ffxE*&vsL2lz-d+_rg%EHh}ix1YNk$&9yfNyFKI`(yP%hre~mA z8%rD{v5+)cZu1=@H8y?HMXFsh+(MvgB7><# z;=`;2X@2S>FET;qFDZBFv7ag`QEr4)g8_fr5ZF?YLQoI52UUO3P(&Cajxey)daU>)MEQ&n6lE7t<@uC!ckSLfkYiBM(arS6D5~))sgI<+72@cTT0c7h6|p*- z84V{#BCI$JhBaAf^I-B*2cfDeQtjyB76MfhKbXQAIm}9s7KXLILn4W)>M2h)ZnePw zXeBJEL=i1i4LAo)fAygVDn#}bVbbQH&OaPM)kp+_dg&1eY7hO6f!TJXyP_&BgL}t+ z+c0J&?cHJXk#l8~IbUXFssJD0Mi&v-1!5ebCA1_bd1%;anMxE9ea~tz$C4^q{#A)0 z5`uuH$pN7fMYIS4nx^6?La0O$89_kP?z^lKMf3;)nr1FIRHBH8gaw)=3xrA(Q6mUw z&Oe#}Do{X508lhFK&V6!+6K@xGYH{A!VAQJnhc4mvUG$f>(#hd^3)Xk7nQo8w!CXi z5k8)?`pToNhPw0BUdoj}DS5Sn)`WdTff~kdeF^(kin8PkW0LdL*B>Bpz|M;AwA>LPSnqwWO`g3OwxJ)8&* z;b~erWU%OIM@DPeS*Z+ldOgodzC`|l&8ne6%A;57@$QKu{!7-AC5;|qN9va2^a{Y2 zbCK$Jo~@>FJU)gm=X8iMRg0jAJc#m_5S>^K5541nm_H36MYH64xR{TzDm`@p6`5XX znNF{2##)RlCzp+Pn`4l{q+$}|Y#zEi+gdQ5W?L#%RPuWk1#L$0E<3fgM5sjyP1RT^ zC>Xk~mIzgb^vcUnw~6q+7yp`c*so{2=LQbl!4uqbFVN|%$%=Y6xM z%t`wn%v{DN|PLQzjnH_1g@FXn+$2|ZX(MVu;T z^$(~g_p7!qeoLCG7q5Syy^5z$D%SqmaT4Z7e6N7RU{_8w*gRDFy0Wa{X`%A;PO@O; z+x=tAf>flC40!^6sQODz#ViOSo>~IiXTz@Hl}&NiyU8Egg1{OcM1J&im)7v8uKxO| zE^Ujd@zRkXah}ZVC4M?|1cw;Jk%to6!kBKgrdanhjht%pU6a){zCRVIRtlwl0gTuA+@3*0fGTCJtlIzm%EFlsdPlAygM8oUV6_*ZV0G`qC>@R`ywlIBjg z`Hr6is@}g`#aeeR#_q%BM`PStGkaX9(mXK6J@UTYKXd7}ft2lS1F_k?h!6XPi@k`+ zitI(aknWo8Uc@-!y@=@mHPD65K`8kDv=_09aPg0g9wNO(dq?of2yb}aG4t2dOIj|l zq0zMCr#7EGuOL(^)=(vq)FtTo1Kp|MFnF5vo-M&9rovNTqTxpm3Q#VX;`4}zOy@;( z1<9OiC0$Jc3b}%4nT}J62|jvY8SjZiL_9$8qX!tWXD7Mn|LGE(v8Xp5JuL3Wzkg;o zSRFmny}l|bT|KeOcKH@bJ3g@atoF?dDCo_<3!OJu6i^w|Crx>KTY@8mT}!$o4-@vb zL?w#I34%FzwOA#Jh>APVw5!D`QG_}UO;dFR&E+A%T)t7Ez%lTGD_*(asi&6ttn$652v7V7BNGo);OFSpgjI^`FrqqjV7+&eGIXz@UG@N~I#32~8sOwiY50$>NQ!av9 zsNl?W3kHc)g(q5^zR>2O#^)%Z`kTAv zxNpX^NTIL>RZuW=Nh>``gw#G@B&I%w4gZ%I)N`!~0tN=u(5$)RoTqs`j_P&}|hQn}xCoqJ2jp;o~TN#l+%*DP@-yJ%j!A(gZ{dV8>4wacNSn6jnR zzMsn^N7Cr;tW&*Ls#82&7pYbzdnuLThxYu>Si+r$+TV~ok*z#37UD{X+l`PR> z!Ax5F2UBNx;EP!e159Mz!$6|I&2xvVp(0z8D1y+mLKbQ}SyCGih!9vXH)SBWB$ zf?y6F&{d*{v>>3#1Nu~zD56Ucs!1;K-|W%|K9S3B8l^bZ%ZVQN__5(sl_(-Ap-@fB zTT(LB8A%`X_H9R{IMqvt9{5aq){WJwL=hTn)$C&~^cgt1G!1bm#e>UOl{SwK_&s7v z88iyER(QxI09A=GQbyo@0(nhvTfZr7>QpibOEoqHyME9nhg4GI5O-@Ad4EzK)|p3{nd2z1HSI!lS4@JfvTi(K5xtE_4eF=pqk(Sq1<* zb0$`KdZ?Aqr-!JFyefrz9C~;-#G!iPDnM^aMQb%o8nEg|95aG@m-E^SHlEj&Do zn(15I%2;lm^;OfZw9VJts=?t6rbVhXOx;L+@7aPG5e|cainiN4i25!!a<$Y#<;ni1 z1%o62rnl|sr&Y92!Rfgc3=-^OGu)iN)!kUua4Z5BVxxheU zD!0>2rCk;lB~9FB-ALZ9mEbO`V)eFnK6$imJK~PRVB9kuHV+j;KeIB*fA~H3dV2CD za;1O;=s`apF7BLBe>d$sO0SQ>2cDmis-d4*srDOoxR-|<@>PCog|^d?-&&E4b^h1i zTIug#3V@##(YWblP2-~D5<01A|A20!llMzNB#kVv`OJOlHZQk`R4doDkm57uL&OJ% z!T6-^w0RKq)m!?d7AjBlE(-=p0BrlE7Am;+9t#GEne_=x`LcIgNv<=XE>k`&(oZNIG- zy%{1q{*dd2dU&-z^GkOoH9bY!r*8hskZ!~9Iu@9YG3l?}v-hbeDfuH2)m*j{Tf~fY z`S+XlkM*Oo>l=EG-}L|~FaO5fG;m0!{A)fR5<_fCS|ufBLrwT6ZiX%h*du3+sXxEp zDdwAj;f-$Ur5=1YJIeofzi@Y`JhReztZA-WLga7TKO70W0wPelSspCkA~Y~Dp5pAxR|4D7$H=mi1byK6Pl)SI3ZM`i0mwj zfTmdkgh~{Vn`sfyG}A^9LM4i5x!fY4Y1|kgRHBIZ?=1qFrV|L2D56Uc&@>Gr384~2 zB(Js{&@|hDP>CWUb1VXyrfn1U!cAgIf< zig23?33Zrq7f|CKOd@m@7DXWHB+ds53y=K3ruZ!Ik^`|qrAi>{z^ zs{D}ffY83O86mdp^Q$VuwV}q2qh$w?1N$~cOp&%a{sJANLXj;YOE_X2ruzZi29Z)AZuQ!^c@!?8xv@=L*r2L;|u%MDDxiT0>a(Vn-x$#g1hD zjUycokt0=ca)giAk;r#A!ZLECs!5stH&4>!p|;(#bj%_7xs7{j-9kR6u?1xCFTRvK z={zz#-Q^?e$&q`9Bmx8e@p?%glr&~>XsBiaYgb;&j}yXO4^u~-cd$R$Y&$Ak z?ILTMs>A0whZIC$c2)Rz7VSAUT-9GsgXhe#$A#nW@&HBD)K`b;lWme24rL}@NOTMl zLBvFQ9zAcJ>3Kw%W*kS(AZtkyl?5cWi$Z2umxi=Nd z+Q)^fT%5ON#W*@EQuv;_@8U%!kB&^G__4gHCY*Bl+$L--t!#uV+(hBk4hp7ueAu-G zsqx{Ov3eE{a%|Vc35CC`eA^vgO`cm3|BvG`v;SrN4k<(PO%bSZCy=WkGh-%%E6bG@ z81%&q4H9Ph1Zo+KDbfs&6;yjRngJqoXw!UR*lpBt2|b$kSCjE7a-;OT>5_KYjs6_|r_4w3P_0=!F+7DQ2=nX0H7+jyrnW9T zZA?xEx|(C`fET~kPAfE@7I`o=o9e<-_idSNuQ-%q&T`_Up7tId)Zu7?98>DADeQ1m zDd~{^wv=q4bdB?YG)n|qs?OW+&LQ}i`~)zlhB8>aKISbYFO#Us%`;%nRb?2^N@eQg zKg?U-57P#K-w&tCJHD{34nOM&gQ}UW-w(%XF&hf@2kSSzT_Zuz6x%i8PZ=O*h5?b! z0t}{pv3DSLFr<$!=u?xE!V#C}TkR)>SBywgZ@?um@wiPRTkN zhx$R+3A65(#L@L^kmEx$xi=i~AN+Orj8Ydx#=RumN zYV<2Fg*T9z?JJ7C;i$kH=Aes(DVs$cJuqDH@M9-M*HwEY=TDInpffTVIEwb42v znZA%n(k~X0blw3HNNry!;NYm_9ihpTY0nTxbVHCsYIN}fs1b^6XbOlpG$7*e(nZ}Y zUPeTjjX|PDfBSMc1F5OJikfKAUQt=395hid>$-`fW>X=DyBZvjnl;H{4h~A5gC-wl z*IMGpZZ71gd>$N-+OAUI2L~n3K@%BMwwXARFBft&Yyk(P_5>>6;CSRYX!2vKwh>3J zr;uaXTi}4y#^bKN;&GS8;{f7l+({fQuNHE&?E(j+X3aj-WeYes9^l}?faXSK`sc(E z*;>fa`2{#2HJ#s5PfHh&a6s~o97ZJVA&*9s*9%G3^z(=WQq%S+HB12q2PE%EHE}F1 zBaZl+g&f-lfCEx{+T6WYK*JPb~JJHyi>^0a11ygwH>5@gX59spxLjfI)OM+?-p`Q z8xIahZ3p?wUh(*g)`jN%rm=xIdfzMLXqyBMNKM0a)Gh@a9FIH)&3Vl9(}*LT3v$Q^ zF!^+kMgSDqp`?I_g90M%X>>ba+Rq`P=#C&!qrc`{I0LB-N&yE4CGSitaV-8Nab$KD za%}$D((Qof;IH%$apFh@<9%ActOdE=7ekM$Y%ur#*TYNrk3iuGi#b3%EEq z`HIo~k*T_sxN;vUmz^6-n+Ja&wZXY(ui)IH!J%6!)3}g0T0SY{XuAU(klHh-fP>=# zj>?SJ;9}C^PtSO#h8&td`YZ1DXgQVk;x`pbz2*C7%VkE57VaXKc2sg_Qs+o z8%-{D^@pX!c)_eJCsukX^|z7zQ0Qg<{=a#vXq8*pD^Q4uAO3W*c`9u@+DyAj;YS3_ zpr^>-bB}m;)JAG8G$+eHIa%|ISKG;Y^aXp19U&^(O`P{l#SKa1OIk#(SmS-_rg5~u z_davJqJu%tkf`UMu@H_L%=*838~as-XnC-Lf4tk@^q4oMU!__lB6d)JN&%C`8OmO@ z(wiPrzktLa5UrF#ZkDg~ZgXJ1u^Z6fa-~4$0*bqrP2FCn^=sBD?_zSv>{>-ST0MgC zALw_}QRHU&wYZt9JvZb6VrD(zJyJ&XLsZA%X2Wc_(j9tBeVJ)~(yNbYv@D7BvX(NC zn-x!br#omwih6sv-{_K(<DX-eyGJkRJ?hox;SGRS zguBKQO};pW;`Imj45yWdW-=mw9T%2zPpUcdIZi|ViCOOl{Z3Ke0YeW9HX!^}yq4qs z3;(o%Z5_%5~pZk!S`dzE*g zi#D;nReJ<8(0_1gHKmN${(`s31;VWOhj&{U8lQ^x?yPm%zo?Y|z*0>|D#v#6x{?`8 z<=DLWq&JlIcRuU1l9GBdp}(v02*$l*Ome-~>~uY`12^oG=5O$(ILYH)F)t1X9XxOM z<6-BC9d_}5!3K|h-|fjA+}n`OTmN{aYY*tzz~Z6d#{GJvIQ106?1O>xM}_wtECo0l zP)PvHx{Y4Di=%miUK-*M!pwZhYjeqZiP`g#H?_asl>f{8t|5GkpWfuH4;|bh3r(6L z7%8IE{0@6pKX;4Q++RES1Y6Vi%U-kFO9pTCtIdj+z1jn#U(q#&l=Uw|wo97lo!?2X z#CC+@=DZ$nU)JE~9~^@88XE$n90GfwA&5S0i!(O0A$X&LLLdbi0szd4S11HH;ECA!hk&-Xv#SDQ^roD*CncIay|Z{w7P8J&XX6dy$&io4t$O z@y(y!PeaxevwN#YKT#(d^Qfw*ZI?TYA7HsNM(x<&RKD(YmgT;&q}hJ?EB|0K{0;Bk z%G4Xra+4#@Inq|-twPpQV#!SJ8{S+uc@eqW{w7^g;1>Vf!UP zdZ;(bjDF9%w>(2XD~VWXj6h?yzUM6u)FZt%P>+gZzPla_qIy)7s|Ok)c*2h_tKX*v z>q=30+)uqzonUl!e+Mf%ZW^GnonB>3>!Yk%FIb~nLJEB1RASz>lLDXH9B_Db_1+GH znn7be@D6n-B7V~cUb$PP;nwi05p5RDX9n%u-z@mZ>x{(*+Av2Buxan$zSKThzWHPC z{>sS4!Z53v)+RbgVl?9ujnSI-QIk!!CY>(MHtycB)j$0=6#};LGl~`1f*oC*gH_Z1 z8O5sRbc$8g=hOI^*^l%Yyb8*LRGOEA&EA9_9b zRA2eH5c32zq#ZzswU28%1_|p)8{@i}zK1$jk3HQg&5Wkf{x0R{!OQlSFmb=cFa5^b zFwo5n8Ah+6l$Fx&NF8T?y+O>E^zzj~bJkt3Lv9uiEIriO5oAZsclRqTALM3+5@+ln za5fimCXTn$c4b8fzzMn8RY9D43OFg}HyjMk)G*>~Iu@K)6>@g`8&1eA=fLB6(6Lc) zDCf5w4^G_p`3p`4r~Gn-`jz`PoRFL8lgQ7CAg4!qbL%W9sn7fhtQ@$5b_%TAAZW!?q%4T~Te45tW>_MDQ)e)VW%z>2sB)@TiA|(zGbuJx|_i*&5{A2}G-;{X5v delta 69726 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

dns9k=7&f@zP^`ZucFJ8hl25Zpu%!=<& zkd!;EV>I#A$Dk|0WOj*}won&n$8OWLgZA+0cwg&|rzbgRt+ z(e_bd8)@$Ok@Heo%aj+|Aj^=v(A#)7J!fPi>;p&w3xRCAhd|VLtqfcS5LD7^{V`Rh zwANCPR(xRx8i#4aryfC=hYq0P)T7#Qp_d%FRnQ2MvF~unZFW8@$8zn|Asow3E8W(n3dL6D7EPC)QBpMjXA??3!I` z9eSO#hj{VjN%O~7X;3dqPwhU`HcLs;?0B2^>t#@%E_+WZpo41a5E?D`SBtnp%W6qZ z@{o{UEmm=KNS-lxP*;j#6oms=Jg6^LigFAHhe}eD^WO~#AMf8)j)zh{mGh;dz~hIC ziaGgi(6B(I6j$v0X=;1l=7)uUgUshy2?(vQ7Ouy&Q{4`PbnJnIBK(s`xu3uX?n`%ui3{s`-n;U(q9-5PJAmj#c;rl2<()p(fz{xhj5NIz90oCJ7cuON#B%)!49lyO2Q_LAf^F2iAlrh;pbqRNII zE6zQv*N%B5xkK=OV)Ln=>v(5Z-a^))vTuVHAKgK!-q)|3(o=kV=DEMdaW?cjcukYj+3_Gp62g=N@*4>@`Z-_mH)s^gmjOm-f;FU7@P2`AuZwR>vi`<1*~_ z)WbFpAVXhMnG)RRxi{0(Frh016hIF06>o8Hrh+}bOGh1n!>-Rr)X>*dW(Q3Nx!1Sc@yv`(J)k#dqKyyOfhC#c%>S^@|Qmh*Hxv+NIz6{azd*X~%DE zKJ}E^&4H<8tzPDT$wPC-z(cqUduU*b%|m3k<`S4%s5ph+S!RHQm~CKcp)%*6w9Ei8 zE62Hm$!y6|TAm1r%YC<&>7p<9xaCPBM(G#3l!e(^3<%^QW|x4(HriY}!F|DDcwQhf z2ruVXO(YPtNG*id00PT{&J-dVBs&O^^>^%aX9p`Lxhtso$>9M-`lT^F>ETbd^FR2#u=is7U*5vDZ$&b+=pYesXtqTHEr1~P6~D%tT{~Wbn#Qc#mBtmcXi3W(HV+B2JL`6)m7*MF;b4r;6Np18%F!`s zF(7H`Pb3bdD2M+y%K=HV1sqCIj&9+Aq-i^eIFzCsnKvy4B#qNZ97<7+KH-3*=>dmQ zlq2_divdZ~G?zG(q8tOl0ZFqP97<7+{2q$|Nz-{UaVSMOhJ*u>rv4P-P>OOC-m(~w zG+V%-6y>l@N{=DI(KgTRbU>kip>ITyuyN)S36a1g#E$79(h|fkg5+5Vmeln5_NB~e zHqHLSYNlfT%L=_zZ_8UGO&xCYc!Tb$LvK2fLeJcEsyic@f6*!!dPxR`X*GV<9?#b; zODnoVi2M~^rao1Bnmal+N{(8=0e?Y5liL_;9$4`R8(8k3Q$$+rJxiX%)$ph28Wr-} z=}T&q7O$~J#c zo%6`g5!@ zf2?h6|3%4nOL~i>KbEvp(vu~x}1c`yPA3bTU$-SUR?dOs;$XbxhS0f-cL_uQ|?S)&-G3Syw zI~9bglrsH`$(#YAS){_%`y(-}>pZu?LAN!V&ZACI!pqmga~Elx=`SY#F@0%^n|HWt z6K^B!ZMbz#K04V!z_ecAI<_Exft&rDcH*&d8=2@&_{)s5uY`BMN|sv^|BvfY=8&}` zj!dHY7743ymXN6cGjo=>^|cBM9>gNX2(x?%c>+UPA)&XYYh3@z&E;Roo40bYM$@~@ zUBv5ybr-o=2eZFvyvS{vleyN8a~+cUQ(obTSo0;Jhf}lTB6snqk__3D;=r!Crw^^P zP;g6*3{&WTlG|aZLeeGwJy-J_rCZ{ElV6=I(Gi%H$Zc=4NM{S$&z?9Q0i3?n^kJn%y_K7mj$eXl7j%f7C8K7rsct_oH-s z-E@_EdYlGG({&YL_^(GXwzLBSRO6JZG2YxH7;V=P22FmZ_d3Gpej|#p`+8u2YI?4y z#u!ry+d(sh+4^n5$owsg@updr^8DZz-*L}PI4CmCt?trzDN>`E+r!q-++hY+6H?!s zVWj4u{x(HH3z$Qz!*?X{r9PfA{gwI3I;6|%+?nPqxgOl!`TH4P|cQ(Y7BNt z1%s9!X7Dw_$bJ~bsDA?(pxRI=?dOz|)`gZbCiyO5l=ek2n)U(%RNH|f80?P<1}%T? zXz+HpEgwZ8+F~9-fNI?lfnax3AbQD+=23)E{y2)!nFI!?X3NnOu@MY*2QWC$XmMng zPauqr7!ASU@nj+}Ks7ywdrRZ~YIQ8s*R5)_VdRR>W?yEBo`7!Ze$dr>1<$tYU3kuPFZGc2D*dG-PTKAjgHp0j!qZpl+0s~ajbT9Rn2nPG3f-_<$4$cs&z^PgPj5l9z-S)M(?)?BXvj= zWB1L#0M$Arg27IyV9;vLY+X$l#Y4jwI_unq3Zck$od^(nrc$Aq1T^>q0?O8gfoRgX z3&wzIow9X5r)*WH&>gW!ZXk@(c*SsV%s%hL(W%cH<`q499!Z6!X(RQ*Tm*}q11xq9 z-5{BU`v|LLqGH*lLEHVX2UP2v2nIW+fs>R?Kg2(ypKsyI^3yLmJ@{5^?fg{R`{1)8SgQ z%eK_<=_>%LD>)=OiUbtw+U7kF3yM#9o9Rp&;1TlV!^Ijb%ygx>;B+#OHg5630WNthgWXU$vXZHRh1NcwaG_pY!sj zeZWhud)1?DnnBuQUjMxJZsKXnWq$RX*Jk?v;AOzs1kS06gJXObfUiaMzlW~;Tj^VID|UGfJ!T*lv+`x{ z!KBpsINX$&ZFkaU=GYDNLGFuR@lHvrV+DupY@`h6X45O)IdQZ#HBcAg-~oz*)8-eX zk;>9Y9q-!4@}Da5&+7cWk|!MO^5Rx+Ed48pAqQ+E|25l4@A!o$Ke3hS{M4ALX6kqP zesr2`sQyW@WYAppvLou%MACY|hJq<*s4GsAI)D*>+D=-xGl_;^TlD+)HjSuR_3)mt zH$8+HM&7i);id5OvW6n(;TV-tNX|vR_38IEeem&(Co4DdW+QRep>#5F@1s)Xu0#)9 zz#*X?C1(BuM<-o@ZrTUE37PX z84f&&pjyrjv|*(!N4)$8y_@L@E;i1a-VO&GX6KvU9Z6}W14Y#|jRcEgy*isRO2=vP zj(PMI@7P1mKf9)89@Rs?o${c4LeR0tYmImB<@@Z@P2F4GqIh@5Bj)KDv8ihpz2G=h zWH;?Mz2!A0Gw;c8LFwB57wR1lcu&9gc(?iBJ}J%(F`I1Y&!r80DL{0>mtZi1Z+l%1 zuGTJkeSDla%>G#dmZSJg~_>R{fn_7@DZK6Z*=FZ^UgLy99nB3Stbb+FUDLXD*_NX)8fDBkhP+WM z!F6O8_0ufRwdR_MN!wx(S(l2PEPx>zaDIw{^|83Tk0)ZHbZ6jarv5gOz}tDVgKWN`1t-a8Hq<8M05nK$uXhEOLf6hvW=LP0t5P+^j> z#Ck>xdSi(hv13yQ#!wl>P#tVmGENvR8(>j9(d^`CQ-rqx*UU?$+dqBAenw%FgPHdE ziOlTHWD9%+lhk+Wb@i#L>sUgbY<3epbA~=+B{VJ1u=#;mHdTqrq4CRU*e8!qF{gTo zpVXF)j=CE#W}laMAXJZ%?(w4@b+Zm!4`!lzG}NjE>LOSo4<$z?Ry&1_tDg<=;uZYMzi- z5dTIfN>`tMVB`{*Zl6fVilla{L)iWu6C)iU^B*DT)|UOD(E*qVf#bk)X7E!Kd+61+ zAKn<>zaM5vN{694sFtXx9gfr(+6I;3N;{6WiVi2TPs_^!;HkXgDN>^<(g09kjdE?r zFyK6r#>j5E(iB|R*bY~3R+k9XSoJ^Q2&jDt#K7u*$37DW;%whzSazW1*fr)#zVACbQlwTVvG>44n6+Y&31sSoX(iWJ}D7}X&w z-_muDti9;5Px){$vy+RD@ZvRoIjkv8xnTWDSPwzd(340zz%tD}iM!(DZbKT63x4*! z#6tQR!u6`QC~A?i+5u6UzkXOPvu|2Uwfi8VlX5}r?a&D+s}n$0CpAYf*n?X3Rn%qo z*;*oHbtO^fuN+p#?5wV~o+kzyr*X;!T|b99NLh6Nvg)X%Y!$!12~}*N$0cU)x8&K9 z=tR1<|IzUWiOOO~C3E*aLN%NjR_Rb~xcw$MXvOLA4XGy+^gSf8VR9TMG;Sv^U$*$5 P@9f;32zGAwySMxwZN0|O diff --git a/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_connector.obj b/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_connector.obj index ebc3b228e..9c7db7572 100644 --- a/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_connector.obj +++ b/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_connector.obj @@ -28,12 +28,12 @@ f 3/1 7/5 8/9 4/10 f 2/11 6/12 5/6 1/4 f 1/4 5/6 7/5 3/1 g wire -v -0.250000 -0.001000 -0.124000 -v -0.250000 0.031250 -0.124000 +v -0.250000 -0.001000 -0.125100 +v -0.250000 0.031250 -0.125100 v -0.250000 -0.001000 -0.312500 v -0.250000 0.031250 -0.312500 -v 0.250000 -0.001000 -0.124000 -v 0.250000 0.031250 -0.124000 +v 0.250000 -0.001000 -0.125100 +v 0.250000 0.031250 -0.125100 v 0.250000 -0.001000 -0.312500 v 0.250000 0.031250 -0.312500 vt 0.000000 0.593750 diff --git a/integration/src/main/resources/assets/projectred_integration/textures/block/io_bundled_bus.png b/integration/src/main/resources/assets/projectred_integration/textures/block/io_bundled_bus.png new file mode 100644 index 0000000000000000000000000000000000000000..fd4b6891e73187bcd56eead7ac59b81e60b02946 GIT binary patch literal 4513 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 literal 0 HcmV?d00001 From 9f6fadfca049a8b5ebc6867aa16c6cfb2728ba08 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Thu, 15 Aug 2024 10:59:44 -0400 Subject: [PATCH 15/31] feat: add analog IO type for fabricated gates (cherry picked from commit 1c8cda6097efd9bbc136e82e3c82911f6f5c9044) --- .../af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 | 4 +- .../projectred_fabrication/lang/en_us.json | 19 ++- .../data/FabricationLanguageProvider.java | 19 ++- .../editor/tools/SimpleInteractionZone.java | 15 +- .../fabrication/engine/ICInterfaceType.java | 1 + .../engine/ICSimulationContainer.java | 16 -- .../fabrication/engine/ICTileType.java | 1 + .../fabrication/engine/InterfaceSpec.java | 23 ++- .../engine/gates/AnalogIOGateTile.java | 159 ++++++++++++++++++ .../engine/gates/BundledBusIOGateTile.java | 4 +- .../engine/gates/BundledColorIOGateTile.java | 8 +- .../engine/gates/ICGateTileType.java | 1 + .../engine/gates/RedstoneIOGateTile.java | 5 +- .../engine/gates/SingleBitIOGateTile.java | 9 +- .../fabrication/gui/GatePlacerToolTab.java | 1 + .../fabrication/init/FabricationUnlocal.java | 19 ++- .../item/BaseSiliconWaferItem.java | 2 +- .../fabrication/part/FabricatedGatePart.java | 45 +++-- .../fabrication/tile/PackagingTableTile.java | 3 +- .../client/GateComponentModels.java | 39 +++++ .../integration/client/GateModelRenderer.java | 41 +++++ .../obj/io_potentiometer.blend | Bin 0 -> 633940 bytes .../obj/io_potentiometer.obj | 87 ++++++++++ .../textures/block/io_potentiometer.png | Bin 0 -> 3578 bytes .../textures/block/surface/io_analog-0.png | Bin 0 -> 1805 bytes 25 files changed, 456 insertions(+), 65 deletions(-) create mode 100644 fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/AnalogIOGateTile.java create mode 100644 integration/src/main/resources/assets/projectred_integration/obj/io_potentiometer.blend create mode 100644 integration/src/main/resources/assets/projectred_integration/obj/io_potentiometer.obj create mode 100644 integration/src/main/resources/assets/projectred_integration/textures/block/io_potentiometer.png create mode 100644 integration/src/main/resources/assets/projectred_integration/textures/block/surface/io_analog-0.png diff --git a/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 b/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 index e91661c7c..f7ff99d07 100644 --- a/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 +++ b/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 @@ -1,2 +1,2 @@ -// 1.19.2 2025-01-21T11:17:37.203854 ProjectRed-Fabrication Languages: en_us -791a9f4360406346bf48eb394d3c20b798551076 assets/projectred_fabrication/lang/en_us.json +// 1.19.2 2025-01-21T11:21:34.684175 ProjectRed-Fabrication Languages: en_us +2d7d38de5e785dd19cfb12c6cc8885486ac71c1f assets/projectred_fabrication/lang/en_us.json diff --git a/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json b/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json index c6491c6c3..d48bc9c08 100644 --- a/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json +++ b/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json @@ -61,19 +61,27 @@ "projectred_fabrication.f.unit.warnings": "%d warnings", "projectred_fabrication.interact.default_state": "Default state", "projectred_fabrication.interact.delay": "Delay", + "projectred_fabrication.interact.io_analog_input": "Analog input", + "projectred_fabrication.interact.io_analog_level": "Analog level", + "projectred_fabrication.interact.io_analog_output": "Analog output", + "projectred_fabrication.interact.io_bundled_color": "Bundled colour", + "projectred_fabrication.interact.io_bundled_input": "Bundled input mask", + "projectred_fabrication.interact.io_bundled_output": "Bundled output mask", "projectred_fabrication.interact.io_bus_toggle": "Use Bundled Color IO gates to toggle bits", + "projectred_fabrication.interact.io_colored_input": "%s bundled input", + "projectred_fabrication.interact.io_colored_output": "%s bundled output", "projectred_fabrication.interact.io_direction": "IO direction", "projectred_fabrication.interact.io_direction.input": "Input", "projectred_fabrication.interact.io_direction.output": "Output", - "projectred_fabrication.interact.io_signal_colour": "Signal colour", + "projectred_fabrication.interact.io_level_high": "High", + "projectred_fabrication.interact.io_level_low": "Low", + "projectred_fabrication.interact.io_rs_input": "Redstone input", + "projectred_fabrication.interact.io_rs_output": "Redstone output", "projectred_fabrication.interact.reflect": "Reflect", "projectred_fabrication.interact.rotate": "Rotate", "projectred_fabrication.interact.side_disabled": "Side disabled", "projectred_fabrication.interact.side_enabled": "Side enabled", - "projectred_fabrication.interact.sim_input": "Simulation input", - "projectred_fabrication.interact.sim_input_mask": "Simulation input mask", - "projectred_fabrication.interact.sim_output": "Simulation output", - "projectred_fabrication.interact.sim_output_mask": "Simulation output mask", + "projectred_fabrication.interface.analog": "Analog", "projectred_fabrication.interface.bundled": "Bundled", "projectred_fabrication.interface.nc": "Not connected", "projectred_fabrication.interface.redstone": "Redstone", @@ -105,6 +113,7 @@ "projectred_fabrication.tilegroup.memory": "Memory", "projectred_fabrication.tilegroup.redwire": "Redwire", "projectred_fabrication.tilegroup.timing": "Timing", + "projectred_fabrication.tiles.analog_io_gate": "Analog Redstone IO Gate", "projectred_fabrication.tiles.bundled_bus_io_gate": "Bundled Bus IO Gate", "projectred_fabrication.tiles.bundled_color_io_gate": "Bundled Color IO Gate", "projectred_fabrication.tiles.counter.decr": "Decrement", diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java index 4b6f3b679..b54a3aaaa 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java @@ -55,15 +55,22 @@ protected void addTranslations() { add(UL_ROTATE, "Rotate"); add(UL_REFLECT, "Reflect"); - add(UL_SIM_INPUT, "Simulation input"); - add(UL_SIM_OUTPUT, "Simulation output"); - add(UL_SIM_INPUT_MASK, "Simulation input mask"); - add(UL_SIM_OUTPUT_MASK, "Simulation output mask"); + add(UL_IO_RS_INPUT, "Redstone input"); + add(UL_IO_RS_OUTPUT, "Redstone output"); + add(UL_IO_COLORED_INPUT, "%s bundled input"); + add(UL_IO_COLORED_OUTPUT, "%s bundled output"); + add(UL_IO_BUNDLED_INPUT, "Bundled input mask"); + add(UL_IO_BUNDLED_OUTPUT, "Bundled output mask"); + add(UL_IO_ANALOG_INPUT, "Analog input"); + add(UL_IO_ANALOG_OUTPUT, "Analog output"); + add(UL_IO_LEVEL_HIGH, "High"); + add(UL_IO_LEVEL_LOW, "Low"); add(UL_IO_BUS_TOGGLE, "Use Bundled Color IO gates to toggle bits"); add(UL_IO_DIRECTION, "IO direction"); add(UL_IO_DIR_INPUT, "Input"); add(UL_IO_DIR_OUTPUT, "Output"); - add(UL_SIGNAL_COLOUR, "Signal colour"); + add(UL_IO_BUNDLED_COLOUR, "Bundled colour"); + add(UL_IO_ANALOG_LEVEL, "Analog level"); add(UL_SIDE_ENABLED, "Side enabled"); add(UL_SIDE_DISABLED, "Side disabled"); add(UL_TIME_DELAY, "Delay"); @@ -174,6 +181,7 @@ protected void addTranslations() { add(UL_REDSTONE_IO_GATE_TILE, "Redstone IO Gate"); add(UL_BUNDLED_COLOR_IO_GATE_TILE, "Bundled Color IO Gate"); add(UL_BUNDLED_BUS_IO_GATE_TILE, "Bundled Bus IO Gate"); + add(UL_ANALOG_IO_GATE_TILE, "Analog Redstone IO Gate"); add(UL_TIMER_INTERVAL, "Interval"); add(UL_COUNTER_VALUE, "Value"); add(UL_COUNTER_MAX, "Max"); @@ -190,6 +198,7 @@ protected void addTranslations() { add(UL_INTERFACE_NC, "Not connected"); add(UL_INTERFACE_REDSTONE, "Redstone"); add(UL_INTERFACE_BUNDLED, "Bundled"); + add(UL_INTERFACE_ANALOG, "Analog"); add(UL_UNIT_WARNINGS, "%d warnings"); add(UL_UNIT_ERRORS, "%d errors"); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/editor/tools/SimpleInteractionZone.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/editor/tools/SimpleInteractionZone.java index a088980e5..09dc10734 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/editor/tools/SimpleInteractionZone.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/editor/tools/SimpleInteractionZone.java @@ -12,7 +12,6 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; -import javax.annotation.Nullable; import java.util.List; import java.util.function.Consumer; import java.util.function.Supplier; @@ -26,7 +25,7 @@ public class SimpleInteractionZone implements InteractionZone { private final int highlightColor; private final int boundingBoxColor; private final double boundingBoxLineWidth; - @Nullable private final Component text; + private final Supplier textSupplier; private SimpleInteractionZone(Builder builder) { this.boundsSupplier = builder.boundsSupplier; @@ -36,7 +35,7 @@ private SimpleInteractionZone(Builder builder) { this.highlightColor = builder.highlightColor; this.boundingBoxColor = builder.boundingBoxColor; this.boundingBoxLineWidth = builder.boundingBoxLineWidth; - this.text = builder.text; + this.textSupplier = builder.textSupplier; } @Override @@ -86,6 +85,7 @@ public void renderZone(CCRenderState ccrs, MultiBufferSource getter, PoseStack p ccrs.baseColour = boundingBoxColor; RenderUtils.bufferCuboidOutline(ccrs.getConsumer(), bounds, 1, 1, 1, 1); + var text = textSupplier.get(); if (text != null) { ICRenderTypes.renderCenteredTextTopOfCuboid(text, bounds, poseStack, getter); } @@ -100,7 +100,7 @@ public static class Builder { private int highlightColor = EnumColour.LIGHT_BLUE.rgba(); private int boundingBoxColor = EnumColour.WHITE.rgba(); private double boundingBoxLineWidth = 4.0; - @Nullable private Component text; + private Supplier textSupplier = () -> null; public Builder bounds(Supplier boundsSupplier) { this.boundsSupplier = boundsSupplier; @@ -152,8 +152,13 @@ public Builder boundingBoxLineWidth(double width) { return this; } + public Builder text(Supplier textSupplier) { + this.textSupplier = textSupplier; + return this; + } + public Builder text(Component text) { - this.text = text; + this.textSupplier = () -> text; return this; } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICInterfaceType.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICInterfaceType.java index c6e16ecbb..74a506a50 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICInterfaceType.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICInterfaceType.java @@ -6,6 +6,7 @@ public enum ICInterfaceType { NC(UL_INTERFACE_NC), REDSTONE(UL_INTERFACE_REDSTONE), BUNDLED(UL_INTERFACE_BUNDLED), + ANALOG(UL_INTERFACE_ANALOG), ; private final String unlocalName; diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICSimulationContainer.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICSimulationContainer.java index 23922d23f..d394ab609 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICSimulationContainer.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICSimulationContainer.java @@ -155,22 +155,6 @@ public int pullOutputs() { return changeMask; } - public int outputMask() { - int mask = 0; - for (int r = 0; r < 4; r++) { - if (outputs[r] != 0) mask |= 1 << r; - } - return mask; - } - - public int inputMask() { - int mask = 0; - for (int r = 0; r < 4; r++) { - if (inputs[r] != 0) mask |= 1 << r; - } - return mask; - } - public byte pullRegisterValue(int regId) { return simulation.getRegByteVal(regId); } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICTileType.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICTileType.java index abd129ef7..81af94baf 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICTileType.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICTileType.java @@ -22,6 +22,7 @@ public enum ICTileType { REDSTONE_IO_GATE (ID_OFFSET_IOGATE, UL_REDSTONE_IO_GATE_TILE, RedstoneIOGateTile::new), BUNDLED_COLOR_IO_GATE (ID_OFFSET_IOGATE + 1, UL_BUNDLED_COLOR_IO_GATE_TILE, BundledColorIOGateTile::new), BUNDLED_BUS_IO_GATE (ID_OFFSET_IOGATE + 2, UL_BUNDLED_BUS_IO_GATE_TILE, BundledBusIOGateTile::new), + ANALOG_IO_GATE (ID_OFFSET_IOGATE + 3, UL_ANALOG_IO_GATE_TILE, AnalogIOGateTile::new), OR_GATE (ID_OFFSET_GATE, OR, ORGateTile::new), NOR_GATE (ID_OFFSET_GATE + 1, NOR, NORGateTile::new), diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/InterfaceSpec.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/InterfaceSpec.java index 210ac69ad..65e54ea58 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/InterfaceSpec.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/InterfaceSpec.java @@ -12,6 +12,7 @@ public class InterfaceSpec { private final ICInterfaceType[] sideInterfaces = new ICInterfaceType[4]; private int redstoneMask = 0; // OOOO IIII private int bundledMask = 0; // OOOO IIII + private int analogMask = 0; // OOOO IIII { Arrays.fill(sideInterfaces, ICInterfaceType.NC); @@ -24,6 +25,7 @@ public void save(CompoundTag tag) { } tag.putByte("rmask", (byte) redstoneMask); tag.putByte("bmask", (byte) bundledMask); + tag.putByte("amask", (byte) analogMask); } public void load(CompoundTag tag) { @@ -32,6 +34,7 @@ public void load(CompoundTag tag) { } redstoneMask = tag.getByte("rmask") & 0xFF; bundledMask = tag.getByte("bmask") & 0xFF; + analogMask = tag.getByte("amask") & 0xFF; } public void writeDesc(MCDataOutput packet) { @@ -40,6 +43,7 @@ public void writeDesc(MCDataOutput packet) { } packet.writeByte(bundledMask); packet.writeByte(redstoneMask); + packet.writeByte(analogMask); } public void readDesc(MCDataInput packet) { @@ -48,6 +52,7 @@ public void readDesc(MCDataInput packet) { } bundledMask = packet.readByte(); redstoneMask = packet.readByte(); + analogMask = packet.readByte(); } //endregion @@ -56,6 +61,7 @@ public void setFromIOTiles(Set ioTiles) { Arrays.fill(sideInterfaces, ICInterfaceType.NC); bundledMask = 0; redstoneMask = 0; + analogMask = 0; for (IIOConnectionTile t : ioTiles) { int side = t.getIOSide(); @@ -67,6 +73,7 @@ public void setFromIOTiles(Set ioTiles) { switch (type) { case REDSTONE -> redstoneMask |= dir << side; case BUNDLED -> bundledMask |= dir << side; + case ANALOG -> analogMask |= dir << side; } } } @@ -76,19 +83,19 @@ public ICInterfaceType getInterfaceType(int side) { } public int getInputMask() { - return (redstoneMask | bundledMask) & 0xF; + return (redstoneMask | bundledMask | analogMask) & 0xF; } public int getOutputMask() { - return (redstoneMask | bundledMask) >> 4 & 0xF; + return (redstoneMask | bundledMask | analogMask) >> 4 & 0xF; } public boolean isInput(int side) { - return ((redstoneMask | bundledMask) & 1 << side) != 0; + return ((redstoneMask | bundledMask | analogMask) & 1 << side) != 0; } public boolean isOutput(int side) { - return ((redstoneMask | bundledMask) & 0x10 << side) != 0; + return ((redstoneMask | bundledMask | analogMask) & 0x10 << side) != 0; } public int getRedstoneInputMask() { @@ -107,6 +114,14 @@ public int getBundledOutputMask() { return bundledMask >> 4 & 0xF; } + public int getAnalogInputMask() { + return analogMask & 0xF; + } + + public int getAnalogOutputMask() { + return analogMask >> 4 & 0xF; + } + //region Utilities public void saveTo(CompoundTag tag, String key) { CompoundTag tag1 = new CompoundTag(); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/AnalogIOGateTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/AnalogIOGateTile.java new file mode 100644 index 000000000..ff4e87846 --- /dev/null +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/AnalogIOGateTile.java @@ -0,0 +1,159 @@ +package mrtjp.projectred.fabrication.engine.gates; + +import codechicken.lib.data.MCDataInput; +import codechicken.lib.data.MCDataOutput; +import codechicken.lib.vec.*; +import mrtjp.projectred.core.BundledSignalsLib; +import mrtjp.projectred.fabrication.editor.ICWorkbenchEditor; +import mrtjp.projectred.fabrication.editor.tools.InteractionZone; +import mrtjp.projectred.fabrication.editor.tools.SimpleInteractionZone; +import mrtjp.projectred.fabrication.engine.ICInterfaceType; +import mrtjp.projectred.fabrication.engine.ICSimulationContainer; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; + +import java.util.List; + +import static mrtjp.projectred.fabrication.init.FabricationUnlocal.*; + +public class AnalogIOGateTile extends SingleBitIOGateTile { + + protected static final int ANALOG_SIGNAL_PACKET = 6; + + private static final Cuboid6[] INPUT_TOGGLE_ZONE_BOUNDS = new Cuboid6[4]; + private static final Cuboid6[] DIR_ZONE_BOUNDS = new Cuboid6[4]; + private static final Cuboid6[] ANALOG_LEVEL_BOUNDS = new Cuboid6[4]; + + protected byte analogSignal = 0; + + static { + for (int r = 0; r < 4; r++) { + Transformation t = new Scale(1/16D).with(Rotation.quarterRotations[r].at(Vector3.CENTER)); + INPUT_TOGGLE_ZONE_BOUNDS[r] = new Cuboid6(1, 2, 0, 15, 3, 3).apply(t); // Toggle state of IO register + DIR_ZONE_BOUNDS[r] = new Cuboid6(6, 2, 8, 10, 4, 12).apply(t); // Toggle IO direction + ANALOG_LEVEL_BOUNDS[r] = new Cuboid6(2, 2, 8, 6, 4.5, 12).apply(t); // Toggle analog level + } + } + + public AnalogIOGateTile() { + super(ICGateTileType.ANALOG_IO); + } + + //region Save/Load + @Override + public void save(CompoundTag tag) { + super.save(tag); + tag.putByte("analog_signal", analogSignal); + } + + @Override + public void load(CompoundTag tag) { + super.load(tag); + analogSignal = tag.getByte("analog_signal"); + } + //endregion + + //region Network + @Override + public void writeDesc(MCDataOutput out) { + super.writeDesc(out); + out.writeByte(analogSignal); + } + + @Override + public void readDesc(MCDataInput in) { + super.readDesc(in); + analogSignal = in.readByte(); + } + + @Override + public void read(MCDataInput in, int key) { + switch (key) { + case ANALOG_SIGNAL_PACKET -> analogSignal = in.readByte(); + default -> super.read(in, key); + } + } + + protected void sendAnalogSignalUpdate() { + getWriteStream(ANALOG_SIGNAL_PACKET).writeByte(analogSignal); + } + //endregion + + + //region IIOConnectionTile overrides + @Override + public ICInterfaceType getInterfaceType() { + return ICInterfaceType.ANALOG; + } + //endregion + + // region SingleBitIOGateTile overrides + @Override + protected short toggleWorldInputMask(short currentMask) { + // Set entire side to be the one-hot representation of this analog signal + return (short) (1 << ioBit); + } + // endregion + + //region BaseTile overrides + @Override + public void onSimRegistersChanged(int rMask, ICSimulationContainer container) { + super.onSimRegistersChanged(rMask, container); + short ioMask = isInputIOMode() ? container.getInput(getIOSide()) : container.getOutput(getIOSide()); + byte newASig = (byte) BundledSignalsLib.mostSignificantBit(ioMask); + if (newASig != analogSignal) { + analogSignal = newASig; + sendAnalogSignalUpdate(); + } + } + + @Override + public void buildInteractionZoneList(List zones) { + super.buildInteractionZoneList(zones); + + // For toggling input to simulation + zones.add(new SimpleInteractionZone.Builder() + .bounds(() -> INPUT_TOGGLE_ZONE_BOUNDS[getRotation()]) + .leftClickAction(this::toggleWorldInput) + .tooltip(toolTip -> { + toolTip.add(Component.translatable(isInputIOMode() ? UL_IO_ANALOG_INPUT : UL_IO_ANALOG_OUTPUT) + .append(Component.literal(": " + analogSignal)) + .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); + }) + .build()); + + // For toggling input/output direction + zones.add(new SimpleInteractionZone.Builder() + .bounds(() -> DIR_ZONE_BOUNDS[getRotation()]) + .leftClickAction(this::toggleDirection) + .tooltip(toolTip -> { + toolTip.add(Component.translatable(UL_IO_DIRECTION) + .append(Component.literal(": ")) + .append(Component.translatable((isInputIOMode() ? UL_IO_DIR_INPUT : UL_IO_DIR_OUTPUT))) + .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); + }) + .build()); + + // For toggling analog level + zones.add(new SimpleInteractionZone.Builder() + .bounds(() -> ANALOG_LEVEL_BOUNDS[getRotation()]) + .leftClickAction(() -> shiftIOBit(true)) + .rightClickAction(() -> shiftIOBit(false)) + .tooltip(toolTip -> { + toolTip.add(Component.translatable(UL_IO_ANALOG_LEVEL) + .append(Component.literal(": " + ioBit)) + .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); + }) + .text(() -> Component.literal(String.valueOf(ioBit))) + .build()); + } + //endregion + + //region IGateRenderKey overrides + @Override + public int rsIO() { + //TODO find better key? + return analogSignal & 0xFF; + } + //endregion +} diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledBusIOGateTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledBusIOGateTile.java index 165ef3997..f6d1f09a8 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledBusIOGateTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledBusIOGateTile.java @@ -145,12 +145,12 @@ public void buildInteractionZoneList(List zones) { zones.add(new SimpleInteractionZone.Builder() .bounds(() -> INPUT_TOGGLE_ZONE_BOUNDS[getRotation()]) .tooltip(toolTip -> { - toolTip.add(Component.translatable(isInputIOMode() ? UL_SIM_INPUT_MASK : UL_SIM_OUTPUT_MASK) + toolTip.add(Component.translatable(isInputIOMode() ? UL_IO_BUNDLED_INPUT : UL_IO_BUNDLED_OUTPUT) .append(Component.literal(": " + "0x%04X".formatted(bundledSignal))) .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); if (isInputIOMode()) { - toolTip.add(Component.translatable(UL_IO_BUS_TOGGLE).withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); + toolTip.add(Component.translatable(UL_IO_BUS_TOGGLE).withStyle(ICWorkbenchEditor.UNIFORM_GRAY.withItalic(true))); } }) .build()); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledColorIOGateTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledColorIOGateTile.java index 52518043f..34dedeae5 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledColorIOGateTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledColorIOGateTile.java @@ -48,8 +48,10 @@ public void buildInteractionZoneList(List zones) { .bounds(() -> INPUT_TOGGLE_ZONE_BOUNDS[getRotation()]) .leftClickAction(this::toggleWorldInput) .tooltip(toolTip -> { - toolTip.add(Component.translatable(isInputIOMode() ? UL_SIM_INPUT : UL_SIM_OUTPUT) - .append(Component.literal(": " + ((getState() & 0x44) != 0 ? "0x1" : "0x0"))) + toolTip.add(Component.translatable(isInputIOMode() ? UL_IO_COLORED_INPUT : UL_IO_COLORED_OUTPUT, + Component.translatable(EnumColour.values()[ioBit & 0xFF].getUnlocalizedName())) + .append(Component.literal(": ")) + .append(Component.translatable(((getState() & 0x44) != 0 ? UL_IO_LEVEL_HIGH : UL_IO_LEVEL_LOW))) .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); }) .build()); @@ -72,7 +74,7 @@ public void buildInteractionZoneList(List zones) { .leftClickAction(() -> shiftIOBit(true)) .rightClickAction(() -> shiftIOBit(false)) .tooltip(toolTip -> { - toolTip.add(Component.translatable(UL_SIGNAL_COLOUR) + toolTip.add(Component.translatable(UL_IO_BUNDLED_COLOUR) .append(Component.literal(": ")) .append(Component.translatable(EnumColour.values()[ioBit & 0xFF].getUnlocalizedName())) .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/ICGateTileType.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/ICGateTileType.java index 06910b2c4..5032c5f89 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/ICGateTileType.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/ICGateTileType.java @@ -13,6 +13,7 @@ public enum ICGateTileType { REDSTONE_IO (ICTileType.REDSTONE_IO_GATE, GateModelRenderer.getNonPartRenderIndex(0), IO_EDGE), BUNDLED_COLOR_IO (ICTileType.BUNDLED_COLOR_IO_GATE, GateModelRenderer.getNonPartRenderIndex(1), IO_EDGE), BUNDLED_BUS_IO (ICTileType.BUNDLED_BUS_IO_GATE, GateModelRenderer.getNonPartRenderIndex(2), IO_EDGE), + ANALOG_IO (ICTileType.ANALOG_IO_GATE, GateModelRenderer.getNonPartRenderIndex(3), IO_EDGE), OR (ICTileType.OR_GATE, GateModelRenderer.getRenderIndex(GateType.OR)), NOR (ICTileType.NOR_GATE, GateModelRenderer.getRenderIndex(GateType.NOR)), diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/RedstoneIOGateTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/RedstoneIOGateTile.java index f0acda05c..c0ae21dce 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/RedstoneIOGateTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/RedstoneIOGateTile.java @@ -43,8 +43,9 @@ public void buildInteractionZoneList(List zones) { .bounds(() -> INPUT_TOGGLE_ZONE_BOUNDS[getRotation()]) .leftClickAction(this::toggleWorldInput) .tooltip(toolTip -> { - toolTip.add(Component.translatable(isInputIOMode() ? UL_SIM_INPUT : UL_SIM_OUTPUT) - .append(Component.literal(": " + ((getState() & 0x44) != 0 ? "0x1" : "0x0"))) + toolTip.add(Component.translatable(isInputIOMode() ? UL_IO_RS_INPUT : UL_IO_RS_OUTPUT) + .append(Component.literal(": ") + .append(Component.translatable(((getState() & 0x44) != 0 ? UL_IO_LEVEL_HIGH : UL_IO_LEVEL_LOW)))) .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); }) .build()); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/SingleBitIOGateTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/SingleBitIOGateTile.java index 950274c42..76ba7b171 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/SingleBitIOGateTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/SingleBitIOGateTile.java @@ -16,7 +16,7 @@ public abstract class SingleBitIOGateTile extends RedstoneGateTile implements IIOConnectionTile { - public static final int IO_BIT_PACKET = 6; + public static final int IO_BIT_PACKET = 7; protected byte ioBit = 0; private int regId = REG_ZERO; @@ -72,7 +72,12 @@ protected void sendIOBitUpdate() { //endregion protected void toggleWorldInput() { - getEditor().getStateMachine().onInputRegistersChanged(getIOSide(), i -> (short) (i ^ (1<< ioBit))); + getEditor().getStateMachine().onInputRegistersChanged(getIOSide(), this::toggleWorldInputMask); + } + + protected short toggleWorldInputMask(short currentMask) { + // Default implementation just toggles the corresponding bit + return (short) (currentMask ^ (1 << ioBit)); } protected void shiftIOBit(boolean up) { diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java index 2c5851f54..437c5e702 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java @@ -72,6 +72,7 @@ private void construct() { addGateButton(ICGateTileType.REDSTONE_IO); addGateButton(ICGateTileType.BUNDLED_COLOR_IO); addGateButton(ICGateTileType.BUNDLED_BUS_IO); + addGateButton(ICGateTileType.ANALOG_IO); addGroup(UL_TILEGROUP_BASIC); addGateButton(ICGateTileType.OR); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java index 2c8cddff5..deadab4f7 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java @@ -23,15 +23,22 @@ public class FabricationUnlocal { // Tile interactions public static final String UL_ROTATE = PREFIX + "interact.rotate"; public static final String UL_REFLECT = PREFIX + "interact.reflect"; - public static final String UL_SIM_INPUT = PREFIX + "interact.sim_input"; - public static final String UL_SIM_OUTPUT = PREFIX + "interact.sim_output"; - public static final String UL_SIM_INPUT_MASK = PREFIX + "interact.sim_input_mask"; - public static final String UL_SIM_OUTPUT_MASK = PREFIX + "interact.sim_output_mask"; + public static final String UL_IO_RS_INPUT = PREFIX + "interact.io_rs_input"; + public static final String UL_IO_RS_OUTPUT = PREFIX + "interact.io_rs_output"; + public static final String UL_IO_COLORED_INPUT = PREFIX + "interact.io_colored_input"; + public static final String UL_IO_COLORED_OUTPUT = PREFIX + "interact.io_colored_output"; + public static final String UL_IO_BUNDLED_INPUT = PREFIX + "interact.io_bundled_input"; + public static final String UL_IO_BUNDLED_OUTPUT = PREFIX + "interact.io_bundled_output"; + public static final String UL_IO_ANALOG_INPUT = PREFIX + "interact.io_analog_input"; + public static final String UL_IO_ANALOG_OUTPUT = PREFIX + "interact.io_analog_output"; + public static final String UL_IO_LEVEL_HIGH = PREFIX + "interact.io_level_high"; + public static final String UL_IO_LEVEL_LOW = PREFIX + "interact.io_level_low"; public static final String UL_IO_BUS_TOGGLE = PREFIX + "interact.io_bus_toggle"; public static final String UL_IO_DIRECTION = PREFIX + "interact.io_direction"; public static final String UL_IO_DIR_INPUT = PREFIX + "interact.io_direction.input"; public static final String UL_IO_DIR_OUTPUT = PREFIX + "interact.io_direction.output"; - public static final String UL_SIGNAL_COLOUR = PREFIX + "interact.io_signal_colour"; + public static final String UL_IO_BUNDLED_COLOUR = PREFIX + "interact.io_bundled_color"; + public static final String UL_IO_ANALOG_LEVEL = PREFIX + "interact.io_analog_level"; public static final String UL_SIDE_ENABLED = PREFIX + "interact.side_enabled"; public static final String UL_SIDE_DISABLED = PREFIX + "interact.side_disabled"; public static final String UL_TIME_DELAY = PREFIX + "interact.delay"; @@ -128,6 +135,7 @@ public class FabricationUnlocal { public static final String UL_REDSTONE_IO_GATE_TILE = PREFIX + "tiles.redstone_io_gate"; public static final String UL_BUNDLED_COLOR_IO_GATE_TILE = PREFIX + "tiles.bundled_color_io_gate"; public static final String UL_BUNDLED_BUS_IO_GATE_TILE = PREFIX + "tiles.bundled_bus_io_gate"; + public static final String UL_ANALOG_IO_GATE_TILE = PREFIX + "tiles.analog_io_gate"; public static final String UL_TIMER_INTERVAL = PREFIX + "tiles.timer.interval"; public static final String UL_COUNTER_VALUE = PREFIX + "tiles.counter.value"; public static final String UL_COUNTER_MAX = PREFIX + "tiles.counter.max"; @@ -166,6 +174,7 @@ public class FabricationUnlocal { public static final String UL_INTERFACE_NC = PREFIX + "interface.nc"; public static final String UL_INTERFACE_REDSTONE = PREFIX + "interface.redstone"; public static final String UL_INTERFACE_BUNDLED = PREFIX + "interface.bundled"; + public static final String UL_INTERFACE_ANALOG = PREFIX + "interface.analog"; // Numbers and measurements //TODO drop this formattable ones and just do it in code public static final String UL_UNIT_WARNINGS = PREFIX + "f.unit.warnings"; diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/BaseSiliconWaferItem.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/BaseSiliconWaferItem.java index c3f793ded..5004007ed 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/BaseSiliconWaferItem.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/BaseSiliconWaferItem.java @@ -30,7 +30,7 @@ public void appendHoverText(ItemStack stack, @Nullable Level world, List 0; // Bundled output handled by getBundledOutput case REDSTONE -> (simulationContainer.getOutput(r) & 1) != 0 ? 15 : 0; + case ANALOG -> mostSignificantBit(simulationContainer.getOutput(r)); }; } - //endregion //region BundledGatePart overrides @@ -153,8 +154,8 @@ protected int bundledOutputMask(int shape) { if (!ifSpec.isOutput(r)) return null; return switch (ifSpec.getInterfaceType(r)) { - case NC, REDSTONE -> null; // Redstone output handled by getOutput - case BUNDLED -> BundledSignalsLib.unpackDigital(null, simulationContainer.getOutput(r)); //TODO reuse an array + case NC, REDSTONE, ANALOG -> null; // Redstone output handled by getOutput + case BUNDLED -> unpackDigital(null, simulationContainer.getOutput(r)); //TODO reuse an array }; } //endregion @@ -165,7 +166,7 @@ public int state2() { // TODO Temporary: state2 contains IO details for rendering // TODO May let ifSpec pack this? int rsMask = ifSpec.getRedstoneInputMask() | ifSpec.getRedstoneOutputMask(); - int analogMask = 0; //TODO + int analogMask = ifSpec.getAnalogInputMask() | ifSpec.getAnalogOutputMask(); int bundledMask = ifSpec.getBundledInputMask() | ifSpec.getBundledOutputMask(); return (rsMask & 0xF) | (analogMask & 0xF) << 4 | (bundledMask & 0xF) << 8; } @@ -203,7 +204,7 @@ protected void gateLogicOnChange() { // Schedule update if inputs changed if (changeMask != 0) { - setState(state() & 0xF0 | simulationContainer.inputMask()); + setState(state() & 0xF0 | getModeBasedInputStateMask()); onInputChange(); scheduleTick(2); } @@ -219,7 +220,7 @@ protected void gateLogicOnScheduledTick() { simulationContainer.simulate(); int changeMask = simulationContainer.pullOutputs(); if (changeMask != 0) { - setState(state() & 0xF | simulationContainer.outputMask() << 4); + setState(state() & 0xF | getModeBasedOutputStateMask() << 4); onOutputChange(changeMask); } @@ -240,7 +241,7 @@ protected void gateLogicOnTick() { simulationContainer.simulate(); int changeMask = simulationContainer.pullOutputs(); if (changeMask != 0) { - setState(state() & 0xF | simulationContainer.outputMask() << 4); + setState(state() & 0xF | getModeBasedOutputStateMask() << 4); onOutputChange(changeMask); } } @@ -252,7 +253,29 @@ private short getModeBasedInput(int r) { return switch (ifSpec.getInterfaceType(r)) { case NC -> 0; case REDSTONE -> (short) (getRedstoneInput(r) != 0 ? 0xFFFF : 0); - case BUNDLED -> (short) BundledSignalsLib.packDigital(getBundledInput(r)); + case BUNDLED -> (short) packDigital(getBundledInput(r)); + case ANALOG -> (short) (1 << getAnalogRedstoneInput(r)); }; } + + private int getModeBasedInputStateMask() { + return getSignalStateMask(simulationContainer::getInput); + } + + private int getModeBasedOutputStateMask() { + return getSignalStateMask(simulationContainer::getOutput); + } + + private int getSignalStateMask(Function signalSupplier) { + int mask = 0; + for (int r = 0; r < 4; r++) { + short input = signalSupplier.apply(r); + mask |= switch (ifSpec.getInterfaceType(r)) { + case NC -> 0; + case REDSTONE, BUNDLED -> input != 0 ? 1 : 0; + case ANALOG -> mostSignificantBit(input) > 0 ? 1 : 0; + } << r; + } + return mask; + } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java index 3a0a05e79..aa75d2bbf 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java @@ -15,7 +15,6 @@ import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Container; import net.minecraft.world.InteractionHand; @@ -138,7 +137,7 @@ protected boolean canStartWork() { // Each type of IO corresponds to a particular ingredient boolean match = inventory.getItem(slotMap[r]).is(switch (type) { case NC -> CoreItems.PLATE_ITEM.get(); - case REDSTONE -> CoreItems.CONDUCTIVE_PLATE_ITEM.get(); + case REDSTONE, ANALOG -> CoreItems.CONDUCTIVE_PLATE_ITEM.get(); case BUNDLED -> CoreItems.BUNDLED_PLATE_ITEM.get(); }); diff --git a/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java b/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java index 440c630f8..8e5b4045b 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java +++ b/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java @@ -68,6 +68,7 @@ public class GateComponentModels { public static final Map ioBuffer = loadModels("io_buffer"); public static final Map ioBundledBuffer = loadModels("io_bundled_buffer"); public static final Map ioBundledBus = loadModels("io_bundled_bus"); + public static final Map ioPotentiometer = loadModels("io_potentiometer"); public static IconTransformation baseIcon; public static IconTransformation wireBorderIcon; @@ -107,6 +108,7 @@ public class GateComponentModels { public static IconTransformation ioBufferIcon; public static IconTransformation ioBundledBufferIcon; public static IconTransformation ioBundledBusIcon; + public static IconTransformation ioPotentiometerIcon; public static void registerIcons(AtlasRegistrar registrar) { //@formatter:off @@ -152,6 +154,7 @@ public static void registerIcons(AtlasRegistrar registrar) { registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_buffer"), i -> ioBufferIcon = new IconTransformation(i)); registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_bundled_buffer"), i -> ioBundledBufferIcon = new IconTransformation(i)); registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_bundled_bus"), i -> ioBundledBusIcon = new IconTransformation(i)); + registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_potentiometer"), i -> ioPotentiometerIcon = new IconTransformation(i)); //@formatter:on } @@ -1709,6 +1712,42 @@ public void renderModel(Transformation t, int orient, CCRenderState ccrs) { } } + public static class IOPotentiometerModel extends ComponentModel { + + public int signal = 0; // 0-15 signal strength + + private final CCModel[] boxModels; + private final CCModel[][] arrowModels; + + public IOPotentiometerModel(double x, double z) { + // Bake boxes + CCModel m = ioPotentiometer.get("box").copy().apply(new Translation(x / 16D, 2 / 16D, z / 16D)); + boxModels = bakeOrients(m); + + arrowModels = new CCModel[16][]; // Arrow for each signal level + for (int i = 0; i < 16; i++) { + + // Arrow should move between 120 deg (signal 0) to -120 deg (signal 15) + double angleDeg = 120.0 - i * (240.0 / 15.0); + + m = ioPotentiometer.get("pot").copy() + .apply(new Rotation(angleDeg * MathHelper.torad, 0, 1, 0)) + .apply(new Translation(x / 16D, 2 / 16D, z / 16D)); + arrowModels[i] = bakeOrients(m); + } + } + + protected UVTransformation getUVT() { + return ioBundledBusIcon; + } + + @Override + public void renderModel(Transformation t, int orient, CCRenderState ccrs) { + boxModels[orient].render(ccrs, t, ioPotentiometerIcon); + arrowModels[signal][orient].render(ccrs, t, ioPotentiometerIcon); + } + } + private static class RedundantUVTransformation extends UVTransformation { public static final RedundantUVTransformation INSTANCE = new RedundantUVTransformation(); diff --git a/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java b/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java index 006912c0f..d691cff1b 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java +++ b/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java @@ -82,6 +82,7 @@ public static GateModelRenderer instance() { new RenderRedstoneIOGate(), new RenderBundledColorIOGate(), new RenderBundledBusIOGate(), + new RenderAnalogIOGate(), }; //region Static rendering @@ -2083,4 +2084,44 @@ protected void prepare(IGateRenderData gate) { outputPanel.signal = gate.bInput2(); // Output mode panel inputs from simulation } } + + public static class RenderAnalogIOGate extends GateRenderer { + + private final List models = new LinkedList<>(); + + private final WireModel[] wires = generateWireModels("io_analog", 1); + private final IORedstoneConnectorWireModel connWire = new IORedstoneConnectorWireModel(); + private final IOBufferModel buffer = new IOBufferModel(8, 10); + private final IOPotentiometerModel pot = new IOPotentiometerModel(4, 10); + + public RenderAnalogIOGate() { + models.add(BaseComponentModel.INSTANCE); + models.addAll(Arrays.asList(wires)); + models.add(IORedstoneConnectorModel.INSTANCE); + models.add(connWire); + models.add(buffer); + models.add(pot); + } + + @Override + protected List getModels() { + return models; + } + + @Override + protected void prepareInventory(@Nullable ItemStack stack) { + wires[0].on = false; + connWire.signal = 0; + pot.signal = 0; + buffer.isInput = true; + } + + @Override + protected void prepare(IGateRenderData gate) { + wires[0].on = (gate.state() & 0x44) != 0; + connWire.signal = (byte) (gate.rsIO() * 17); + pot.signal = gate.state2(); + buffer.isInput = gate.shape() == 0; + } + } } diff --git a/integration/src/main/resources/assets/projectred_integration/obj/io_potentiometer.blend b/integration/src/main/resources/assets/projectred_integration/obj/io_potentiometer.blend new file mode 100644 index 0000000000000000000000000000000000000000..70c7d763f253a5df8f2eddd8f69df13c747950cc GIT binary patch literal 633940 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 z

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 literal 0 HcmV?d00001 diff --git a/integration/src/main/resources/assets/projectred_integration/obj/io_potentiometer.obj b/integration/src/main/resources/assets/projectred_integration/obj/io_potentiometer.obj new file mode 100644 index 000000000..3dbffd15f --- /dev/null +++ b/integration/src/main/resources/assets/projectred_integration/obj/io_potentiometer.obj @@ -0,0 +1,87 @@ +# Blender v3.1.2 OBJ File: 'io_potentiometer.blend' +# www.blender.org +g box +v -0.125000 0.125000 -0.125000 +v -0.125000 0.000000 -0.125000 +v 0.125000 0.125000 -0.125000 +v 0.125000 0.000000 -0.125000 +v -0.125000 0.125000 0.125000 +v -0.125000 -0.000000 0.125000 +v 0.125000 0.125000 0.125000 +v 0.125000 -0.000000 0.125000 +v 0.000000 0.125000 -0.125000 +v 0.000000 0.000000 -0.125000 +v 0.000000 0.125000 0.125000 +v 0.000000 -0.000000 0.125000 +vt 0.375000 0.750000 +vt 0.500000 0.750000 +vt 0.500000 0.875000 +vt 0.375000 0.875000 +vt 0.125000 0.750000 +vt 0.125000 0.875000 +vt 0.000000 0.875000 +vt 0.000000 0.750000 +vt 0.375000 0.625000 +vt 0.125000 0.625000 +vt 0.125000 0.500000 +vt 0.375000 0.500000 +vt 0.375000 1.000000 +vt 0.125000 1.000000 +vt 0.000000 0.625000 +vt 0.500000 0.625000 +s off +f 9/1 10/2 2/3 1/4 +f 11/5 5/6 6/7 12/8 +f 3/9 7/10 8/11 4/12 +f 2/13 6/14 5/6 1/4 +f 9/1 11/5 7/10 3/9 +f 1/4 5/6 11/5 9/1 +f 7/10 11/5 12/8 8/15 +f 3/9 4/16 10/2 9/1 +g pot +v -0.037500 0.155250 -0.006250 +v -0.037500 0.124000 -0.006250 +v 0.037500 0.155250 -0.006250 +v 0.037500 0.124000 -0.006250 +v 0.000000 0.155250 0.093750 +v 0.000000 0.124000 0.093750 +v -0.018750 0.155250 -0.093750 +v -0.018750 0.124000 -0.093750 +v 0.018750 0.155250 -0.093750 +v 0.018750 0.124000 -0.093750 +v -0.018750 0.155250 -0.006250 +v -0.018750 0.124000 -0.006250 +v 0.018750 0.155250 -0.006250 +v 0.018750 0.124000 -0.006250 +vt -0.000000 0.187500 +vt -0.000000 0.156250 +vt 0.093750 0.156250 +vt 0.093750 0.187500 +vt 0.031250 0.156250 +vt 0.031250 0.250000 +vt -0.000000 0.250000 +vt 0.093750 0.250000 +vt 0.062500 0.250000 +vt 0.062500 0.156250 +vt 0.093750 0.156250 +vt 0.046875 0.250000 +vt -0.000000 0.156250 +vt 0.031250 0.031250 +vt 0.031250 -0.000000 +vt 0.062500 -0.000000 +vt 0.062500 0.031250 +vt 0.031250 0.125000 +vt 0.000000 0.125000 +vt 0.000000 0.031250 +vt 0.062500 0.125000 +vt 0.093750 0.031250 +vt 0.093750 0.125000 +s off +f 15/17 16/18 14/19 13/20 +f 15/21 17/22 18/23 16/18 +f 14/19 18/24 17/25 13/26 +f 13/27 17/28 15/29 +f 21/30 22/31 20/32 19/33 +f 25/34 26/35 22/36 21/30 +f 19/33 23/37 25/34 21/30 +f 20/38 24/39 23/37 19/33 diff --git a/integration/src/main/resources/assets/projectred_integration/textures/block/io_potentiometer.png b/integration/src/main/resources/assets/projectred_integration/textures/block/io_potentiometer.png new file mode 100644 index 0000000000000000000000000000000000000000..9c4290bc890fac33e7203545dada4e279556ae7f GIT binary patch literal 3578 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 Tu70-R-`TPy0^Ujg=#Bpa>|S~1 literal 0 HcmV?d00001 diff --git a/integration/src/main/resources/assets/projectred_integration/textures/block/surface/io_analog-0.png b/integration/src/main/resources/assets/projectred_integration/textures/block/surface/io_analog-0.png new file mode 100644 index 0000000000000000000000000000000000000000..6f656e6c0508920711fe08cf4d2070c5ebae1e36 GIT binary patch literal 1805 zcmbVNO>f*p7wsK}u7~qd zI)}1WCl!~wr{LxT&8DO~m1K>ohDuE~xjNXmY!YI-<|i@ZS)oaM`j&|7vqnZ1$kKTW^#O-mZ|DY8XPKOXLfr_~uy=w5r>UxP29&d$jigf+ zBg zR;#p`vPy1`AX?WbDCa8oYj*k$=Se4ZxgVmSn|R0%(jHa`ommbK_3tL+r!&G^B4Ec#hb-q@eD6NK#^8S%##gW3yIuT+?`rg5cfbGJ;}_rk2Xyu@?f?J) literal 0 HcmV?d00001 From ab2d4d16c1f532f245bee959a7c25d86ec7f7a64 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Wed, 4 Sep 2024 11:04:24 -0400 Subject: [PATCH 16/31] fix: swapped textures for tin and raw silver blocks (cherry picked from commit 918847a00e07e7e90382dd744308bced34f3c31a) --- .../.cache/5ffbcca2b9701e1fb56327dfc2c3763c361e7832 | 12 ++++++------ .../.cache/9edd3baac41f9bc21260cb68f9502d388c6d64ae | 6 +++--- .../.cache/fe07d4479e71b97bd5ac0800f5195045ee93364b | 4 ++-- .../assets/projectred_exploration/lang/en_us.json | 4 ++-- .../forge/tags/blocks/storage_blocks/raw_silver.json | 2 +- .../data/forge/tags/blocks/storage_blocks/tin.json | 2 +- .../forge/tags/items/storage_blocks/raw_tin.json | 5 +++++ .../data/minecraft/tags/blocks/mineable/pickaxe.json | 2 +- .../data/minecraft/tags/blocks/needs_iron_tool.json | 2 +- .../data/minecraft/tags/blocks/needs_stone_tool.json | 2 +- .../loot_tables/blocks/raw_silver_block.json | 2 +- .../loot_tables/blocks/tin_block.json | 2 +- .../exploration/init/ExplorationBlocks.java | 6 +++--- 13 files changed, 28 insertions(+), 23 deletions(-) create mode 100644 exploration/src/main/generated/data/forge/tags/items/storage_blocks/raw_tin.json diff --git a/exploration/src/main/generated/.cache/5ffbcca2b9701e1fb56327dfc2c3763c361e7832 b/exploration/src/main/generated/.cache/5ffbcca2b9701e1fb56327dfc2c3763c361e7832 index 672db34af..c500b00bf 100644 --- a/exploration/src/main/generated/.cache/5ffbcca2b9701e1fb56327dfc2c3763c361e7832 +++ b/exploration/src/main/generated/.cache/5ffbcca2b9701e1fb56327dfc2c3763c361e7832 @@ -1,4 +1,4 @@ -// 1.19.2 2024-02-26T23:07:19.740113 ProjectRed-Exploration Block Tags +// 1.19.2 2025-01-21T11:24:04.26406 ProjectRed-Exploration Block Tags ab48eb507afbf19940589bc7ac60ddf81b1d7b12 data/forge/tags/blocks/ores.json f5e1a14a6429e644ffc9f0661838ed3892dddcaa data/forge/tags/blocks/ores/electrotine.json ce719fb9caf3444b61fdd325c978241c1cfd22ec data/forge/tags/blocks/ores/peridot.json @@ -13,13 +13,13 @@ e6ece7e72e77102086896636d1a63e836fa464cc data/forge/tags/blocks/stone/marble.jso d726d0c8bb2272a498dadd1ac331f9711bf63025 data/forge/tags/blocks/storage_blocks.json 211e0bdd014616eed5b3aedf731e368ea1b16889 data/forge/tags/blocks/storage_blocks/electrotine.json e9550f12acc58379f0936f2a25d3e5c50f800be4 data/forge/tags/blocks/storage_blocks/peridot.json -8e2a01c61961fb1d0e3d7cd7b919b918e4c918b7 data/forge/tags/blocks/storage_blocks/raw_silver.json +f8d5ae9be802ca21197b50fa6cf22baee277549b data/forge/tags/blocks/storage_blocks/raw_silver.json f908c0769a842212de0330ab11547b8e0804d4e2 data/forge/tags/blocks/storage_blocks/raw_tin.json 496e7ba6daa3730ba208ccfc2cf0c69bb6ac7a08 data/forge/tags/blocks/storage_blocks/ruby.json 5f1a178933dd1967113fbf2a42289986387a2903 data/forge/tags/blocks/storage_blocks/sapphire.json ce08de69baac6242b45f391d2ad8fb4d932bde3b data/forge/tags/blocks/storage_blocks/silver.json -f8d5ae9be802ca21197b50fa6cf22baee277549b data/forge/tags/blocks/storage_blocks/tin.json -039af8f99eff1dfa84d4256f0b66fa3a5cee9c4a data/minecraft/tags/blocks/mineable/pickaxe.json -67d20db35347bba2929397d96bca7989139dcebd data/minecraft/tags/blocks/needs_iron_tool.json -f125d45bb1a8f191efcda2adc06f4c2448952cc1 data/minecraft/tags/blocks/needs_stone_tool.json +8e2a01c61961fb1d0e3d7cd7b919b918e4c918b7 data/forge/tags/blocks/storage_blocks/tin.json +364ca7e96544a7b5ffcdd2ce8f785accb2b52b83 data/minecraft/tags/blocks/mineable/pickaxe.json +df6da06840d9e69a19a14256fb4b7d4254f30687 data/minecraft/tags/blocks/needs_iron_tool.json +0c6520588acabbc9869a090403576d62b5600c4b data/minecraft/tags/blocks/needs_stone_tool.json f9a168a43159b12affd5e346d57d160e27f095c5 data/minecraft/tags/blocks/walls.json diff --git a/exploration/src/main/generated/.cache/9edd3baac41f9bc21260cb68f9502d388c6d64ae b/exploration/src/main/generated/.cache/9edd3baac41f9bc21260cb68f9502d388c6d64ae index ecaa7fdfe..af74719a5 100644 --- a/exploration/src/main/generated/.cache/9edd3baac41f9bc21260cb68f9502d388c6d64ae +++ b/exploration/src/main/generated/.cache/9edd3baac41f9bc21260cb68f9502d388c6d64ae @@ -1,4 +1,4 @@ -// 1.19.2 2024-02-26T23:07:19.750979 ProjectRed-Exploration Loot Tables +// 1.19.2 2025-01-21T11:24:04.267213 ProjectRed-Exploration Loot Tables f377cd52869f1bb40758dc52113c67c61d878b62 data/projectred_exploration/loot_tables/blocks/basalt.json 6b10d48608a3129d5d7885f5430a1f1e15b1a801 data/projectred_exploration/loot_tables/blocks/basalt_brick.json 0208b3852855ab1b7d0729980dcde806b2b17f00 data/projectred_exploration/loot_tables/blocks/basalt_brick_wall.json @@ -21,7 +21,7 @@ a8847ac135e1fd6232498b4a2d9205a5cfefcf55 data/projectred_exploration/loot_tables bcd10a3de152e415a1f5ae9798ab640e425b2bb0 data/projectred_exploration/loot_tables/blocks/peridot_block.json b3dc016100461c28ed1f9c91706b27fbedd567cb data/projectred_exploration/loot_tables/blocks/peridot_block_wall.json 1c35291a40768dc61cfb8aff1f9fdbfd8643ed63 data/projectred_exploration/loot_tables/blocks/peridot_ore.json -dcc50b58d079ebca41e9c2661fc58a999653290c data/projectred_exploration/loot_tables/blocks/raw_silver_block.json +8b79f7c34ac6e57f434776c0ee38e9971567d6cb data/projectred_exploration/loot_tables/blocks/raw_silver_block.json da70bd8e675d2cbff62044aad2e3f1b5c51f79b6 data/projectred_exploration/loot_tables/blocks/raw_tin_block.json ba61f0b0b1d54626377c356362fc8ca98856a2f3 data/projectred_exploration/loot_tables/blocks/ruby_block.json 77aacd814910ae9589955f5eb1384c8029bc72ee data/projectred_exploration/loot_tables/blocks/ruby_block_wall.json @@ -31,5 +31,5 @@ c4cb08e8ea7e7e32fb4aa2c4c484920e7a9019f2 data/projectred_exploration/loot_tables e80459901675826889d9de14de57bc829e62fac5 data/projectred_exploration/loot_tables/blocks/sapphire_ore.json 65989d0c279840b6a7751351c3a5d898802705ae data/projectred_exploration/loot_tables/blocks/silver_block.json a7a596bb57108e065423cddb5a459c227f4bc9f1 data/projectred_exploration/loot_tables/blocks/silver_ore.json -8b79f7c34ac6e57f434776c0ee38e9971567d6cb data/projectred_exploration/loot_tables/blocks/tin_block.json +dcc50b58d079ebca41e9c2661fc58a999653290c data/projectred_exploration/loot_tables/blocks/tin_block.json ba435c351d46b69a1d0e8494f2061817f17f1621 data/projectred_exploration/loot_tables/blocks/tin_ore.json diff --git a/exploration/src/main/generated/.cache/fe07d4479e71b97bd5ac0800f5195045ee93364b b/exploration/src/main/generated/.cache/fe07d4479e71b97bd5ac0800f5195045ee93364b index 75ae9c062..ca802a8bd 100644 --- a/exploration/src/main/generated/.cache/fe07d4479e71b97bd5ac0800f5195045ee93364b +++ b/exploration/src/main/generated/.cache/fe07d4479e71b97bd5ac0800f5195045ee93364b @@ -1,2 +1,2 @@ -// 1.19.2 2024-02-26T23:07:19.749622 ProjectRed-Exploration Language Provider: en_us -d5b149bd6ac57153f96c1adcb1a5719c10511495 assets/projectred_exploration/lang/en_us.json +// 1.19.2 2025-01-21T11:24:04.255834 ProjectRed-Exploration Language Provider: en_us +3b35694ed5565f42df808b4991567dc9246b4cbe assets/projectred_exploration/lang/en_us.json diff --git a/exploration/src/main/generated/assets/projectred_exploration/lang/en_us.json b/exploration/src/main/generated/assets/projectred_exploration/lang/en_us.json index aa4a270e2..d48117461 100644 --- a/exploration/src/main/generated/assets/projectred_exploration/lang/en_us.json +++ b/exploration/src/main/generated/assets/projectred_exploration/lang/en_us.json @@ -21,7 +21,7 @@ "block.projectred_exploration.peridot_block": "Peridot Block", "block.projectred_exploration.peridot_block_wall": "Peridot Wall", "block.projectred_exploration.peridot_ore": "Peridot Ore", - "block.projectred_exploration.raw_silver_block": "Tin Block", + "block.projectred_exploration.raw_silver_block": "Raw Silver Block", "block.projectred_exploration.raw_tin_block": "Raw Tin Block", "block.projectred_exploration.ruby_block": "Ruby Block", "block.projectred_exploration.ruby_block_wall": "Ruby Wall", @@ -31,7 +31,7 @@ "block.projectred_exploration.sapphire_ore": "Sapphire Ore", "block.projectred_exploration.silver_block": "Silver Block", "block.projectred_exploration.silver_ore": "Silver Ore", - "block.projectred_exploration.tin_block": "Raw Silver Block", + "block.projectred_exploration.tin_block": "Tin Block", "block.projectred_exploration.tin_ore": "Tin Ore", "item.projectred_exploration.athame": "Athame", "item.projectred_exploration.black_backpack": "Black Backpack", diff --git a/exploration/src/main/generated/data/forge/tags/blocks/storage_blocks/raw_silver.json b/exploration/src/main/generated/data/forge/tags/blocks/storage_blocks/raw_silver.json index aeb1ff03b..24d90cb40 100644 --- a/exploration/src/main/generated/data/forge/tags/blocks/storage_blocks/raw_silver.json +++ b/exploration/src/main/generated/data/forge/tags/blocks/storage_blocks/raw_silver.json @@ -1,5 +1,5 @@ { "values": [ - "projectred_exploration:tin_block" + "projectred_exploration:raw_silver_block" ] } \ No newline at end of file diff --git a/exploration/src/main/generated/data/forge/tags/blocks/storage_blocks/tin.json b/exploration/src/main/generated/data/forge/tags/blocks/storage_blocks/tin.json index 24d90cb40..aeb1ff03b 100644 --- a/exploration/src/main/generated/data/forge/tags/blocks/storage_blocks/tin.json +++ b/exploration/src/main/generated/data/forge/tags/blocks/storage_blocks/tin.json @@ -1,5 +1,5 @@ { "values": [ - "projectred_exploration:raw_silver_block" + "projectred_exploration:tin_block" ] } \ No newline at end of file diff --git a/exploration/src/main/generated/data/forge/tags/items/storage_blocks/raw_tin.json b/exploration/src/main/generated/data/forge/tags/items/storage_blocks/raw_tin.json new file mode 100644 index 000000000..f93d1568e --- /dev/null +++ b/exploration/src/main/generated/data/forge/tags/items/storage_blocks/raw_tin.json @@ -0,0 +1,5 @@ +{ + "values": [ + "projectred_exploration:raw_tin_block" + ] +} \ No newline at end of file diff --git a/exploration/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json b/exploration/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json index e3da2e858..8443bbe2d 100644 --- a/exploration/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/exploration/src/main/generated/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -21,8 +21,8 @@ "projectred_exploration:peridot_block", "projectred_exploration:electrotine_block", "projectred_exploration:raw_tin_block", - "projectred_exploration:raw_silver_block", "projectred_exploration:tin_block", + "projectred_exploration:raw_silver_block", "projectred_exploration:silver_block", "projectred_exploration:marble_wall", "projectred_exploration:marble_brick_wall", diff --git a/exploration/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json b/exploration/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json index a64b6696b..829ac492b 100644 --- a/exploration/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json +++ b/exploration/src/main/generated/data/minecraft/tags/blocks/needs_iron_tool.json @@ -13,7 +13,7 @@ "projectred_exploration:ruby_block", "projectred_exploration:sapphire_block", "projectred_exploration:peridot_block", - "projectred_exploration:tin_block", + "projectred_exploration:raw_silver_block", "projectred_exploration:silver_block", "projectred_exploration:ruby_block_wall", "projectred_exploration:sapphire_block_wall", diff --git a/exploration/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json b/exploration/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json index 6b8bc3cdf..8b260c302 100644 --- a/exploration/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json +++ b/exploration/src/main/generated/data/minecraft/tags/blocks/needs_stone_tool.json @@ -9,7 +9,7 @@ "projectred_exploration:basalt_brick", "projectred_exploration:electrotine_block", "projectred_exploration:raw_tin_block", - "projectred_exploration:raw_silver_block", + "projectred_exploration:tin_block", "projectred_exploration:marble_wall", "projectred_exploration:marble_brick_wall", "projectred_exploration:basalt_wall", diff --git a/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/raw_silver_block.json b/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/raw_silver_block.json index a59dc157c..1b477b3a0 100644 --- a/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/raw_silver_block.json +++ b/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/raw_silver_block.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "projectred_exploration:tin_block" + "name": "projectred_exploration:raw_silver_block" } ], "rolls": 1.0 diff --git a/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/tin_block.json b/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/tin_block.json index 1b477b3a0..a59dc157c 100644 --- a/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/tin_block.json +++ b/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/tin_block.json @@ -6,7 +6,7 @@ "entries": [ { "type": "minecraft:item", - "name": "projectred_exploration:raw_silver_block" + "name": "projectred_exploration:tin_block" } ], "rolls": 1.0 diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationBlocks.java b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationBlocks.java index e950fdef9..cd0fd00d8 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationBlocks.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationBlocks.java @@ -127,8 +127,8 @@ public static void register() { PERIDOT_BLOCK = BLOCKS.register(ID_PERIDOT_BLOCK, () -> createDecorativeGemBlock(5F, 10F)); ELECTROTINE_BLOCK = BLOCKS.register(ID_ELECTROTINE_BLOCK, () -> createDecorativeMetalBlock(5F, 10F)); RAW_TIN_BLOCK = BLOCKS.register(ID_RAW_TIN_BLOCK, () -> createDecorativeMetalBlock(2F, 6F)); - RAW_SILVER_BLOCK = BLOCKS.register(ID_TIN_BLOCK, () -> createDecorativeMetalBlock(2F, 6F)); - TIN_BLOCK = BLOCKS.register(ID_RAW_SILVER_BLOCK, () -> createDecorativeMetalBlock(3F, 6F)); + RAW_SILVER_BLOCK = BLOCKS.register(ID_RAW_SILVER_BLOCK, () -> createDecorativeMetalBlock(2F, 6F)); + TIN_BLOCK = BLOCKS.register(ID_TIN_BLOCK, () -> createDecorativeMetalBlock(3F, 6F)); SILVER_BLOCK = BLOCKS.register(ID_SILVER_BLOCK, () -> createDecorativeMetalBlock(3F, 6F)); // Walls @@ -169,8 +169,8 @@ public static void register() { ITEMS.register(ID_PERIDOT_BLOCK, () -> createBlockItem(PERIDOT_BLOCK)); ITEMS.register(ID_ELECTROTINE_BLOCK,() -> createBlockItem(ELECTROTINE_BLOCK)); ITEMS.register(ID_RAW_TIN_BLOCK, () -> createBlockItem(RAW_TIN_BLOCK)); - ITEMS.register(ID_TIN_BLOCK, () -> createBlockItem(TIN_BLOCK)); ITEMS.register(ID_RAW_SILVER_BLOCK, () -> createBlockItem(RAW_SILVER_BLOCK)); + ITEMS.register(ID_TIN_BLOCK, () -> createBlockItem(TIN_BLOCK)); ITEMS.register(ID_SILVER_BLOCK, () -> createBlockItem(SILVER_BLOCK)); // Walls From 268f96a987fe384bd03fda974d43b970719c6b6d Mon Sep 17 00:00:00 2001 From: MrTJP Date: Wed, 11 Sep 2024 10:14:12 -0400 Subject: [PATCH 17/31] fix: inconsistent bundled cable connections to smart lamps (cherry picked from commit 858c5bf6106badb0eea16a8e3791c5609b260664) --- .../expansion/tile/BaseFrameMoverTile.java | 1 + .../block/IllumarSmartLampBlock.java | 5 ++++- .../tile/IllumarSmartLampBlockEntity.java | 11 ++++++----- .../transmission/part/BundledCablePart.java | 18 ++++++++++++++++++ 4 files changed, 29 insertions(+), 6 deletions(-) diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseFrameMoverTile.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseFrameMoverTile.java index 4863eea4b..59dc543c9 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseFrameMoverTile.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseFrameMoverTile.java @@ -114,6 +114,7 @@ public void onNeighborBlockChanged(BlockPos neighborPos) { public void onOrientationChange() { if (!getLevel().isClientSide) { updateExternals(); + notifyExternals(0xF); } } diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/block/IllumarSmartLampBlock.java b/illumination/src/main/java/mrtjp/projectred/illumination/block/IllumarSmartLampBlock.java index cc1e721a7..12544a8ae 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/block/IllumarSmartLampBlock.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/block/IllumarSmartLampBlock.java @@ -39,7 +39,10 @@ protected void createBlockStateDefinition(StateDefinition.Builder Date: Mon, 18 Nov 2024 09:22:00 -0500 Subject: [PATCH 18/31] fix: movement registry ignoring MovementController capabilities (cherry picked from commit 1be9fef63a5e3433a028af9fdf8bc0d47c2a27b5) --- .../java/mrtjp/projectred/expansion/MovementManager.java | 3 ++- .../java/mrtjp/projectred/expansion/MovementRegistry.java | 5 +++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/MovementManager.java b/expansion/src/main/java/mrtjp/projectred/expansion/MovementManager.java index 526320e66..9435ab849 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/MovementManager.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/MovementManager.java @@ -37,6 +37,7 @@ import net.minecraftforge.event.level.ChunkWatchEvent; import net.minecraftforge.event.level.LevelEvent; +import javax.annotation.Nullable; import java.util.*; import java.util.function.Consumer; @@ -65,7 +66,7 @@ public static MovementManager getInstance(Level level) { return map.computeIfAbsent(level.dimension(), MovementManager::new); } - public static MovementManager getClientInstanceNullable() { + public static @Nullable MovementManager getClientInstanceNullable() { var clientLevel = Minecraft.getInstance().level; if (clientLevel == null) { return null; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/MovementRegistry.java b/expansion/src/main/java/mrtjp/projectred/expansion/MovementRegistry.java index 8d558e5ad..d6e1b55be 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/MovementRegistry.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/MovementRegistry.java @@ -67,6 +67,11 @@ public static void registerFrameInteraction(FrameInteraction interaction) { BlockEntity be = level.getBlockEntity(pos); if (be instanceof MovementController mbe) return mbe; + if (be != null) { + LazyOptional cap = be.getCapability(IExpansionAPI.MOVEMENT_CONTROLLER_CAPABILITY); + if (cap.isPresent()) return cap.orElseThrow(() -> new RuntimeException("??")); + } + return null; } From e34e211b811ac9dc759f1ea0b30f14183c157f81 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Wed, 20 Nov 2024 09:46:52 -0500 Subject: [PATCH 19/31] fix: fabrication machines loading inventory out of order (cherry picked from commit c7c5020b6b2b91ebdc6cc9601f776642b9d5c24c) --- .../projectred/core/inventory/BaseInventory.java | 16 +++++++++++++++- .../fabrication/tile/LithographyTableTile.java | 2 +- .../fabrication/tile/PackagingTableTile.java | 2 +- .../fabrication/tile/PlottingTableTile.java | 2 +- 4 files changed, 18 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/mrtjp/projectred/core/inventory/BaseInventory.java b/core/src/main/java/mrtjp/projectred/core/inventory/BaseInventory.java index 070b8a278..00039de79 100644 --- a/core/src/main/java/mrtjp/projectred/core/inventory/BaseInventory.java +++ b/core/src/main/java/mrtjp/projectred/core/inventory/BaseInventory.java @@ -59,8 +59,8 @@ public void loadFrom(CompoundTag parent, String key) { // Check if list-format tags are present ListTag itemList = parent.getList(key, 10); if (!itemList.isEmpty()) { - ProjectRedCore.LOGGER.warn("Inventory {} loaded from non-ordered data. Its contents may have shuffled", this); fromTag(itemList); + ProjectRedCore.LOGGER.warn("Inventory {} loaded from non-ordered data. Its contents may have shuffled", this); } else { // Otherwise, use new compound format load(parent.getCompound(key)); @@ -70,4 +70,18 @@ public void loadFrom(CompoundTag parent, String key) { public static int getItemCount(CompoundTag tag) { return tag.contains(TAG_ITEM_COUNT) ? tag.getInt(TAG_ITEM_COUNT) : tag.getList(TAG_ITEMS, 10).size(); //TODO remove legacy support } + + //region Deprecate vanilla save/load as it does not load back to correct slots + @Override + @Deprecated // Use saveTo or save + public ListTag createTag() { + return super.createTag(); + } + + @Override + @Deprecated // Use loadFrom or load + public void fromTag(ListTag pContainerNbt) { + super.fromTag(pContainerNbt); + } + //endregion } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/LithographyTableTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/LithographyTableTile.java index 3f5552540..cfb2ef875 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/LithographyTableTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/LithographyTableTile.java @@ -63,7 +63,7 @@ public Container getInventory() { @Override public void saveToNBT(CompoundTag tag) { super.saveToNBT(tag); - tag.put("inventory", inventory.createTag()); + inventory.saveTo(tag, "inventory");; } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java index aa75d2bbf..b246bdbc3 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java @@ -71,7 +71,7 @@ public Container getInventory() { @Override public void saveToNBT(CompoundTag tag) { super.saveToNBT(tag); - tag.put("inventory", inventory.createTag()); + inventory.saveTo(tag, "inventory"); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PlottingTableTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PlottingTableTile.java index eb716e730..8901f95bd 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PlottingTableTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PlottingTableTile.java @@ -60,7 +60,7 @@ public Container getInventory() { @Override public void saveToNBT(CompoundTag tag) { super.saveToNBT(tag); - tag.put("inventory", inventory.createTag()); + inventory.saveTo(tag, "inventory"); } @Override From b2a38b7f2bc58d8145390d1a71617d9e194fc8e7 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Sat, 23 Nov 2024 18:35:04 -0500 Subject: [PATCH 20/31] internal: clean up fabrication container callbacks (cherry picked from commit efd89d1a0dfe68b151cb5afdc03cd40f0df947bc) --- .../tile/LithographyTableTile.java | 21 ++++--------------- .../fabrication/tile/PackagingTableTile.java | 21 ++++--------------- .../fabrication/tile/PlottingTableTile.java | 21 ++++--------------- 3 files changed, 12 insertions(+), 51 deletions(-) diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/LithographyTableTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/LithographyTableTile.java index cfb2ef875..e100d98a2 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/LithographyTableTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/LithographyTableTile.java @@ -14,7 +14,6 @@ import mrtjp.projectred.fabrication.lithography.ProcessNode; import mrtjp.projectred.fabrication.lithography.WaferType; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Container; @@ -25,11 +24,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; public class LithographyTableTile extends FabricationMachineTile { @@ -43,17 +37,11 @@ public boolean canPlaceItem(int slot, ItemStack stack) { default -> false; }; } - - @Override - public void setChanged() { - super.setChanged(); - cancelWorkIfNeeded(); - } }; public LithographyTableTile(BlockPos pos, BlockState state) { super(FabricationBlocks.LITHOGRAPHY_TABLE_TILE.get(), pos, state); - inventory.addListener(c -> setChanged()); + inventory.addListener(this::onInventoryChanged); } public Container getInventory() { @@ -97,10 +85,9 @@ public void onBlockRemoved() { dropInventory(inventory, getLevel(), Vector3.fromBlockPos(getBlockPos())); } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - return super.getCapability(cap, side); //TODO add capabilities + private void onInventoryChanged(Container inventory) { + cancelWorkIfNeeded(); + setChanged(); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java index b246bdbc3..bfb5f9783 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java @@ -13,7 +13,6 @@ import mrtjp.projectred.fabrication.inventory.container.PackagingTableContainer; import mrtjp.projectred.fabrication.item.ValidDieItem; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Container; @@ -24,13 +23,8 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; import org.jetbrains.annotations.NotNull; -import javax.annotation.Nonnull; -import javax.annotation.Nullable; - import static mrtjp.projectred.fabrication.editor.EditorDataUtils.getInterfaceSpec; import static mrtjp.projectred.fabrication.editor.EditorDataUtils.hasFabricationTarget; @@ -49,19 +43,13 @@ public boolean canPlaceItem(int slot, @NotNull ItemStack stack) { default -> true; }; } - - @Override - public void setChanged() { - super.setChanged(); - cancelWorkIfNeeded(); - } }; private int problematicSlotMask = 0; // Masks of slots that client should render red highlights public PackagingTableTile(BlockPos pos, BlockState state) { super(FabricationBlocks.PACKAGING_TABLE_TILE.get(), pos, state); - inventory.addListener(c -> setChanged()); + inventory.addListener(this::onInventoryChanged); } public Container getInventory() { @@ -105,10 +93,9 @@ public void onBlockRemoved() { dropInventory(inventory, getLevel(), Vector3.fromBlockPos(getBlockPos())); } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - return super.getCapability(cap, side); //TODO add capabilities + private void onInventoryChanged(Container inventory) { + cancelWorkIfNeeded(); + setChanged(); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PlottingTableTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PlottingTableTile.java index 8901f95bd..2a064b30c 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PlottingTableTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PlottingTableTile.java @@ -11,7 +11,6 @@ import mrtjp.projectred.fabrication.item.BlankPhotomaskItem; import mrtjp.projectred.fabrication.item.ICBlueprintItem; import net.minecraft.core.BlockPos; -import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.Container; @@ -22,11 +21,6 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -import net.minecraftforge.common.capabilities.Capability; -import net.minecraftforge.common.util.LazyOptional; - -import javax.annotation.Nonnull; -import javax.annotation.Nullable; public class PlottingTableTile extends FabricationMachineTile { @@ -40,17 +34,11 @@ public boolean canPlaceItem(int slot, ItemStack stack) { default -> false; }; } - - @Override - public void setChanged() { - super.setChanged(); - cancelWorkIfNeeded(); - } }; public PlottingTableTile(BlockPos pos, BlockState state) { super(FabricationBlocks.PLOTTING_TABLE_TILE.get(), pos, state); - inventory.addListener(c -> setChanged()); + inventory.addListener(this::onInventoryChanged); } public Container getInventory() { @@ -94,10 +82,9 @@ public void onBlockRemoved() { dropInventory(inventory, getLevel(), Vector3.fromBlockPos(getBlockPos())); } - @Nonnull - @Override - public LazyOptional getCapability(@Nonnull Capability cap, @Nullable Direction side) { - return super.getCapability(cap, side); //TODO add capabilities + private void onInventoryChanged(Container inventory) { + cancelWorkIfNeeded(); + setChanged(); } @Override From acdbcd2afffb4bf3257e51cb45ec0fd23dfeb382 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Sat, 23 Nov 2024 18:45:10 -0500 Subject: [PATCH 21/31] chore: ignore all .gradle dirs (cherry picked from commit 3bb26d32ecc9a1a09e5d3f4829c01406bd79b840) --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 12188044c..ced8255e1 100644 --- a/.gitignore +++ b/.gitignore @@ -11,7 +11,7 @@ Icon? ehthumbs.db Thumbs.db #gradle stuff -/.gradle +**/.gradle /build/ /*/build/ /run/ From 4ca28879761d7ec53549ce2afa0e12b2793a9bda Mon Sep 17 00:00:00 2001 From: MrTJP Date: Sun, 8 Dec 2024 15:12:00 -0500 Subject: [PATCH 22/31] ci: drop cursegradle plugin and use curseuploadpy (cherry picked from commit f93706948fa621ecd34584323133c36fab00c785) --- .github/requirements.txt | 3 ++- .github/workflows/publish.yaml | 36 ++++++++++++++++++++++++++++++++-- core/build.gradle | 21 -------------------- expansion/build.gradle | 20 ------------------- exploration/build.gradle | 20 ------------------- fabrication/build.gradle | 22 --------------------- illumination/build.gradle | 20 ------------------- integration/build.gradle | 20 ------------------- settings.gradle | 1 - transmission/build.gradle | 20 ------------------- 10 files changed, 36 insertions(+), 147 deletions(-) diff --git a/.github/requirements.txt b/.github/requirements.txt index 2ea94aa1d..df821f8d5 100644 --- a/.github/requirements.txt +++ b/.github/requirements.txt @@ -1 +1,2 @@ -fire==0.4.0 \ No newline at end of file +fire==0.4.0 +curseuploadpy @ git+https://github.com/MrTJP/curseuploadpy.git@dev diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 616d2aee9..ce3d864d7 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -129,9 +129,41 @@ jobs: - name: Curse publish if: ${{ steps.release_type.outputs.publish_curse == 'true' }} - run: ./gradlew curseforge + run: | + # Base args for all modules + COMMON_ARGS=( \ + -k $CURSE_TOKEN \ + -rt $CURSE_RELEASE_TYPE \ + -v 'Java 17' \ + -v 1.20.1 \ + -v Forge \ + -c ./CHANGELOG.md \ + --required-dep codechicken-lib-1-8 \ + --required-dep cb-multipart \ + ) + + # All submodules need PR Core + MODULE_ARGS=( \ + "${COMMON_ARGS[@]}" \ + --required-dep project-red-core \ + ) + + # Fabrication is special and also needs Integration and Transmission + FAB_ARGS=( \ + "${MODULE_ARGS[@]}" \ + --required-dep project-red-integration \ + --required-dep project-red-transmission \ + ) + + python -m curseuploadpy "${COMMON_ARGS[@]}" -p 228702 -f core/build/libs/*-core.jar + python -m curseuploadpy "${MODULE_ARGS[@]}" -p 229048 -f expansion/build/libs/*-expansion.jar + python -m curseuploadpy "${MODULE_ARGS[@]}" -p 229049 -f exploration/build/libs/*-exploration.jar + python -m curseuploadpy "${FAB_ARGS[@]}" -p 230111 -f fabrication/build/libs/*-fabrication.jar + python -m curseuploadpy "${MODULE_ARGS[@]}" -p 229046 -f illumination/build/libs/*-illumination.jar + python -m curseuploadpy "${MODULE_ARGS[@]}" -p 229045 -f integration/build/libs/*-integration.jar + python -m curseuploadpy "${MODULE_ARGS[@]}" -p 478939 -f transmission/build/libs/*-transmission.jar + env: - AUTO_GENERATED_VERSION: ${{ steps.versioning.outputs.version }} CURSE_RELEASE_TYPE: ${{ steps.release_type.outputs.release_type }} CURSE_TOKEN: ${{ secrets.CURSE_TOKEN }} diff --git a/core/build.gradle b/core/build.gradle index da7e2460a..3b97bf46d 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -1,6 +1,5 @@ plugins { id 'net.minecraftforge.gradle' - id 'com.matthewprenger.cursegradle' } String mod_id = 'projectred_core' @@ -45,23 +44,3 @@ dependencies { testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.2' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.2' } - -curseforge { - apiKey = System.getenv('CURSE_TOKEN') ?: 'XXX' - - // Core - project { - id = '228702' - releaseType = System.getenv('CURSE_RELEASE_TYPE') ?: 'alpha' - changelogType = 'markdown' - changelog = rootProject.file('CHANGELOG.md') - relations { - requiredDependency 'codechicken-lib-1-8' // CCL is required for everything - requiredDependency 'cb-multipart' // CBMultipart is required for everything - } - - // Java/ForgeGradle integrations don't work after 1.18.2 port - addGameVersion "${mc_version}" - addGameVersion "Java ${java_lang_version}" - } -} diff --git a/expansion/build.gradle b/expansion/build.gradle index ea3417192..493af146d 100644 --- a/expansion/build.gradle +++ b/expansion/build.gradle @@ -1,6 +1,5 @@ plugins { id 'net.minecraftforge.gradle' - id 'com.matthewprenger.cursegradle' id 'org.spongepowered.mixin' } @@ -45,22 +44,3 @@ mixin { debug.verbose = true debug.export = true } - -curseforge { - apiKey = System.getenv('CURSE_TOKEN') ?: 'XXX' - - // Expansion - project { - id = '229048' - releaseType = System.getenv('CURSE_RELEASE_TYPE') ?: 'alpha' - changelogType = 'markdown' - changelog = rootProject.file('CHANGELOG.md') - relations { - requiredDependency 'project-red-core' - } - - // Java/ForgeGradle integrations don't work after 1.18.2 port - addGameVersion "${mc_version}" - addGameVersion "Java ${java_lang_version}" - } -} \ No newline at end of file diff --git a/exploration/build.gradle b/exploration/build.gradle index 3521c8236..0dcbca2a6 100644 --- a/exploration/build.gradle +++ b/exploration/build.gradle @@ -1,6 +1,5 @@ plugins { id 'net.minecraftforge.gradle' - id 'com.matthewprenger.cursegradle' } String mod_id = 'projectred_exploration' @@ -33,22 +32,3 @@ dependencies { implementation project(":core") } - -curseforge { - apiKey = System.getenv('CURSE_TOKEN') ?: 'XXX' - - // Exploration - project { - id = '229049' - releaseType = System.getenv('CURSE_RELEASE_TYPE') ?: 'alpha' - changelogType = 'markdown' - changelog = rootProject.file('CHANGELOG.md') - relations { - requiredDependency 'project-red-core' - } - - // Java/ForgeGradle integrations don't work after 1.18.2 port - addGameVersion "${mc_version}" - addGameVersion "Java ${java_lang_version}" - } -} \ No newline at end of file diff --git a/fabrication/build.gradle b/fabrication/build.gradle index 2b00d5dae..0e200d566 100644 --- a/fabrication/build.gradle +++ b/fabrication/build.gradle @@ -1,6 +1,5 @@ plugins { id 'net.minecraftforge.gradle' - id 'com.matthewprenger.cursegradle' id 'com.github.johnrengelman.shadow' } @@ -58,24 +57,3 @@ reobf { jar { enabled = false } // Disable unshaded jar shadowJar { } // Enable shadow jar reobf } - -curseforge { - apiKey = System.getenv('CURSE_TOKEN') ?: 'XXX' - - // Fabrication - project { - id = '230111' - releaseType = System.getenv('CURSE_RELEASE_TYPE') ?: 'alpha' - changelogType = 'markdown' - changelog = rootProject.file('CHANGELOG.md') - relations { - requiredDependency 'project-red-core' - requiredDependency 'project-red-integration' - requiredDependency 'project-red-transmission' - } - - // Java/ForgeGradle integrations don't work after 1.18.2 port - addGameVersion "${mc_version}" - addGameVersion "Java ${java_lang_version}" - } -} diff --git a/illumination/build.gradle b/illumination/build.gradle index d56d93fb8..48dfbcb79 100644 --- a/illumination/build.gradle +++ b/illumination/build.gradle @@ -1,6 +1,5 @@ plugins { id 'net.minecraftforge.gradle' - id 'com.matthewprenger.cursegradle' } String mod_id = 'projectred_illumination' @@ -33,22 +32,3 @@ dependencies { implementation project(":core") } - -curseforge { - apiKey = System.getenv('CURSE_TOKEN') ?: 'XXX' - - // Illumination - project { - id = '229046' - releaseType = System.getenv('CURSE_RELEASE_TYPE') ?: 'alpha' - changelogType = 'markdown' - changelog = rootProject.file('CHANGELOG.md') - relations { - requiredDependency 'project-red-core' - } - - // Java/ForgeGradle integrations don't work after 1.18.2 port - addGameVersion "${mc_version}" - addGameVersion "Java ${java_lang_version}" - } -} \ No newline at end of file diff --git a/integration/build.gradle b/integration/build.gradle index b53f7bd2d..dcfd7a01c 100644 --- a/integration/build.gradle +++ b/integration/build.gradle @@ -1,6 +1,5 @@ plugins { id 'net.minecraftforge.gradle' - id 'com.matthewprenger.cursegradle' } String mod_id = 'projectred_integration' @@ -33,22 +32,3 @@ dependencies { implementation project(":core") } - -curseforge { - apiKey = System.getenv('CURSE_TOKEN') ?: 'XXX' - - // Integration - project { - id = '229045' - releaseType = System.getenv('CURSE_RELEASE_TYPE') ?: 'alpha' - changelogType = 'markdown' - changelog = rootProject.file('CHANGELOG.md') - relations { - requiredDependency 'project-red-core' - } - - // Java/ForgeGradle integrations don't work after 1.18.2 port - addGameVersion "${mc_version}" - addGameVersion "Java ${java_lang_version}" - } -} diff --git a/settings.gradle b/settings.gradle index bc5405e50..3a042e90a 100644 --- a/settings.gradle +++ b/settings.gradle @@ -9,7 +9,6 @@ pluginManagement { id 'java' id 'maven-publish' id 'net.covers1624.signing' version '1.1.3' apply false - id 'com.matthewprenger.cursegradle' version '1.4.0' apply false id 'net.minecraftforge.gradle' version '5.1.+' apply false id 'org.spongepowered.mixin' version '0.7.+' apply false id 'com.github.johnrengelman.shadow' version '7.1.+' apply false diff --git a/transmission/build.gradle b/transmission/build.gradle index f537527ba..5c2703cef 100644 --- a/transmission/build.gradle +++ b/transmission/build.gradle @@ -1,6 +1,5 @@ plugins { id 'net.minecraftforge.gradle' - id 'com.matthewprenger.cursegradle' } apply plugin: 'net.minecraftforge.gradle' @@ -35,22 +34,3 @@ dependencies { implementation project(":core") } - -curseforge { - apiKey = System.getenv('CURSE_TOKEN') ?: 'XXX' - - // Transmission - project { - id = '478939' - releaseType = System.getenv('CURSE_RELEASE_TYPE') ?: 'alpha' - changelogType = 'markdown' - changelog = rootProject.file('CHANGELOG.md') - relations { - requiredDependency 'project-red-core' - } - - // Java/ForgeGradle integrations don't work after 1.18.2 port - addGameVersion "${mc_version}" - addGameVersion "Java ${java_lang_version}" - } -} \ No newline at end of file From 98135668f32ddbc19f5d9aa56f1eba8d9c3f19a9 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Tue, 24 Dec 2024 14:13:21 -0500 Subject: [PATCH 23/31] ci: publish to modrinth (cherry picked from commit ed8d53f1a39d5cd8fc4c00cae8a2e3d2adfb6eec) --- .github/requirements.txt | 1 + .github/workflows/publish.yaml | 67 ++++++++++++++++++++++++++++------ 2 files changed, 57 insertions(+), 11 deletions(-) diff --git a/.github/requirements.txt b/.github/requirements.txt index df821f8d5..32725af06 100644 --- a/.github/requirements.txt +++ b/.github/requirements.txt @@ -1,2 +1,3 @@ fire==0.4.0 curseuploadpy @ git+https://github.com/MrTJP/curseuploadpy.git@dev +modrinthpy @ git+https://github.com/MrTJP/modrinthpy.git@dev diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index ce3d864d7..a3b888c9a 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -32,26 +32,26 @@ jobs: case $release_type in "release") publish_maven=true - publish_curse=true + publish_launchers=true publish_gh_release=true version_format="{major}.{minor}.{patch}" ;; "beta") publish_maven=true - publish_curse=true + publish_launchers=true publish_gh_release=false version_format="{major}.{minor}.{patch}-beta+{increment}" ;; "alpha") publish_maven=true - publish_curse=false + publish_launchers=false publish_gh_release=false version_format="{major}.{minor}.{patch}-alpha+{increment}" ;; *) echo "::warning::Unknown release type: $release_type" publish_maven=false - publish_curse=false + publish_launchers=false publish_gh_release=false version_format="{major}.{minor}.{patch}-$release_type+{increment}" esac @@ -61,7 +61,7 @@ jobs: echo "release_channel=$release_channel" >> $GITHUB_OUTPUT echo "release_type=$release_type" >> $GITHUB_OUTPUT echo "publish_maven=$publish_maven" >> $GITHUB_OUTPUT - echo "publish_curse=$publish_curse" >> $GITHUB_OUTPUT + echo "publish_launchers=$publish_launchers" >> $GITHUB_OUTPUT echo "publish_gh_release=$publish_gh_release" >> $GITHUB_OUTPUT echo "version_format=$version_format" >> $GITHUB_OUTPUT echo "tag_format=$tag_format" >> $GITHUB_OUTPUT @@ -127,16 +127,17 @@ jobs: MAVEN_USER: ${{ secrets.MAVEN_USER }} MAVEN_PASS: ${{ secrets.MAVEN_PASS }} - - name: Curse publish - if: ${{ steps.release_type.outputs.publish_curse == 'true' }} + - name: Publish to Curse + if: ${{ steps.release_type.outputs.publish_launchers == 'true' }} run: | # Base args for all modules COMMON_ARGS=( \ - -k $CURSE_TOKEN \ - -rt $CURSE_RELEASE_TYPE \ + -k $API_TOKEN \ + -rt $RELEASE_TYPE \ -v 'Java 17' \ -v 1.20.1 \ -v Forge \ + -v NeoForge \ -c ./CHANGELOG.md \ --required-dep codechicken-lib-1-8 \ --required-dep cb-multipart \ @@ -164,8 +165,52 @@ jobs: python -m curseuploadpy "${MODULE_ARGS[@]}" -p 478939 -f transmission/build/libs/*-transmission.jar env: - CURSE_RELEASE_TYPE: ${{ steps.release_type.outputs.release_type }} - CURSE_TOKEN: ${{ secrets.CURSE_TOKEN }} + RELEASE_TYPE: ${{ steps.release_type.outputs.release_type }} + API_TOKEN: ${{ secrets.CURSE_TOKEN }} + + + - name: Publish to Modrinth + if: ${{ steps.release_type.outputs.publish_launchers == 'true' }} + run: | + # Base args for all modules + COMMON_ARGS=( \ + -k $API_TOKEN \ + create-version \ + -v "$MOD_VERSION" \ + -c ./CHANGELOG.md \ + -gv 1.20.1 \ + -vt $RELEASE_TYPE \ + -l forge \ + -l neoforge \ + --required-dep codechicken-lib \ + --required-dep cb-multipart \ + ) + + # All submodules need PR Core + MODULE_ARGS=( \ + "${COMMON_ARGS[@]}" \ + --required-dep project-red-core \ + ) + + # Fabrication is special and also needs Integration and Transmission + FAB_ARGS=( \ + "${MODULE_ARGS[@]}" \ + --required-dep project-red-integration \ + --required-dep project-red-transmission \ + ) + + python -m modrinthpy "${COMMON_ARGS[@]}" -p project-red-core -n "Project Red Core v$MOD_VERSION" -f core/build/libs/*-core.jar + python -m modrinthpy "${MODULE_ARGS[@]}" -p project-red-expansion -n "Project Red Expansion v$MOD_VERSION" -f expansion/build/libs/*-expansion.jar + python -m modrinthpy "${MODULE_ARGS[@]}" -p project-red-exploration -n "Project Red Exploration v$MOD_VERSION" -f exploration/build/libs/*-exploration.jar + python -m modrinthpy "${FAB_ARGS[@]}" -p project-red-fabrication -n "Project Red Fabrication v$MOD_VERSION" -f fabrication/build/libs/*-fabrication.jar + python -m modrinthpy "${MODULE_ARGS[@]}" -p project-red-illumination -n "Project Red Illumination v$MOD_VERSION" -f illumination/build/libs/*-illumination.jar + python -m modrinthpy "${MODULE_ARGS[@]}" -p project-red-integration -n "Project Red Integration v$MOD_VERSION" -f integration/build/libs/*-integration.jar + python -m modrinthpy "${MODULE_ARGS[@]}" -p project-red-transmission -n "Project Red Transmission v$MOD_VERSION" -f transmission/build/libs/*-transmission.jar + + env: + RELEASE_TYPE: ${{ steps.release_type.outputs.release_type }} + API_TOKEN: ${{ secrets.MODRINTH_TOKEN }} + MOD_VERSION: ${{ steps.versioning.outputs.version }} - name: Tag and Release if: ${{ steps.release_type.outputs.publish_gh_release == 'true' }} From 46c6669bceb42ad4484f6cf4f8242348544f466e Mon Sep 17 00:00:00 2001 From: MrTJP Date: Tue, 24 Dec 2024 17:59:15 -0500 Subject: [PATCH 24/31] fix: photomask set creative-only shortcut working in survival (cherry picked from commit cb9ea1d264f790a0ae98a0a47414cc3f70b2873c) --- .../fabrication/item/ICBlueprintItem.java | 18 +++++++++------ .../fabrication/item/PhotomaskSetItem.java | 22 +++++++++++++------ 2 files changed, 26 insertions(+), 14 deletions(-) diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/ICBlueprintItem.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/ICBlueprintItem.java index 8bfb3b685..4ebe2d6d6 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/item/ICBlueprintItem.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/item/ICBlueprintItem.java @@ -38,22 +38,26 @@ public void appendHoverText(ItemStack stack, @Nullable Level p_77624_2_, List Date: Tue, 24 Dec 2024 19:39:22 -0500 Subject: [PATCH 25/31] fix: silver and tin ores not respecting silk touch (cherry picked from commit ea4e9f302f7643d042e449896ef296c552edc909) --- .../9edd3baac41f9bc21260cb68f9502d388c6d64ae | 10 +++---- .../blocks/deepslate_silver_ore.json | 28 +++++++++++++++++-- .../loot_tables/blocks/deepslate_tin_ore.json | 28 +++++++++++++++++-- .../loot_tables/blocks/silver_ore.json | 28 +++++++++++++++++-- .../loot_tables/blocks/tin_ore.json | 28 +++++++++++++++++-- .../data/ExplorationLootTableProvider.java | 8 +++--- 6 files changed, 113 insertions(+), 17 deletions(-) diff --git a/exploration/src/main/generated/.cache/9edd3baac41f9bc21260cb68f9502d388c6d64ae b/exploration/src/main/generated/.cache/9edd3baac41f9bc21260cb68f9502d388c6d64ae index af74719a5..f885e393a 100644 --- a/exploration/src/main/generated/.cache/9edd3baac41f9bc21260cb68f9502d388c6d64ae +++ b/exploration/src/main/generated/.cache/9edd3baac41f9bc21260cb68f9502d388c6d64ae @@ -1,4 +1,4 @@ -// 1.19.2 2025-01-21T11:24:04.267213 ProjectRed-Exploration Loot Tables +// 1.19.2 2025-01-21T11:44:26.54136 ProjectRed-Exploration Loot Tables f377cd52869f1bb40758dc52113c67c61d878b62 data/projectred_exploration/loot_tables/blocks/basalt.json 6b10d48608a3129d5d7885f5430a1f1e15b1a801 data/projectred_exploration/loot_tables/blocks/basalt_brick.json 0208b3852855ab1b7d0729980dcde806b2b17f00 data/projectred_exploration/loot_tables/blocks/basalt_brick_wall.json @@ -9,8 +9,8 @@ f377cd52869f1bb40758dc52113c67c61d878b62 data/projectred_exploration/loot_tables e2ae109c6659c7709c28da431a674eb8c607bc6b data/projectred_exploration/loot_tables/blocks/deepslate_peridot_ore.json ce59282023621005bfe023f7e7649eb55df8df20 data/projectred_exploration/loot_tables/blocks/deepslate_ruby_ore.json 90743dedec7a4cda562b906c4bb361806e25bd50 data/projectred_exploration/loot_tables/blocks/deepslate_sapphire_ore.json -a7a596bb57108e065423cddb5a459c227f4bc9f1 data/projectred_exploration/loot_tables/blocks/deepslate_silver_ore.json -ba435c351d46b69a1d0e8494f2061817f17f1621 data/projectred_exploration/loot_tables/blocks/deepslate_tin_ore.json +2c8b823513399fc72f285df091a59dca9efe7d23 data/projectred_exploration/loot_tables/blocks/deepslate_silver_ore.json +6e2af0d13cd64325734e20b72cb13cc288a5763c data/projectred_exploration/loot_tables/blocks/deepslate_tin_ore.json 1f80078186126007a55ffa3312150b02f8bcb40b data/projectred_exploration/loot_tables/blocks/electrotine_block.json e3736d3df27fe6b845e109135612ed9856c8a0eb data/projectred_exploration/loot_tables/blocks/electrotine_block_wall.json 08fc1f6cd5af8e816cc6b635407a64f7659978ce data/projectred_exploration/loot_tables/blocks/electrotine_ore.json @@ -30,6 +30,6 @@ c4cb08e8ea7e7e32fb4aa2c4c484920e7a9019f2 data/projectred_exploration/loot_tables 89016b6428da9530bd1ec46b96ab793e87edffe9 data/projectred_exploration/loot_tables/blocks/sapphire_block_wall.json e80459901675826889d9de14de57bc829e62fac5 data/projectred_exploration/loot_tables/blocks/sapphire_ore.json 65989d0c279840b6a7751351c3a5d898802705ae data/projectred_exploration/loot_tables/blocks/silver_block.json -a7a596bb57108e065423cddb5a459c227f4bc9f1 data/projectred_exploration/loot_tables/blocks/silver_ore.json +34854d2e01bede100f7e67cd9507d02475f6d6f8 data/projectred_exploration/loot_tables/blocks/silver_ore.json dcc50b58d079ebca41e9c2661fc58a999653290c data/projectred_exploration/loot_tables/blocks/tin_block.json -ba435c351d46b69a1d0e8494f2061817f17f1621 data/projectred_exploration/loot_tables/blocks/tin_ore.json +9d420b3e2f3226c2a7709487849463eed2f53675 data/projectred_exploration/loot_tables/blocks/tin_ore.json diff --git a/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/deepslate_silver_ore.json b/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/deepslate_silver_ore.json index bae6cf3a6..40bacd9a9 100644 --- a/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/deepslate_silver_ore.json +++ b/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/deepslate_silver_ore.json @@ -5,8 +5,32 @@ "bonus_rolls": 0.0, "entries": [ { - "type": "minecraft:item", - "name": "projectred_exploration:raw_silver" + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "projectred_exploration:deepslate_silver_ore" + }, + { + "type": "minecraft:item", + "name": "projectred_exploration:raw_silver" + } + ] } ], "rolls": 1.0 diff --git a/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/deepslate_tin_ore.json b/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/deepslate_tin_ore.json index bf773e297..bd195dc7f 100644 --- a/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/deepslate_tin_ore.json +++ b/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/deepslate_tin_ore.json @@ -5,8 +5,32 @@ "bonus_rolls": 0.0, "entries": [ { - "type": "minecraft:item", - "name": "projectred_exploration:raw_tin" + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "projectred_exploration:deepslate_tin_ore" + }, + { + "type": "minecraft:item", + "name": "projectred_exploration:raw_tin" + } + ] } ], "rolls": 1.0 diff --git a/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/silver_ore.json b/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/silver_ore.json index bae6cf3a6..b60cc90ed 100644 --- a/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/silver_ore.json +++ b/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/silver_ore.json @@ -5,8 +5,32 @@ "bonus_rolls": 0.0, "entries": [ { - "type": "minecraft:item", - "name": "projectred_exploration:raw_silver" + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "projectred_exploration:silver_ore" + }, + { + "type": "minecraft:item", + "name": "projectred_exploration:raw_silver" + } + ] } ], "rolls": 1.0 diff --git a/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/tin_ore.json b/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/tin_ore.json index bf773e297..164eb194a 100644 --- a/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/tin_ore.json +++ b/exploration/src/main/generated/data/projectred_exploration/loot_tables/blocks/tin_ore.json @@ -5,8 +5,32 @@ "bonus_rolls": 0.0, "entries": [ { - "type": "minecraft:item", - "name": "projectred_exploration:raw_tin" + "type": "minecraft:alternatives", + "children": [ + { + "type": "minecraft:item", + "conditions": [ + { + "condition": "minecraft:match_tool", + "predicate": { + "enchantments": [ + { + "enchantment": "minecraft:silk_touch", + "levels": { + "min": 1 + } + } + ] + } + } + ], + "name": "projectred_exploration:tin_ore" + }, + { + "type": "minecraft:item", + "name": "projectred_exploration:raw_tin" + } + ] } ], "rolls": 1.0 diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationLootTableProvider.java b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationLootTableProvider.java index 6fb06e8e0..8e033ffe0 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationLootTableProvider.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/data/ExplorationLootTableProvider.java @@ -31,10 +31,10 @@ protected void registerTables() { register(DEEPSLATE_PERIDOT_ORE_BLOCK.get(), valueRangeOrSilkWithFortune(DEEPSLATE_PERIDOT_ORE_BLOCK.get(), PERIDOT_ITEM.get(), 1, 2)); register(ELECTROTINE_ORE_BLOCK.get(), valueRangeOrSilkWithFortune(ELECTROTINE_ORE_BLOCK.get(), ELECTROTINE_DUST_ITEM.get(), 1, 8)); register(DEEPSLATE_ELECTROTINE_ORE_BLOCK.get(), valueRangeOrSilkWithFortune(DEEPSLATE_ELECTROTINE_ORE_BLOCK.get(), ELECTROTINE_DUST_ITEM.get(), 1, 8)); - register(TIN_ORE_BLOCK.get(), singleItem(RAW_TIN_ITEM.get())); - register(DEEPSLATE_TIN_ORE_BLOCK.get(), singleItem(RAW_TIN_ITEM.get())); - register(SILVER_ORE_BLOCK.get(), singleItem(RAW_SILVER_ITEM.get())); - register(DEEPSLATE_SILVER_ORE_BLOCK.get(), singleItem(RAW_SILVER_ITEM.get())); + register(TIN_ORE_BLOCK.get(), singleItemOrSilk(TIN_ORE_BLOCK.get(), RAW_TIN_ITEM.get())); + register(DEEPSLATE_TIN_ORE_BLOCK.get(), singleItemOrSilk(DEEPSLATE_TIN_ORE_BLOCK.get(), RAW_TIN_ITEM.get())); + register(SILVER_ORE_BLOCK.get(), singleItemOrSilk(SILVER_ORE_BLOCK.get(), RAW_SILVER_ITEM.get())); + register(DEEPSLATE_SILVER_ORE_BLOCK.get(), singleItemOrSilk(DEEPSLATE_SILVER_ORE_BLOCK.get(), RAW_SILVER_ITEM.get())); // Decorative Blocks register(MARBLE_BLOCK.get(), singleItem(MARBLE_BLOCK.get())); From a097a7d1f98f55584117e6414745c4a6d63b8b77 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Fri, 27 Dec 2024 09:54:15 -0500 Subject: [PATCH 26/31] fix: framed power wires not connecting on placement (cherry picked from commit b2fb003312f836801dbfe6345612f78cacaff961) --- .../java/mrtjp/projectred/transmission/part/FramedPowerWire.java | 1 + 1 file changed, 1 insertion(+) diff --git a/transmission/src/main/java/mrtjp/projectred/transmission/part/FramedPowerWire.java b/transmission/src/main/java/mrtjp/projectred/transmission/part/FramedPowerWire.java index bb9e2f93b..4b30f5c74 100644 --- a/transmission/src/main/java/mrtjp/projectred/transmission/part/FramedPowerWire.java +++ b/transmission/src/main/java/mrtjp/projectred/transmission/part/FramedPowerWire.java @@ -67,6 +67,7 @@ private void recacheConductors() { //region Connections @Override public void maskChangeEvent(boolean internalChange, boolean externalChange) { + super.maskChangeEvent(internalChange, externalChange); // Invalidate even if conns have not changed (adjacent conductors may have moved, etc) cacheInvalid = true; } From 10a8641399e970a72aef135ca4a064b4ae96e512 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Fri, 27 Dec 2024 11:16:11 -0500 Subject: [PATCH 27/31] fix: frame motors starting moves while already in motion (cherry picked from commit 8cbc17efe6fd151d44c230a7b79652ab2bfd783f) --- .../mrtjp/projectred/expansion/tile/BaseFrameMoverTile.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseFrameMoverTile.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseFrameMoverTile.java index 59dc543c9..72388be3d 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseFrameMoverTile.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseFrameMoverTile.java @@ -59,7 +59,9 @@ protected void beginMove() { assert level != null; BlockPos blockInFront = getBlockPos().relative(Direction.values()[getFrontSide()]); if (level.isEmptyBlock(blockInFront)) return; + // If target block already moving, or if we are moving, we cannot start a new move if (MovementManager.getInstance(level).getMovementInfo(blockInFront).isMoving()) return; + if (MovementManager.getInstance(level).getMovementInfo(getBlockPos()).isMoving()) return; assert ProjectRedAPI.expansionAPI != null; Set blocks = ProjectRedAPI.expansionAPI.getStructure(level, blockInFront, getBlockPos()); @@ -144,13 +146,13 @@ public int weakPowerLevel(int side, int mask) { @Override public boolean canGrab(Level w, BlockPos pos, Direction side) { - // If this block is moved, it will come along with whatever structure is on its front face + // If this block is moved, it will bring along whatever structure is touching its front face return side.ordinal() == getFrontSide(); } @Override public boolean canBeGrabbed(Level w, BlockPos pos, Direction side) { - // If a structure on the front face is moved by something else, it may not bring this block along + // If a structure touching front face is moved by something else, it may not bring this block along return side.ordinal() != getFrontSide(); } From c593c580c87292ac789750b096b770f270674b46 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Sat, 28 Dec 2024 18:54:32 -0500 Subject: [PATCH 28/31] chore: update readme links (cherry picked from commit 8611486982437cf26b0cb9d7d659c98cad71f219) --- README.md | 26 ++++++++++++++++++++------ 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index cbdb9a580..934aa7cb6 100644 --- a/README.md +++ b/README.md @@ -2,12 +2,26 @@ A Minecraft Forge mod all about Redstone circuity. -| MC Version | Branch | Latest Release | Latest Beta | Status | -|:----------:|-------------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| -| 1.19.2 | `main` | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.19-release.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.19-beta.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | Active | -| 1.18.2 | `main/1.18` | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.18-release.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.18-beta.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | Maintenance | -| 1.16.5 | `main/1.16` | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.16-release.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.16-beta.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | End-of-Life | -| 1.15.2 | `main/1.15` | N/A | [![badge](https://img.shields.io/endpoint?url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.15-beta.json)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | End-of-Life | + +## Latest Versions +| MC Version | Branch | Latest Release | Latest Beta | Status | +|:----------:|----------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------|-------------| +| 1.20.1 | `1.20.1` | ![badge](https://img.shields.io/endpoint?logo=.&url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.20.1-release.json) | ![badge](https://img.shields.io/endpoint?logo=.&url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.20.1-beta.json) | Active | +| 1.19.2 | `1.19.x` | ![badge](https://img.shields.io/endpoint?logo=.&url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.19-release.json) | ![badge](https://img.shields.io/endpoint?logo=.&url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.19-beta.json) | Maintenance | +| 1.18.2 | `1.18.x` | ![badge](https://img.shields.io/endpoint?logo=.&url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.18-release.json) | ![badge](https://img.shields.io/endpoint?logo=.&url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.18-beta.json) | Maintenance | +| 1.16.5 | `1.16.x` | ![badge](https://img.shields.io/endpoint?logo=.&url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.16-release.json) | ![badge](https://img.shields.io/endpoint?logo=.&url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.16-beta.json) | End-of-Life | +| 1.15.2 | `1.15.x` | N/A | ![badge](https://img.shields.io/endpoint?logo=.&url=https://gist.githubusercontent.com/MrTJP/3ef501bc64c896a86fd706dfea8ba367/raw/projectred-badge-1.15-beta.json) | End-of-Life | + +## Links +| Module | Modrinth | CurseForge | +|--------------|-------------------------------------------------------------------------------------------------------------------------------------------------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Core | [![Static Badge](https://img.shields.io/badge/Project_Red-Core-green?logo=modrinth)](https://modrinth.com/mod/project-red-core) | [![Static Badge](https://img.shields.io/badge/Project_Red-Core-orange?logo=curseforge)](https://www.curseforge.com/minecraft/mc-mods/project-red-core) | +| Expansion | [![Static Badge](https://img.shields.io/badge/Project_Red-Expansion-green?logo=modrinth)](https://modrinth.com/mod/project-red-expansion) | [![Static Badge](https://img.shields.io/badge/Project_Red-Expansion-orange?logo=curseforge)](https://www.curseforge.com/minecraft/mc-mods/project-red-expansion) | +| Exploration | [![Static Badge](https://img.shields.io/badge/Project_Red-Exploration-green?logo=modrinth)](https://modrinth.com/mod/project-red-exploration) | [![Static Badge](https://img.shields.io/badge/Project_Red-Exploration-orange?logo=curseforge)](https://www.curseforge.com/minecraft/mc-mods/project-red-exploration) | +| Fabrication | [![Static Badge](https://img.shields.io/badge/Project_Red-Fabrication-green?logo=modrinth)](https://modrinth.com/mod/project-red-fabrication) | [![Static Badge](https://img.shields.io/badge/Project_Red-Fabrication-orange?logo=curseforge)](https://www.curseforge.com/minecraft/mc-mods/project-red-fabrication) | +| Illumination | [![Static Badge](https://img.shields.io/badge/Project_Red-Illumination-green?logo=modrinth)](https://modrinth.com/mod/project-red-illumination) | [![Static Badge](https://img.shields.io/badge/Project_Red-Illumination-orange?logo=curseforge)](https://www.curseforge.com/minecraft/mc-mods/project-red-illumination) | +| Integration | [![Static Badge](https://img.shields.io/badge/Project_Red-Integration-green?logo=modrinth)](https://modrinth.com/mod/project-red-integration) | [![Static Badge](https://img.shields.io/badge/Project_Red-Integration-orange?logo=curseforge)](https://www.curseforge.com/minecraft/mc-mods/project-red-integration) | +| Transmission | [![Static Badge](https://img.shields.io/badge/Project_Red-Transmission-green?logo=modrinth)](https://modrinth.com/mod/project-red-transmission) | [![Static Badge](https://img.shields.io/badge/Project_Red-Transmission-orange?logo=curseforge)](https://www.curseforge.com/minecraft/mc-mods/project-red-transmission) | ## Development Environment Setup From 2b53d8fec27738dc85f9bf993912f76611f66662 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Thu, 2 Jan 2025 12:49:04 -0500 Subject: [PATCH 29/31] internal: clean up redui container screen rendering (cherry picked from commit ee8d8db98dbbf9e55dd6ec08f0bbd28b7597ae8c) --- .../redui/RedUIContainerScreen.java | 29 ++++++++++++------- 1 file changed, 19 insertions(+), 10 deletions(-) diff --git a/core/src/main/java/mrtjp/projectred/redui/RedUIContainerScreen.java b/core/src/main/java/mrtjp/projectred/redui/RedUIContainerScreen.java index 402a56324..a0212ce9d 100644 --- a/core/src/main/java/mrtjp/projectred/redui/RedUIContainerScreen.java +++ b/core/src/main/java/mrtjp/projectred/redui/RedUIContainerScreen.java @@ -58,25 +58,34 @@ public void render(PoseStack stack, int mouseX, int mouseY, float partialFrame) return false; }, false); - RenderSystem.enableDepthTest(); // Nodes render out of order, so depth test is needed - // Render semi-transparent grey background - int x = getScreenFrame().x(); - int y = getScreenFrame().y(); - fillGradient(stack, x, y, x + getScreenFrame().width(), y + getScreenFrame().height(), -1072689136, -804253680); - - // Render background - drawBackForSubtree(stack, new Point(mouseX, mouseY), partialFrame); - // Sandwich ContainerScreen's default rendering between RedUI's foreground and background rendering + renderBackground(stack); + + // Super render call, which does the following: + // - Call renderBg(), which is typically overridden to draw main background + // - Fire ContainerScreenEvent.Render.Background client event + // - Disable depth test + // - Render each widget in renderables list (call Screen#render()) + // - Render each slot and its highlight (via renderSlot() and renderSlotHighlight()) + // - Render labels (renderLabels()) + // - Fire ContainerScreenEvent.Render.Foreground client event + // - Render picked up item on cursor (via renderFloatingItem()) + // - Render snapback items (via renderFloatingItem()) + // - Enable depth test super.render(stack, mouseX, mouseY, partialFrame); + + // Render tooltips renderTooltip(stack, mouseX, mouseY); + // Render foreground drawFrontForSubtree(stack, new Point(mouseX, mouseY), partialFrame); } @Override protected void renderBg(PoseStack stack, float partialFrame, int mouseX, int mouseY) { - // We render through RedUI's render methods + // Draw back of all nodes in RedUI tree (this class is expected to provide the main background via RedUI's render call) + RenderSystem.enableDepthTest(); // Nodes render out of order, so depth test is needed + drawBackForSubtree(stack, new Point(mouseX, mouseY), partialFrame); } @Override From 3a5f4958d14303848e59284d39b5790a9525b774 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Fri, 3 Jan 2025 14:44:17 -0500 Subject: [PATCH 30/31] refactor: rename classes to match official mappings (cherry picked from commit 8f1c41121340c082138ab1df1a95c00b55dec056) --- .../mrtjp/projectred/core/CoreNetwork.java | 14 +++---- .../core/block/ElectrotineGeneratorBlock.java | 6 +-- .../core/block/ProjectRedBlock.java | 18 ++++----- .../inventory/ElectrotineGeneratorScreen.java | 10 ++--- .../projectred/core/init/CoreBlocks.java | 6 +-- .../projectred/core/init/CoreClientInit.java | 4 +- .../mrtjp/projectred/core/init/CoreMenus.java | 6 +-- ...{BaseInventory.java => BaseContainer.java} | 6 +-- ...r.java => BasePoweredBlockEntityMenu.java} | 9 ++--- ...ner.java => ElectrotineGeneratorMenu.java} | 20 +++++----- ...e.java => BaseConnectableBlockEntity.java} | 4 +- ...dTile.java => BasePoweredBlockEntity.java} | 8 ++-- ...a => ElectrotineGeneratorBlockEntity.java} | 17 ++++---- ...tTile.java => IBlockEventBlockEntity.java} | 2 +- ...Tile.java => IConnectableBlockEntity.java} | 2 +- .../core/tile/IOrientableBlockEntity.java | 2 +- ...e.java => IPacketReceiverBlockEntity.java} | 2 +- ...eredTile.java => IPoweredBlockEntity.java} | 6 +-- ...edTile.java => ProjectRedBlockEntity.java} | 4 +- .../expansion/block/AutoCrafterBlock.java | 6 +-- .../expansion/block/BatteryBoxBlock.java | 14 +++---- .../expansion/block/BlockBreakerBlock.java | 2 +- .../expansion/block/ChargingBenchBlock.java | 6 +-- .../expansion/block/DeployerBlock.java | 2 +- .../expansion/block/FireStarterBlock.java | 10 ++--- .../expansion/block/FrameActuatorBlock.java | 6 +-- .../expansion/block/FrameMotorBlock.java | 6 +-- .../expansion/block/ProjectBenchBlock.java | 6 +-- .../expansion/block/TransposerBlock.java | 2 +- .../screen/inventory/AutoCrafterScreen.java | 6 +-- .../screen/inventory/BatteryBoxScreen.java | 6 +-- .../screen/inventory/ChargingBenchScreen.java | 6 +-- .../gui/screen/inventory/DeployerScreen.java | 6 +-- .../screen/inventory/ProjectBenchScreen.java | 10 ++--- .../expansion/init/ExpansionBlocks.java | 40 +++++++++---------- .../expansion/init/ExpansionClientInit.java | 14 +++---- .../expansion/init/ExpansionMenus.java | 20 +++++----- ...terContainer.java => AutoCrafterMenu.java} | 20 +++++----- ...ineContainer.java => BaseMachineMenu.java} | 10 ++--- ...yBoxContainer.java => BatteryBoxMenu.java} | 20 +++++----- ...hContainer.java => ChargingBenchMenu.java} | 20 +++++----- ...erContainerMenu.java => DeployerMenu.java} | 12 +++--- ...chContainer.java => ProjectBenchMenu.java} | 20 +++++----- ...rTile.java => AutoCrafterBlockEntity.java} | 18 ++++----- ...ceTile.java => BaseDeviceBlockEntity.java} | 6 +-- ...le.java => BaseFrameMoverBlockEntity.java} | 4 +- ...eTile.java => BaseMachineBlockEntity.java} | 4 +- .../tile/BasePneumaticDeviceBlockEntity.java | 6 +-- ...oxTile.java => BatteryBoxBlockEntity.java} | 14 +++---- .../tile/BlockBreakerBlockEntity.java | 2 +- ...ile.java => ChargingBenchBlockEntity.java} | 14 +++---- .../expansion/tile/DeployerBlockEntity.java | 14 +++---- ...rTile.java => FireStarterBlockEntity.java} | 6 +-- ...ile.java => FrameActuatorBlockEntity.java} | 6 +-- ...orTile.java => FrameMotorBlockEntity.java} | 6 +-- ...le.java => LowLoadPoweredBlockEntity.java} | 6 +-- ...Tile.java => ProjectBenchBlockEntity.java} | 28 ++++++------- .../expansion/tile/TransposerBlockEntity.java | 2 +- .../gui/screen/inventory/BackpackScreen.java | 6 +-- .../init/ExplorationClientInit.java | 4 +- .../exploration/init/ExplorationMenus.java | 6 +-- .../inventory/BackpackInventory.java | 4 +- ...ckpackContainer.java => BackpackMenu.java} | 8 ++-- .../exploration/item/BackpackItem.java | 8 ++-- .../fabrication/block/ICWorkbenchBlock.java | 6 +-- .../block/LithographyTableBlock.java | 6 +-- .../block/PackagingTableBlock.java | 6 +-- .../fabrication/block/PlottingTableBlock.java | 6 +-- .../gui/screen/ICWorkbenchScreen.java | 8 ++-- .../inventory/LithographyTableScreen.java | 6 +-- .../inventory/PackagingTableScreen.java | 6 +-- .../screen/inventory/PlottingTableScreen.java | 6 +-- .../fabrication/init/FabricationBlocks.java | 24 +++++------ .../init/FabricationClientInit.java | 6 +-- .../fabrication/init/FabricationMenus.java | 18 ++++----- ...ainer.java => FabricationMachineMenu.java} | 10 ++--- ...ntainer.java => LithographyTableMenu.java} | 18 ++++----- ...Container.java => PackagingTableMenu.java} | 18 ++++----- ...eContainer.java => PlottingTableMenu.java} | 18 ++++----- ...ava => FabricationMachineBlockEntity.java} | 6 +-- ...hTile.java => ICWorkbenchBlockEntity.java} | 12 +++--- ....java => LithographyTableBlockEntity.java} | 14 +++---- ...le.java => PackagingTableBlockEntity.java} | 16 ++++---- ...ile.java => PlottingTableBlockEntity.java} | 14 +++---- .../illumination/BlockLightType.java | 13 ++++-- .../illumination/block/IllumarLampBlock.java | 5 +-- ...va => IllumarLampBlockEntityRenderer.java} | 10 ++--- .../init/IlluminationClientInit.java | 4 +- ...pTile.java => IllumarLampBlockEntity.java} | 8 ++-- .../tile/IllumarSmartLampBlockEntity.java | 4 +- 90 files changed, 427 insertions(+), 429 deletions(-) rename core/src/main/java/mrtjp/projectred/core/inventory/{BaseInventory.java => BaseContainer.java} (94%) rename core/src/main/java/mrtjp/projectred/core/inventory/container/{BasePoweredTileContainer.java => BasePoweredBlockEntityMenu.java} (80%) rename core/src/main/java/mrtjp/projectred/core/inventory/container/{ElectrotineGeneratorContainer.java => ElectrotineGeneratorMenu.java} (85%) rename core/src/main/java/mrtjp/projectred/core/tile/{BaseConnectableTile.java => BaseConnectableBlockEntity.java} (91%) rename core/src/main/java/mrtjp/projectred/core/tile/{BasePoweredTile.java => BasePoweredBlockEntity.java} (80%) rename core/src/main/java/mrtjp/projectred/core/tile/{ElectrotineGeneratorTile.java => ElectrotineGeneratorBlockEntity.java} (94%) rename core/src/main/java/mrtjp/projectred/core/tile/{IBlockEventTile.java => IBlockEventBlockEntity.java} (98%) rename core/src/main/java/mrtjp/projectred/core/tile/{IConnectableTile.java => IConnectableBlockEntity.java} (99%) rename core/src/main/java/mrtjp/projectred/core/tile/{IPacketReceiverTile.java => IPacketReceiverBlockEntity.java} (95%) rename core/src/main/java/mrtjp/projectred/core/tile/{IPoweredTile.java => IPoweredBlockEntity.java} (87%) rename core/src/main/java/mrtjp/projectred/core/tile/{ProjectRedTile.java => ProjectRedBlockEntity.java} (94%) rename expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/{AutoCrafterContainer.java => AutoCrafterMenu.java} (86%) rename expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/{BaseMachineContainer.java => BaseMachineMenu.java} (64%) rename expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/{BatteryBoxContainer.java => BatteryBoxMenu.java} (84%) rename expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/{ChargingBenchContainer.java => ChargingBenchMenu.java} (86%) rename expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/{DeployerContainerMenu.java => DeployerMenu.java} (85%) rename expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/{ProjectBenchContainer.java => ProjectBenchMenu.java} (90%) rename expansion/src/main/java/mrtjp/projectred/expansion/tile/{AutoCrafterTile.java => AutoCrafterBlockEntity.java} (91%) rename expansion/src/main/java/mrtjp/projectred/expansion/tile/{BaseDeviceTile.java => BaseDeviceBlockEntity.java} (95%) rename expansion/src/main/java/mrtjp/projectred/expansion/tile/{BaseFrameMoverTile.java => BaseFrameMoverBlockEntity.java} (95%) rename expansion/src/main/java/mrtjp/projectred/expansion/tile/{BaseMachineTile.java => BaseMachineBlockEntity.java} (96%) rename expansion/src/main/java/mrtjp/projectred/expansion/tile/{BatteryBoxTile.java => BatteryBoxBlockEntity.java} (95%) rename expansion/src/main/java/mrtjp/projectred/expansion/tile/{ChargingBenchTile.java => ChargingBenchBlockEntity.java} (94%) rename expansion/src/main/java/mrtjp/projectred/expansion/tile/{FireStarterTile.java => FireStarterBlockEntity.java} (92%) rename expansion/src/main/java/mrtjp/projectred/expansion/tile/{FrameActuatorTile.java => FrameActuatorBlockEntity.java} (62%) rename expansion/src/main/java/mrtjp/projectred/expansion/tile/{FrameMotorTile.java => FrameMotorBlockEntity.java} (67%) rename expansion/src/main/java/mrtjp/projectred/expansion/tile/{LowLoadPoweredTile.java => LowLoadPoweredBlockEntity.java} (87%) rename expansion/src/main/java/mrtjp/projectred/expansion/tile/{ProjectBenchTile.java => ProjectBenchBlockEntity.java} (89%) rename exploration/src/main/java/mrtjp/projectred/exploration/inventory/container/{BackpackContainer.java => BackpackMenu.java} (94%) rename fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/{FabricationMachineContainer.java => FabricationMachineMenu.java} (62%) rename fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/{LithographyTableContainer.java => LithographyTableMenu.java} (85%) rename fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/{PackagingTableContainer.java => PackagingTableMenu.java} (84%) rename fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/{PlottingTableContainer.java => PlottingTableMenu.java} (85%) rename fabrication/src/main/java/mrtjp/projectred/fabrication/tile/{FabricationMachineTile.java => FabricationMachineBlockEntity.java} (93%) rename fabrication/src/main/java/mrtjp/projectred/fabrication/tile/{ICWorkbenchTile.java => ICWorkbenchBlockEntity.java} (94%) rename fabrication/src/main/java/mrtjp/projectred/fabrication/tile/{LithographyTableTile.java => LithographyTableBlockEntity.java} (92%) rename fabrication/src/main/java/mrtjp/projectred/fabrication/tile/{PackagingTableTile.java => PackagingTableBlockEntity.java} (91%) rename fabrication/src/main/java/mrtjp/projectred/fabrication/tile/{PlottingTableTile.java => PlottingTableBlockEntity.java} (89%) rename illumination/src/main/java/mrtjp/projectred/illumination/client/{IllumarLampTileRenderer.java => IllumarLampBlockEntityRenderer.java} (65%) rename illumination/src/main/java/mrtjp/projectred/illumination/tile/{IllumarLampTile.java => IllumarLampBlockEntity.java} (73%) diff --git a/core/src/main/java/mrtjp/projectred/core/CoreNetwork.java b/core/src/main/java/mrtjp/projectred/core/CoreNetwork.java index aebdf8543..0b2a48ab3 100644 --- a/core/src/main/java/mrtjp/projectred/core/CoreNetwork.java +++ b/core/src/main/java/mrtjp/projectred/core/CoreNetwork.java @@ -4,7 +4,7 @@ import codechicken.lib.packet.ICustomPacketHandler; import codechicken.lib.packet.PacketCustom; import codechicken.lib.packet.PacketCustomChannelBuilder; -import mrtjp.projectred.core.tile.IPacketReceiverTile; +import mrtjp.projectred.core.tile.IPacketReceiverBlockEntity; import net.minecraft.client.Minecraft; import net.minecraft.client.multiplayer.ClientPacketListener; import net.minecraft.resources.ResourceLocation; @@ -34,14 +34,14 @@ public static void init() { .build(); } - public static PacketCustom createTileClientPacket(IPacketReceiverTile tile, byte key) { + public static PacketCustom createTileClientPacket(IPacketReceiverBlockEntity tile, byte key) { PacketCustom packet = new PacketCustom(NET_CHANNEL, NET_TILE_PACKET_TO_CLIENT); packet.writePos(tile.getBlockPosition()); packet.writeByte(key); return packet; } - public static PacketCustom createTileServerPacket(IPacketReceiverTile tile, byte key) { + public static PacketCustom createTileServerPacket(IPacketReceiverBlockEntity tile, byte key) { PacketCustom packet = new PacketCustom(NET_CHANNEL, NET_TILE_PACKET_TO_SERVER); packet.writePos(tile.getBlockPosition()); packet.writeByte(key); @@ -65,8 +65,8 @@ public void handlePacket(PacketCustom packet, Minecraft mc, ClientPacketListener private void handleTilePacket(Level world, MCDataInput data) { BlockEntity tile = world.getBlockEntity(data.readPos()); int key = data.readUByte(); - if (tile instanceof IPacketReceiverTile) - ((IPacketReceiverTile) tile).receiveUpdateFromServer(key, data); + if (tile instanceof IPacketReceiverBlockEntity) + ((IPacketReceiverBlockEntity) tile).receiveUpdateFromServer(key, data); } } @@ -87,8 +87,8 @@ public void handlePacket(PacketCustom packet, ServerPlayer sender, ServerGamePac private void handleTilePacket(Level world, MCDataInput data, ServerPlayer sender) { BlockEntity tile = world.getBlockEntity(data.readPos()); int key = data.readUByte(); - if (tile instanceof IPacketReceiverTile) - ((IPacketReceiverTile) tile).receiveUpdateFromClient(key, data, sender); + if (tile instanceof IPacketReceiverBlockEntity) + ((IPacketReceiverBlockEntity) tile).receiveUpdateFromClient(key, data, sender); } } } diff --git a/core/src/main/java/mrtjp/projectred/core/block/ElectrotineGeneratorBlock.java b/core/src/main/java/mrtjp/projectred/core/block/ElectrotineGeneratorBlock.java index b36a3f5e1..930fb5905 100644 --- a/core/src/main/java/mrtjp/projectred/core/block/ElectrotineGeneratorBlock.java +++ b/core/src/main/java/mrtjp/projectred/core/block/ElectrotineGeneratorBlock.java @@ -2,7 +2,7 @@ import codechicken.lib.vec.Rotation; import mrtjp.projectred.core.init.CoreBlocks; -import mrtjp.projectred.core.tile.ElectrotineGeneratorTile; +import mrtjp.projectred.core.tile.ElectrotineGeneratorBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.block.Block; @@ -22,12 +22,12 @@ public ElectrotineGeneratorBlock() { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new ElectrotineGeneratorTile(pos, state); + return new ElectrotineGeneratorBlockEntity(pos, state); } @Override protected BlockEntityType getBlockEntityType() { - return CoreBlocks.ELECTROTINE_GENERATOR_TILE.get(); + return CoreBlocks.ELECTROTINE_GENERATOR_BLOCK_ENTITY.get(); } @Nullable diff --git a/core/src/main/java/mrtjp/projectred/core/block/ProjectRedBlock.java b/core/src/main/java/mrtjp/projectred/core/block/ProjectRedBlock.java index be7a8e44c..cf113da9c 100644 --- a/core/src/main/java/mrtjp/projectred/core/block/ProjectRedBlock.java +++ b/core/src/main/java/mrtjp/projectred/core/block/ProjectRedBlock.java @@ -1,6 +1,6 @@ package mrtjp.projectred.core.block; -import mrtjp.projectred.core.tile.IBlockEventTile; +import mrtjp.projectred.core.tile.IBlockEventBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -45,7 +45,7 @@ public ProjectRedBlock(BlockBehaviour.Properties properties) { public BlockEntityTicker getTicker(Level level, BlockState state, BlockEntityType type) { if (type != getBlockEntityType()) return null; return (level1, pos, state1, tile) -> { - if (tile instanceof IBlockEventTile t) { + if (tile instanceof IBlockEventBlockEntity t) { t.tick(); } }; @@ -54,30 +54,30 @@ public BlockEntityTicker getTicker(Level level, Block @Override public void neighborChanged(BlockState state, Level world, BlockPos pos, Block blockIn, BlockPos neighbor, boolean isMoving) { BlockEntity tile = world.getBlockEntity(pos); - if (tile instanceof IBlockEventTile) ((IBlockEventTile) tile).onNeighborBlockChanged(neighbor); + if (tile instanceof IBlockEventBlockEntity) ((IBlockEventBlockEntity) tile).onNeighborBlockChanged(neighbor); } @Override public void onNeighborChange(BlockState state, LevelReader world, BlockPos pos, BlockPos neighbor) { BlockEntity tile = world.getBlockEntity(pos); - if (tile instanceof IBlockEventTile) ((IBlockEventTile) tile).onNeighborTileChanged(neighbor); + if (tile instanceof IBlockEventBlockEntity) ((IBlockEventBlockEntity) tile).onNeighborTileChanged(neighbor); } @Override public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { BlockEntity tile = world.getBlockEntity(pos); - if (tile instanceof IBlockEventTile) return ((IBlockEventTile) tile).onBlockActivated(player, hand, hit); + if (tile instanceof IBlockEventBlockEntity) return ((IBlockEventBlockEntity) tile).onBlockActivated(player, hand, hit); return InteractionResult.FAIL; //TODO pass? } @Override public void onRemove(BlockState oldState, Level world, BlockPos pos, BlockState newState, boolean isMoving) { BlockEntity tile = world.getBlockEntity(pos); - if (tile instanceof IBlockEventTile) { + if (tile instanceof IBlockEventBlockEntity) { if (oldState.is(newState.getBlock())) { - ((IBlockEventTile) tile).onBlockStateReplaced(newState); + ((IBlockEventBlockEntity) tile).onBlockStateReplaced(newState); } else { - ((IBlockEventTile) tile).onBlockRemoved(); + ((IBlockEventBlockEntity) tile).onBlockRemoved(); } } super.onRemove(oldState, world, pos, newState, isMoving); // Removes tile if no longer valid for new state @@ -86,6 +86,6 @@ public void onRemove(BlockState oldState, Level world, BlockPos pos, BlockState @Override public void setPlacedBy(Level world, BlockPos pos, BlockState state, @Nullable LivingEntity player, ItemStack stack) { BlockEntity tile = world.getBlockEntity(pos); - if (tile instanceof IBlockEventTile) ((IBlockEventTile) tile).onBlockPlaced(player, stack); + if (tile instanceof IBlockEventBlockEntity) ((IBlockEventBlockEntity) tile).onBlockPlaced(player, stack); } } diff --git a/core/src/main/java/mrtjp/projectred/core/gui/screen/inventory/ElectrotineGeneratorScreen.java b/core/src/main/java/mrtjp/projectred/core/gui/screen/inventory/ElectrotineGeneratorScreen.java index 3ad166085..842ff382a 100644 --- a/core/src/main/java/mrtjp/projectred/core/gui/screen/inventory/ElectrotineGeneratorScreen.java +++ b/core/src/main/java/mrtjp/projectred/core/gui/screen/inventory/ElectrotineGeneratorScreen.java @@ -2,7 +2,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; -import mrtjp.projectred.core.inventory.container.ElectrotineGeneratorContainer; +import mrtjp.projectred.core.inventory.container.ElectrotineGeneratorMenu; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; @@ -12,11 +12,11 @@ import static mrtjp.projectred.core.ProjectRedCore.MOD_ID; -public class ElectrotineGeneratorScreen extends RedUIContainerScreen { +public class ElectrotineGeneratorScreen extends RedUIContainerScreen { public static final ResourceLocation BACKGROUND = new ResourceLocation(MOD_ID, "textures/gui/electrotine_generator.png"); - public ElectrotineGeneratorScreen(ElectrotineGeneratorContainer container, Inventory playerInventory, Component title) { + public ElectrotineGeneratorScreen(ElectrotineGeneratorMenu container, Inventory playerInventory, Component title) { super(176, 171, container, playerInventory, title); inventoryLabelX = 8; @@ -64,9 +64,5 @@ public void drawBack(PoseStack stack, Point mouse, float partialFrame) { if (getMenu().isChargingConductor()) { blit(stack, x + 30, y + 46, 211, 0, 23, 9); } -// -// // Title labels -// getFontRenderer().draw(stack, title, x + 8, y + 6, EnumColour.GRAY.argb()); -// getFontRenderer().draw(stack, inventory.getDisplayName(), x + 8, y + 79, EnumColour.GRAY.argb()); } } diff --git a/core/src/main/java/mrtjp/projectred/core/init/CoreBlocks.java b/core/src/main/java/mrtjp/projectred/core/init/CoreBlocks.java index 7b17e56ee..80005e97e 100644 --- a/core/src/main/java/mrtjp/projectred/core/init/CoreBlocks.java +++ b/core/src/main/java/mrtjp/projectred/core/init/CoreBlocks.java @@ -1,7 +1,7 @@ package mrtjp.projectred.core.init; import mrtjp.projectred.core.block.ElectrotineGeneratorBlock; -import mrtjp.projectred.core.tile.ElectrotineGeneratorTile; +import mrtjp.projectred.core.tile.ElectrotineGeneratorBlockEntity; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.Block; @@ -19,7 +19,7 @@ public class CoreBlocks { public static RegistryObject ELECTROTINE_GENERATOR_BLOCK; // Tile - public static RegistryObject> ELECTROTINE_GENERATOR_TILE; + public static RegistryObject> ELECTROTINE_GENERATOR_BLOCK_ENTITY; public static void register() { @@ -31,6 +31,6 @@ public static void register() { ITEMS.register(ID_ELECTROTINE_GENERATOR, () -> new BlockItem(ELECTROTINE_GENERATOR_BLOCK.get(), new Item.Properties().tab(CORE_CREATIVE_TAB))); // Tiles - ELECTROTINE_GENERATOR_TILE = BLOCK_ENTITY_TYPES.register(ID_ELECTROTINE_GENERATOR, () -> BlockEntityType.Builder.of(ElectrotineGeneratorTile::new, ELECTROTINE_GENERATOR_BLOCK.get()).build(null)); + ELECTROTINE_GENERATOR_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_ELECTROTINE_GENERATOR, () -> BlockEntityType.Builder.of(ElectrotineGeneratorBlockEntity::new, ELECTROTINE_GENERATOR_BLOCK.get()).build(null)); } } diff --git a/core/src/main/java/mrtjp/projectred/core/init/CoreClientInit.java b/core/src/main/java/mrtjp/projectred/core/init/CoreClientInit.java index 3180e8ae7..c23d2b47c 100644 --- a/core/src/main/java/mrtjp/projectred/core/init/CoreClientInit.java +++ b/core/src/main/java/mrtjp/projectred/core/init/CoreClientInit.java @@ -14,7 +14,7 @@ import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; import static mrtjp.projectred.core.ProjectRedCore.MOD_ID; -import static mrtjp.projectred.core.init.CoreMenus.ELECTROTINE_GENERATOR_CONTAINER; +import static mrtjp.projectred.core.init.CoreMenus.ELECTROTINE_GENERATOR_MENU; @SuppressWarnings("NotNullFieldNotInitialized") public class CoreClientInit { @@ -31,7 +31,7 @@ public static void init() { private static void clientSetup(final FMLClientSetupEvent event) { // Register screens - MenuScreens.register(ELECTROTINE_GENERATOR_CONTAINER.get(), ElectrotineGeneratorScreen::new); + MenuScreens.register(ELECTROTINE_GENERATOR_MENU.get(), ElectrotineGeneratorScreen::new); // Init Halo Renderer HaloRenderer.init(); diff --git a/core/src/main/java/mrtjp/projectred/core/init/CoreMenus.java b/core/src/main/java/mrtjp/projectred/core/init/CoreMenus.java index e88276f54..a99268e63 100644 --- a/core/src/main/java/mrtjp/projectred/core/init/CoreMenus.java +++ b/core/src/main/java/mrtjp/projectred/core/init/CoreMenus.java @@ -1,7 +1,7 @@ package mrtjp.projectred.core.init; import codechicken.lib.inventory.container.ICCLContainerType; -import mrtjp.projectred.core.inventory.container.ElectrotineGeneratorContainer; +import mrtjp.projectred.core.inventory.container.ElectrotineGeneratorMenu; import net.minecraft.world.inventory.MenuType; import net.minecraftforge.registries.RegistryObject; @@ -11,10 +11,10 @@ @SuppressWarnings("NotNullFieldNotInitialized") public class CoreMenus { - public static RegistryObject> ELECTROTINE_GENERATOR_CONTAINER; + public static RegistryObject> ELECTROTINE_GENERATOR_MENU; public static void register() { - ELECTROTINE_GENERATOR_CONTAINER = MENU_TYPES.register(ID_ELECTROTINE_GENERATOR, () -> ICCLContainerType.create(ElectrotineGeneratorContainer.FACTORY)); + ELECTROTINE_GENERATOR_MENU = MENU_TYPES.register(ID_ELECTROTINE_GENERATOR, () -> ICCLContainerType.create(ElectrotineGeneratorMenu.FACTORY)); } } diff --git a/core/src/main/java/mrtjp/projectred/core/inventory/BaseInventory.java b/core/src/main/java/mrtjp/projectred/core/inventory/BaseContainer.java similarity index 94% rename from core/src/main/java/mrtjp/projectred/core/inventory/BaseInventory.java rename to core/src/main/java/mrtjp/projectred/core/inventory/BaseContainer.java index 00039de79..41c93e38e 100644 --- a/core/src/main/java/mrtjp/projectred/core/inventory/BaseInventory.java +++ b/core/src/main/java/mrtjp/projectred/core/inventory/BaseContainer.java @@ -10,15 +10,15 @@ * Simple extension of default vanilla Inventory class that allows for proper saving and loading * to a CompoundNBT. Default implementation does not load items back into their original slots. *

- * Use {@link BaseInventory#save} and {@link BaseInventory#load} instead of Inventory#createTag and Inventory#fromTag + * Use {@link BaseContainer#save} and {@link BaseContainer#load} instead of Inventory#createTag and Inventory#fromTag */ -public class BaseInventory extends SimpleContainer { +public class BaseContainer extends SimpleContainer { private static final String TAG_ITEMS = "items"; private static final String TAG_SLOT = "slot"; private static final String TAG_ITEM_COUNT = "item_count"; - public BaseInventory(int size) { + public BaseContainer(int size) { super(size); } diff --git a/core/src/main/java/mrtjp/projectred/core/inventory/container/BasePoweredTileContainer.java b/core/src/main/java/mrtjp/projectred/core/inventory/container/BasePoweredBlockEntityMenu.java similarity index 80% rename from core/src/main/java/mrtjp/projectred/core/inventory/container/BasePoweredTileContainer.java rename to core/src/main/java/mrtjp/projectred/core/inventory/container/BasePoweredBlockEntityMenu.java index 87ac9a187..9310c5b15 100644 --- a/core/src/main/java/mrtjp/projectred/core/inventory/container/BasePoweredTileContainer.java +++ b/core/src/main/java/mrtjp/projectred/core/inventory/container/BasePoweredBlockEntityMenu.java @@ -1,20 +1,19 @@ package mrtjp.projectred.core.inventory.container; -import mrtjp.projectred.core.tile.BasePoweredTile; -import net.minecraft.world.entity.player.Player; +import mrtjp.projectred.core.tile.BasePoweredBlockEntity; import net.minecraft.world.inventory.AbstractContainerMenu; import net.minecraft.world.inventory.MenuType; import javax.annotation.Nullable; -public abstract class BasePoweredTileContainer extends AbstractContainerMenu { +public abstract class BasePoweredBlockEntityMenu extends AbstractContainerMenu { - private final BasePoweredTile tile; + private final BasePoweredBlockEntity tile; protected int condCharge; protected int condFlow; - public BasePoweredTileContainer(@Nullable MenuType containerType, int windowId, BasePoweredTile tile) { + public BasePoweredBlockEntityMenu(@Nullable MenuType containerType, int windowId, BasePoweredBlockEntity tile) { super(containerType, windowId); this.tile = tile; diff --git a/core/src/main/java/mrtjp/projectred/core/inventory/container/ElectrotineGeneratorContainer.java b/core/src/main/java/mrtjp/projectred/core/inventory/container/ElectrotineGeneratorMenu.java similarity index 85% rename from core/src/main/java/mrtjp/projectred/core/inventory/container/ElectrotineGeneratorContainer.java rename to core/src/main/java/mrtjp/projectred/core/inventory/container/ElectrotineGeneratorMenu.java index b8cc0fb8e..0af0f6727 100644 --- a/core/src/main/java/mrtjp/projectred/core/inventory/container/ElectrotineGeneratorContainer.java +++ b/core/src/main/java/mrtjp/projectred/core/inventory/container/ElectrotineGeneratorMenu.java @@ -1,7 +1,7 @@ package mrtjp.projectred.core.inventory.container; import codechicken.lib.inventory.container.ICCLContainerFactory; -import mrtjp.projectred.core.tile.ElectrotineGeneratorTile; +import mrtjp.projectred.core.tile.ElectrotineGeneratorBlockEntity; import mrtjp.projectred.lib.InventoryLib; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -10,25 +10,25 @@ import net.minecraft.world.level.block.entity.BlockEntity; import static mrtjp.projectred.core.init.CoreItems.ELECTROTINE_DUST_ITEM; -import static mrtjp.projectred.core.init.CoreMenus.ELECTROTINE_GENERATOR_CONTAINER; +import static mrtjp.projectred.core.init.CoreMenus.ELECTROTINE_GENERATOR_MENU; -public class ElectrotineGeneratorContainer extends BasePoweredTileContainer { +public class ElectrotineGeneratorMenu extends BasePoweredBlockEntityMenu { - public static final ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { - BlockEntity tile = inventory.player.level.getBlockEntity(packet.readPos()); - if (!(tile instanceof ElectrotineGeneratorTile)) return null; + public static final ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { + BlockEntity tile = inventory.player.getLevel().getBlockEntity(packet.readPos()); + if (!(tile instanceof ElectrotineGeneratorBlockEntity)) return null; - return new ElectrotineGeneratorContainer(inventory, (ElectrotineGeneratorTile) tile, windowId); + return new ElectrotineGeneratorMenu(inventory, (ElectrotineGeneratorBlockEntity) tile, windowId); }; private final Inventory playerInventory; - private final ElectrotineGeneratorTile tile; + private final ElectrotineGeneratorBlockEntity tile; private int burnTimeRemaining = 0; private int powerStored = 0; - public ElectrotineGeneratorContainer(Inventory playerInventory, ElectrotineGeneratorTile tile, int windowId) { - super(ELECTROTINE_GENERATOR_CONTAINER.get(), windowId, tile); + public ElectrotineGeneratorMenu(Inventory playerInventory, ElectrotineGeneratorBlockEntity tile, int windowId) { + super(ELECTROTINE_GENERATOR_MENU.get(), windowId, tile); this.playerInventory = playerInventory; this.tile = tile; diff --git a/core/src/main/java/mrtjp/projectred/core/tile/BaseConnectableTile.java b/core/src/main/java/mrtjp/projectred/core/tile/BaseConnectableBlockEntity.java similarity index 91% rename from core/src/main/java/mrtjp/projectred/core/tile/BaseConnectableTile.java rename to core/src/main/java/mrtjp/projectred/core/tile/BaseConnectableBlockEntity.java index c7079b3b5..716c4c78f 100644 --- a/core/src/main/java/mrtjp/projectred/core/tile/BaseConnectableTile.java +++ b/core/src/main/java/mrtjp/projectred/core/tile/BaseConnectableBlockEntity.java @@ -12,13 +12,13 @@ import javax.annotation.Nullable; -public abstract class BaseConnectableTile extends ProjectRedTile implements IConnectableTile, IPacketReceiverTile { +public abstract class BaseConnectableBlockEntity extends ProjectRedBlockEntity implements IConnectableBlockEntity, IPacketReceiverBlockEntity { public static final int PACKET_CONN_MAP = 2; private long connMap = 0L; - public BaseConnectableTile(BlockEntityType type, BlockPos pos, BlockState state) { + public BaseConnectableBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); } diff --git a/core/src/main/java/mrtjp/projectred/core/tile/BasePoweredTile.java b/core/src/main/java/mrtjp/projectred/core/tile/BasePoweredBlockEntity.java similarity index 80% rename from core/src/main/java/mrtjp/projectred/core/tile/BasePoweredTile.java rename to core/src/main/java/mrtjp/projectred/core/tile/BasePoweredBlockEntity.java index d91159b25..0a66509c1 100644 --- a/core/src/main/java/mrtjp/projectred/core/tile/BasePoweredTile.java +++ b/core/src/main/java/mrtjp/projectred/core/tile/BasePoweredBlockEntity.java @@ -8,12 +8,12 @@ import java.util.LinkedList; import java.util.List; -public abstract class BasePoweredTile extends BaseConnectableTile implements IPoweredTile { +public abstract class BasePoweredBlockEntity extends BaseConnectableBlockEntity implements IPoweredBlockEntity { private final List connectedConductors = new LinkedList<>(); private boolean cacheInvalid = true; - public BasePoweredTile(BlockEntityType type, BlockPos pos, BlockState state) { + public BasePoweredBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); } @@ -53,14 +53,14 @@ private void recacheConductors() { // Edge connections for (int s = 0; s < 6; s++) { for (int r = 0; r < 4; r++) { - PowerConductor c = IPoweredTile.getExternalConductorForFaceConn(this, s, r); + PowerConductor c = IPoweredBlockEntity.getExternalConductorForFaceConn(this, s, r); if (c != null) connectedConductors.add(c); } } // Center connections for (int s = 0; s < 6; s++) { - PowerConductor c = IPoweredTile.getExternalConductorForCenterConn(this, s); + PowerConductor c = IPoweredBlockEntity.getExternalConductorForCenterConn(this, s); if (c != null) connectedConductors.add(c); } } diff --git a/core/src/main/java/mrtjp/projectred/core/tile/ElectrotineGeneratorTile.java b/core/src/main/java/mrtjp/projectred/core/tile/ElectrotineGeneratorBlockEntity.java similarity index 94% rename from core/src/main/java/mrtjp/projectred/core/tile/ElectrotineGeneratorTile.java rename to core/src/main/java/mrtjp/projectred/core/tile/ElectrotineGeneratorBlockEntity.java index 8e9f49606..000b47afa 100644 --- a/core/src/main/java/mrtjp/projectred/core/tile/ElectrotineGeneratorTile.java +++ b/core/src/main/java/mrtjp/projectred/core/tile/ElectrotineGeneratorBlockEntity.java @@ -4,15 +4,14 @@ import codechicken.lib.vec.Vector3; import mrtjp.projectred.api.IConnectable; import mrtjp.projectred.core.block.ProjectRedBlock; -import mrtjp.projectred.core.inventory.BaseInventory; -import mrtjp.projectred.core.inventory.container.ElectrotineGeneratorContainer; +import mrtjp.projectred.core.inventory.BaseContainer; +import mrtjp.projectred.core.inventory.container.ElectrotineGeneratorMenu; import mrtjp.projectred.core.power.ILowLoadMachine; import mrtjp.projectred.core.power.ILowLoadPowerLine; import mrtjp.projectred.core.power.PowerConductor; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.nbt.CompoundTag; -import net.minecraft.network.chat.Component; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResult; @@ -31,10 +30,10 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; -import static mrtjp.projectred.core.init.CoreBlocks.ELECTROTINE_GENERATOR_TILE; +import static mrtjp.projectred.core.init.CoreBlocks.ELECTROTINE_GENERATOR_BLOCK_ENTITY; import static mrtjp.projectred.core.init.CoreItems.ELECTROTINE_DUST_ITEM; -public class ElectrotineGeneratorTile extends BasePoweredTile implements ILowLoadMachine { +public class ElectrotineGeneratorBlockEntity extends BasePoweredBlockEntity implements ILowLoadMachine { protected final PowerConductor conductor = new PowerConductor(this, 0.01, 160); @@ -46,8 +45,8 @@ public class ElectrotineGeneratorTile extends BasePoweredTile implements ILowLoa private int burnTimeRemaining = 0; private int powerStored = 0; - public ElectrotineGeneratorTile(BlockPos pos, BlockState state) { - super(ELECTROTINE_GENERATOR_TILE.get(), pos, state); + public ElectrotineGeneratorBlockEntity(BlockPos pos, BlockState state) { + super(ELECTROTINE_GENERATOR_BLOCK_ENTITY.get(), pos, state); } @Override @@ -79,7 +78,7 @@ public BlockState storeBlockState(BlockState defaultState) { public InteractionResult onBlockActivated(Player player, InteractionHand hand, BlockHitResult hit) { if (!getLevel().isClientSide) { ServerUtils.openContainer((ServerPlayer) player, new SimpleMenuProvider( - (id, inv, p) -> new ElectrotineGeneratorContainer(inv, this, id), + (id, inv, p) -> new ElectrotineGeneratorMenu(inv, this, id), getBlockState().getBlock().getName()), p -> p.writePos(getBlockPos())); } @@ -237,7 +236,7 @@ public int getPowerStored() { } //endregion - private static class ElectrotineGeneratorInventory extends BaseInventory { + private static class ElectrotineGeneratorInventory extends BaseContainer { public ElectrotineGeneratorInventory() { super(1); diff --git a/core/src/main/java/mrtjp/projectred/core/tile/IBlockEventTile.java b/core/src/main/java/mrtjp/projectred/core/tile/IBlockEventBlockEntity.java similarity index 98% rename from core/src/main/java/mrtjp/projectred/core/tile/IBlockEventTile.java rename to core/src/main/java/mrtjp/projectred/core/tile/IBlockEventBlockEntity.java index 93c0f8441..67715db45 100644 --- a/core/src/main/java/mrtjp/projectred/core/tile/IBlockEventTile.java +++ b/core/src/main/java/mrtjp/projectred/core/tile/IBlockEventBlockEntity.java @@ -20,7 +20,7 @@ import javax.annotation.Nullable; -public interface IBlockEventTile { +public interface IBlockEventBlockEntity { Level getBlockLevel(); BlockPos getBlockPosition(); diff --git a/core/src/main/java/mrtjp/projectred/core/tile/IConnectableTile.java b/core/src/main/java/mrtjp/projectred/core/tile/IConnectableBlockEntity.java similarity index 99% rename from core/src/main/java/mrtjp/projectred/core/tile/IConnectableTile.java rename to core/src/main/java/mrtjp/projectred/core/tile/IConnectableBlockEntity.java index bf6e5d72f..655391009 100644 --- a/core/src/main/java/mrtjp/projectred/core/tile/IConnectableTile.java +++ b/core/src/main/java/mrtjp/projectred/core/tile/IConnectableBlockEntity.java @@ -13,7 +13,7 @@ import javax.annotation.Nullable; -public interface IConnectableTile extends IBlockEventTile, IConnectable { +public interface IConnectableBlockEntity extends IBlockEventBlockEntity, IConnectable { //region Position calculations diff --git a/core/src/main/java/mrtjp/projectred/core/tile/IOrientableBlockEntity.java b/core/src/main/java/mrtjp/projectred/core/tile/IOrientableBlockEntity.java index e77246aa2..59a51936d 100644 --- a/core/src/main/java/mrtjp/projectred/core/tile/IOrientableBlockEntity.java +++ b/core/src/main/java/mrtjp/projectred/core/tile/IOrientableBlockEntity.java @@ -9,7 +9,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -public interface IOrientableBlockEntity extends IBlockEventTile { +public interface IOrientableBlockEntity extends IBlockEventBlockEntity { default int getRotation() { return getBlockLevel().getBlockState(getBlockPosition()).getValue(ProjectRedBlock.ROTATION); diff --git a/core/src/main/java/mrtjp/projectred/core/tile/IPacketReceiverTile.java b/core/src/main/java/mrtjp/projectred/core/tile/IPacketReceiverBlockEntity.java similarity index 95% rename from core/src/main/java/mrtjp/projectred/core/tile/IPacketReceiverTile.java rename to core/src/main/java/mrtjp/projectred/core/tile/IPacketReceiverBlockEntity.java index 600b87b4f..3ef08f2f0 100644 --- a/core/src/main/java/mrtjp/projectred/core/tile/IPacketReceiverTile.java +++ b/core/src/main/java/mrtjp/projectred/core/tile/IPacketReceiverBlockEntity.java @@ -9,7 +9,7 @@ import java.util.Collection; import java.util.function.Consumer; -public interface IPacketReceiverTile extends IBlockEventTile { +public interface IPacketReceiverBlockEntity extends IBlockEventBlockEntity { default void sendUpdateToServer(int key, Consumer writer) { PacketCustom packet = CoreNetwork.createTileServerPacket(this, (byte) key); diff --git a/core/src/main/java/mrtjp/projectred/core/tile/IPoweredTile.java b/core/src/main/java/mrtjp/projectred/core/tile/IPoweredBlockEntity.java similarity index 87% rename from core/src/main/java/mrtjp/projectred/core/tile/IPoweredTile.java rename to core/src/main/java/mrtjp/projectred/core/tile/IPoweredBlockEntity.java index cf9c0f5c6..d99fbffcd 100644 --- a/core/src/main/java/mrtjp/projectred/core/tile/IPoweredTile.java +++ b/core/src/main/java/mrtjp/projectred/core/tile/IPoweredBlockEntity.java @@ -8,9 +8,9 @@ import javax.annotation.Nullable; -public interface IPoweredTile extends IBlockEventTile, IConnectableTile, IPowerConnectable, IPowerConductorSource { +public interface IPoweredBlockEntity extends IBlockEventBlockEntity, IConnectableBlockEntity, IPowerConnectable, IPowerConductorSource { - static @Nullable PowerConductor getExternalConductorForFaceConn(IPoweredTile poweredTile, int s, int edgeRot) { + static @Nullable PowerConductor getExternalConductorForFaceConn(IPoweredBlockEntity poweredTile, int s, int edgeRot) { if (poweredTile.maskConnectsStraight(s, edgeRot)) { MultiPart part = poweredTile.getStraight(s, edgeRot); if (part instanceof IPowerConnectable) { @@ -27,7 +27,7 @@ public interface IPoweredTile extends IBlockEventTile, IConnectableTile, IPowerC return null; } - static @Nullable PowerConductor getExternalConductorForCenterConn(IPoweredTile poweredTile, int s) { + static @Nullable PowerConductor getExternalConductorForCenterConn(IPoweredBlockEntity poweredTile, int s) { if (poweredTile.maskConnectsStraightCenter(s)) { MultiPart part = poweredTile.getStraightCenter(s); if (part instanceof IPowerConnectable) { diff --git a/core/src/main/java/mrtjp/projectred/core/tile/ProjectRedTile.java b/core/src/main/java/mrtjp/projectred/core/tile/ProjectRedBlockEntity.java similarity index 94% rename from core/src/main/java/mrtjp/projectred/core/tile/ProjectRedTile.java rename to core/src/main/java/mrtjp/projectred/core/tile/ProjectRedBlockEntity.java index b8ef8eca1..980e506ff 100644 --- a/core/src/main/java/mrtjp/projectred/core/tile/ProjectRedTile.java +++ b/core/src/main/java/mrtjp/projectred/core/tile/ProjectRedBlockEntity.java @@ -14,9 +14,9 @@ import java.util.Objects; -public abstract class ProjectRedTile extends BlockEntity implements IBlockEventTile { +public abstract class ProjectRedBlockEntity extends BlockEntity implements IBlockEventBlockEntity { - public ProjectRedTile(BlockEntityType type, BlockPos pos, BlockState state) { + public ProjectRedBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/block/AutoCrafterBlock.java b/expansion/src/main/java/mrtjp/projectred/expansion/block/AutoCrafterBlock.java index 50f278409..a835b4eb5 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/block/AutoCrafterBlock.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/block/AutoCrafterBlock.java @@ -1,7 +1,7 @@ package mrtjp.projectred.expansion.block; import mrtjp.projectred.expansion.init.ExpansionBlocks; -import mrtjp.projectred.expansion.tile.AutoCrafterTile; +import mrtjp.projectred.expansion.tile.AutoCrafterBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -17,11 +17,11 @@ public AutoCrafterBlock() { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new AutoCrafterTile(pos, state); + return new AutoCrafterBlockEntity(pos, state); } @Override protected BlockEntityType getBlockEntityType() { - return ExpansionBlocks.AUTO_CRAFTER_TILE.get(); + return ExpansionBlocks.AUTO_CRAFTER_BLOCK_ENTITY.get(); } } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/block/BatteryBoxBlock.java b/expansion/src/main/java/mrtjp/projectred/expansion/block/BatteryBoxBlock.java index 21b8eac64..ca4022ca5 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/block/BatteryBoxBlock.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/block/BatteryBoxBlock.java @@ -2,7 +2,7 @@ import mrtjp.projectred.core.block.ProjectRedBlock; import mrtjp.projectred.expansion.init.ExpansionBlocks; -import mrtjp.projectred.expansion.tile.BatteryBoxTile; +import mrtjp.projectred.expansion.tile.BatteryBoxBlockEntity; import net.minecraft.ChatFormatting; import net.minecraft.core.BlockPos; import net.minecraft.network.chat.Component; @@ -39,12 +39,12 @@ public BatteryBoxBlock() { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new BatteryBoxTile(pos, state); + return new BatteryBoxBlockEntity(pos, state); } @Override protected BlockEntityType getBlockEntityType() { - return ExpansionBlocks.BATTERY_BOX_TILE.get(); + return ExpansionBlocks.BATTERY_BOX_BLOCK_ENTITY.get(); } @Nullable @@ -62,7 +62,7 @@ protected void createBlockStateDefinition(StateDefinition.Builder getDrops(BlockState state, LootContext.Builder builder) { BlockEntity tile = builder.getParameter(LootContextParams.BLOCK_ENTITY); - if (tile instanceof BatteryBoxTile batteryBoxTile) { + if (tile instanceof BatteryBoxBlockEntity batteryBoxTile) { return Collections.singletonList(batteryBoxTile.createStackWithStoredPower()); // Retain power inside itemstack } return super.getDrops(state, builder); @@ -71,8 +71,8 @@ public List getDrops(BlockState state, LootContext.Builder builder) { @Override public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGetter world, BlockPos pos, Player player) { BlockEntity tile = world.getBlockEntity(pos); - if (tile instanceof BatteryBoxTile) - return ((BatteryBoxTile) tile).createStackWithStoredPower(); // Pick block with stored power + if (tile instanceof BatteryBoxBlockEntity) + return ((BatteryBoxBlockEntity) tile).createStackWithStoredPower(); // Pick block with stored power return super.getCloneItemStack(state, target, world, pos, player); } @@ -81,7 +81,7 @@ public ItemStack getCloneItemStack(BlockState state, HitResult target, BlockGett public void appendHoverText(ItemStack stack, @Nullable BlockGetter level, List toolTip, TooltipFlag flag) { super.appendHoverText(stack, level, toolTip, flag); if (stack.hasTag()) { - int power = Objects.requireNonNull(stack.getTag()).getInt(BatteryBoxTile.TAG_KEY_POWER_STORED); + int power = Objects.requireNonNull(stack.getTag()).getInt(BatteryBoxBlockEntity.TAG_KEY_POWER_STORED); toolTip.add(Component.translatable(UL_STORED_POWER_TOOLTIP).append(": " + power + " / " + 8000).withStyle(ChatFormatting.GRAY)); //TODO make this static constant } } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/block/BlockBreakerBlock.java b/expansion/src/main/java/mrtjp/projectred/expansion/block/BlockBreakerBlock.java index 45813b172..d9f876139 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/block/BlockBreakerBlock.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/block/BlockBreakerBlock.java @@ -22,6 +22,6 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { @Override protected BlockEntityType getBlockEntityType() { - return ExpansionBlocks.BLOCK_BREAKER_TILE.get(); + return ExpansionBlocks.BLOCK_BREAKER_BLOCK_ENTITY.get(); } } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/block/ChargingBenchBlock.java b/expansion/src/main/java/mrtjp/projectred/expansion/block/ChargingBenchBlock.java index b06f3cae7..845fad594 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/block/ChargingBenchBlock.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/block/ChargingBenchBlock.java @@ -3,7 +3,7 @@ import codechicken.lib.vec.Rotation; import mrtjp.projectred.core.block.ProjectRedBlock; import mrtjp.projectred.expansion.init.ExpansionBlocks; -import mrtjp.projectred.expansion.tile.ChargingBenchTile; +import mrtjp.projectred.expansion.tile.ChargingBenchBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.block.Block; @@ -23,12 +23,12 @@ public ChargingBenchBlock() { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new ChargingBenchTile(pos, state); + return new ChargingBenchBlockEntity(pos, state); } @Override protected BlockEntityType getBlockEntityType() { - return ExpansionBlocks.CHARGING_BENCH_TILE.get(); + return ExpansionBlocks.CHARGING_BENCH_BLOCK_ENTITY.get(); } @Nullable diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/block/DeployerBlock.java b/expansion/src/main/java/mrtjp/projectred/expansion/block/DeployerBlock.java index 1344b074f..e8736a43a 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/block/DeployerBlock.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/block/DeployerBlock.java @@ -16,7 +16,7 @@ public DeployerBlock() { @Override protected BlockEntityType getBlockEntityType() { - return ExpansionBlocks.DEPLOYER_TILE.get(); + return ExpansionBlocks.DEPLOYER_BLOCK_ENTITY.get(); } @Nullable diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/block/FireStarterBlock.java b/expansion/src/main/java/mrtjp/projectred/expansion/block/FireStarterBlock.java index 1278c46ce..21d623479 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/block/FireStarterBlock.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/block/FireStarterBlock.java @@ -1,8 +1,8 @@ package mrtjp.projectred.expansion.block; -import mrtjp.projectred.core.tile.IBlockEventTile; +import mrtjp.projectred.core.tile.IBlockEventBlockEntity; import mrtjp.projectred.expansion.init.ExpansionBlocks; -import mrtjp.projectred.expansion.tile.FireStarterTile; +import mrtjp.projectred.expansion.tile.FireStarterBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; import net.minecraft.world.level.LevelReader; @@ -20,12 +20,12 @@ public FireStarterBlock() { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new FireStarterTile(pos, state); + return new FireStarterBlockEntity(pos, state); } @Override protected BlockEntityType getBlockEntityType() { - return ExpansionBlocks.FIRE_STARTER_TILE.get(); + return ExpansionBlocks.FIRE_STARTER_BLOCK_ENTITY.get(); } @Override @@ -33,7 +33,7 @@ public boolean isFireSource(BlockState state, LevelReader world, BlockPos pos, D if (super.isFireSource(state, world, pos, side)) return true; BlockEntity tile = world.getBlockEntity(pos); - if (tile instanceof IBlockEventTile) return ((IBlockEventTile) tile).isFireSource(side.ordinal()); + if (tile instanceof IBlockEventBlockEntity) return ((IBlockEventBlockEntity) tile).isFireSource(side.ordinal()); return false; } } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameActuatorBlock.java b/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameActuatorBlock.java index 8800d1270..3b6c6e390 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameActuatorBlock.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameActuatorBlock.java @@ -2,7 +2,7 @@ import mrtjp.projectred.core.block.ProjectRedBlock; import mrtjp.projectred.expansion.init.ExpansionBlocks; -import mrtjp.projectred.expansion.tile.FrameActuatorTile; +import mrtjp.projectred.expansion.tile.FrameActuatorBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.block.Block; @@ -21,12 +21,12 @@ public FrameActuatorBlock() { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new FrameActuatorTile(pos, state); + return new FrameActuatorBlockEntity(pos, state); } @Override protected BlockEntityType getBlockEntityType() { - return ExpansionBlocks.FRAME_ACTUATOR_TILE.get(); + return ExpansionBlocks.FRAME_ACTUATOR_BLOCK_ENTITY.get(); } @Nullable diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameMotorBlock.java b/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameMotorBlock.java index 4290a4502..2c23097ec 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameMotorBlock.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/block/FrameMotorBlock.java @@ -3,7 +3,7 @@ import codechicken.lib.vec.Rotation; import mrtjp.projectred.core.block.ProjectRedBlock; import mrtjp.projectred.expansion.init.ExpansionBlocks; -import mrtjp.projectred.expansion.tile.FrameMotorTile; +import mrtjp.projectred.expansion.tile.FrameMotorBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.block.Block; @@ -22,12 +22,12 @@ public FrameMotorBlock() { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new FrameMotorTile(pos, state); + return new FrameMotorBlockEntity(pos, state); } @Override protected BlockEntityType getBlockEntityType() { - return ExpansionBlocks.FRAME_MOTOR_TILE.get(); + return ExpansionBlocks.FRAME_MOTOR_BLOCK_ENTITY.get(); } @Nullable diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/block/ProjectBenchBlock.java b/expansion/src/main/java/mrtjp/projectred/expansion/block/ProjectBenchBlock.java index 5fd6e09ca..3719493c1 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/block/ProjectBenchBlock.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/block/ProjectBenchBlock.java @@ -3,7 +3,7 @@ import codechicken.lib.vec.Rotation; import mrtjp.projectred.core.block.ProjectRedBlock; import mrtjp.projectred.expansion.init.ExpansionBlocks; -import mrtjp.projectred.expansion.tile.ProjectBenchTile; +import mrtjp.projectred.expansion.tile.ProjectBenchBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.block.Block; @@ -23,12 +23,12 @@ public ProjectBenchBlock() { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new ProjectBenchTile(pos, state); + return new ProjectBenchBlockEntity(pos, state); } @Override protected BlockEntityType getBlockEntityType() { - return ExpansionBlocks.PROJECT_BENCH_TILE.get(); + return ExpansionBlocks.PROJECT_BENCH_BLOCK_ENTITY.get(); } @Nullable diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/block/TransposerBlock.java b/expansion/src/main/java/mrtjp/projectred/expansion/block/TransposerBlock.java index 0907a43d5..baca45bc6 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/block/TransposerBlock.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/block/TransposerBlock.java @@ -22,6 +22,6 @@ public BlockEntity newBlockEntity(BlockPos pPos, BlockState pState) { @Override protected BlockEntityType getBlockEntityType() { - return ExpansionBlocks.TRANSPOSER_BLOCK_TILE.get(); + return ExpansionBlocks.TRANSPOSER_BLOCK_ENTITY.get(); } } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/AutoCrafterScreen.java b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/AutoCrafterScreen.java index cc7e8bc6b..780b56271 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/AutoCrafterScreen.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/AutoCrafterScreen.java @@ -3,7 +3,7 @@ import codechicken.lib.colour.EnumColour; import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; -import mrtjp.projectred.expansion.inventory.container.AutoCrafterContainer; +import mrtjp.projectred.expansion.inventory.container.AutoCrafterMenu; import mrtjp.projectred.expansion.item.RecipePlanItem; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; @@ -19,13 +19,13 @@ import static mrtjp.projectred.expansion.ProjectRedExpansion.MOD_ID; -public class AutoCrafterScreen extends RedUIContainerScreen { +public class AutoCrafterScreen extends RedUIContainerScreen { public static final ResourceLocation BACKGROUND = new ResourceLocation(MOD_ID, "textures/gui/auto_crafter.png"); private boolean isShiftDown = false; - public AutoCrafterScreen(AutoCrafterContainer container, Inventory playerInventory, Component title) { + public AutoCrafterScreen(AutoCrafterMenu container, Inventory playerInventory, Component title) { super(176, 212, container, playerInventory, title); inventoryLabelX = 8; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/BatteryBoxScreen.java b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/BatteryBoxScreen.java index 98ba991ca..db7d4180f 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/BatteryBoxScreen.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/BatteryBoxScreen.java @@ -2,7 +2,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; -import mrtjp.projectred.expansion.inventory.container.BatteryBoxContainer; +import mrtjp.projectred.expansion.inventory.container.BatteryBoxMenu; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; @@ -12,11 +12,11 @@ import static mrtjp.projectred.expansion.ProjectRedExpansion.MOD_ID; -public class BatteryBoxScreen extends RedUIContainerScreen { +public class BatteryBoxScreen extends RedUIContainerScreen { public static final ResourceLocation BACKGROUND = new ResourceLocation(MOD_ID, "textures/gui/battery_box.png"); - public BatteryBoxScreen(BatteryBoxContainer container, Inventory playerInventory, Component title) { + public BatteryBoxScreen(BatteryBoxMenu container, Inventory playerInventory, Component title) { super(176, 171, container, playerInventory, title); inventoryLabelX = 8; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ChargingBenchScreen.java b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ChargingBenchScreen.java index ec6496264..345b79834 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ChargingBenchScreen.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ChargingBenchScreen.java @@ -2,7 +2,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; -import mrtjp.projectred.expansion.inventory.container.ChargingBenchContainer; +import mrtjp.projectred.expansion.inventory.container.ChargingBenchMenu; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; @@ -12,11 +12,11 @@ import static mrtjp.projectred.expansion.ProjectRedExpansion.MOD_ID; -public class ChargingBenchScreen extends RedUIContainerScreen { +public class ChargingBenchScreen extends RedUIContainerScreen { public static final ResourceLocation BACKGROUND = new ResourceLocation(MOD_ID, "textures/gui/charging_bench.png"); - public ChargingBenchScreen(ChargingBenchContainer container, Inventory playerInventory, Component title) { + public ChargingBenchScreen(ChargingBenchMenu container, Inventory playerInventory, Component title) { super(176, 183, container, playerInventory, title); inventoryLabelX = 8; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/DeployerScreen.java b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/DeployerScreen.java index b30ea98a6..40bed3c9b 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/DeployerScreen.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/DeployerScreen.java @@ -3,18 +3,18 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.expansion.ProjectRedExpansion; -import mrtjp.projectred.expansion.inventory.container.DeployerContainerMenu; +import mrtjp.projectred.expansion.inventory.container.DeployerMenu; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; import net.minecraft.network.chat.Component; import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -public class DeployerScreen extends RedUIContainerScreen { +public class DeployerScreen extends RedUIContainerScreen { public static final ResourceLocation BACKGROUND = new ResourceLocation(ProjectRedExpansion.MOD_ID, "textures/gui/deployer.png"); - public DeployerScreen(DeployerContainerMenu menu, Inventory playerInventory, Component title) { + public DeployerScreen(DeployerMenu menu, Inventory playerInventory, Component title) { super(176, 168, menu, playerInventory, title); inventoryLabelX = 8; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ProjectBenchScreen.java b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ProjectBenchScreen.java index 2d43fafb3..32169c716 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ProjectBenchScreen.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/gui/screen/inventory/ProjectBenchScreen.java @@ -4,9 +4,9 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.expansion.ProjectRedExpansion; -import mrtjp.projectred.expansion.inventory.container.ProjectBenchContainer; +import mrtjp.projectred.expansion.inventory.container.ProjectBenchMenu; import mrtjp.projectred.expansion.item.RecipePlanItem; -import mrtjp.projectred.expansion.tile.ProjectBenchTile; +import mrtjp.projectred.expansion.tile.ProjectBenchBlockEntity; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.AbstractButtonNode; import mrtjp.projectred.redui.RedUIContainerScreen; @@ -19,13 +19,13 @@ import net.minecraft.world.item.ItemStack; import org.lwjgl.glfw.GLFW; -public class ProjectBenchScreen extends RedUIContainerScreen { +public class ProjectBenchScreen extends RedUIContainerScreen { public static final ResourceLocation BACKGROUND = new ResourceLocation(ProjectRedExpansion.MOD_ID, "textures/gui/project_bench.png"); private boolean isShiftDown = false; - public ProjectBenchScreen(ProjectBenchContainer container, Inventory playerInventory, Component title) { + public ProjectBenchScreen(ProjectBenchMenu container, Inventory playerInventory, Component title) { super(176, 208, container, playerInventory, title); inventoryLabelX = 8; @@ -77,7 +77,7 @@ public void drawBack(PoseStack stack, Point mouse, float partialFrame) { blit(stack, x, y, 0, 0, getFrame().width(), getFrame().height()); - ProjectBenchTile tile = getMenu().getProjectBenchTile(); + ProjectBenchBlockEntity tile = getMenu().getProjectBenchTile(); if (tile.isPlanRecipe()) { int missingMask = tile.getCraftingHelper().getMissingIngredientMask(); Container inputs = tile.getCraftingHelper().getCraftingInventory(); diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionBlocks.java b/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionBlocks.java index 13d8ee4f6..e31e2a11c 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionBlocks.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionBlocks.java @@ -40,16 +40,16 @@ public class ExpansionBlocks { public static RegistryObject DEPLOYER_BLOCK; // Tiles - public static RegistryObject> PROJECT_BENCH_TILE; - public static RegistryObject> BATTERY_BOX_TILE; - public static RegistryObject> CHARGING_BENCH_TILE; - public static RegistryObject> AUTO_CRAFTER_TILE; - public static RegistryObject> FIRE_STARTER_TILE; - public static RegistryObject> FRAME_MOTOR_TILE; - public static RegistryObject> FRAME_ACTUATOR_TILE; - public static RegistryObject> TRANSPOSER_BLOCK_TILE; - public static RegistryObject> BLOCK_BREAKER_TILE; - public static RegistryObject> DEPLOYER_TILE; + public static RegistryObject> PROJECT_BENCH_BLOCK_ENTITY; + public static RegistryObject> BATTERY_BOX_BLOCK_ENTITY; + public static RegistryObject> CHARGING_BENCH_BLOCK_ENTITY; + public static RegistryObject> AUTO_CRAFTER_BLOCK_ENTITY; + public static RegistryObject> FIRE_STARTER_BLOCK_ENTITY; + public static RegistryObject> FRAME_MOTOR_BLOCK_ENTITY; + public static RegistryObject> FRAME_ACTUATOR_BLOCK_ENTITY; + public static RegistryObject> TRANSPOSER_BLOCK_ENTITY; + public static RegistryObject> BLOCK_BREAKER_BLOCK_ENTITY; + public static RegistryObject> DEPLOYER_BLOCK_ENTITY; public static void register() { @@ -81,16 +81,16 @@ public static void register() { ITEMS.register(ID_DEPLOYER, () -> new BlockItem(DEPLOYER_BLOCK.get(), new Item.Properties().tab(EXPANSION_GROUP))); // Tiles - PROJECT_BENCH_TILE = BLOCK_ENTITY_TYPES.register(ID_PROJECT_BENCH, () -> BlockEntityType.Builder.of(ProjectBenchTile::new, PROJECT_BENCH_BLOCK.get()).build(null)); - BATTERY_BOX_TILE = BLOCK_ENTITY_TYPES.register(ID_BATTERY_BOX, () -> BlockEntityType.Builder.of(BatteryBoxTile::new, BATTERY_BOX_BLOCK.get()).build(null)); - CHARGING_BENCH_TILE = BLOCK_ENTITY_TYPES.register(ID_CHARGING_BENCH, () -> BlockEntityType.Builder.of(ChargingBenchTile::new, CHARGING_BENCH_BLOCK.get()).build(null)); - AUTO_CRAFTER_TILE = BLOCK_ENTITY_TYPES.register(ID_AUTO_CRAFTER, () -> BlockEntityType.Builder.of(AutoCrafterTile::new, AUTO_CRAFTER_BLOCK.get()).build(null)); - FIRE_STARTER_TILE = BLOCK_ENTITY_TYPES.register(ID_FIRE_STARTER, () -> BlockEntityType.Builder.of(FireStarterTile::new, FIRE_STARTER_BLOCK.get()).build(null)); - FRAME_MOTOR_TILE = BLOCK_ENTITY_TYPES.register(ID_FRAME_MOTOR, () -> BlockEntityType.Builder.of(FrameMotorTile::new, FRAME_MOTOR_BLOCK.get()).build(null)); - FRAME_ACTUATOR_TILE = BLOCK_ENTITY_TYPES.register(ID_FRAME_ACTUATOR, () -> BlockEntityType.Builder.of(FrameActuatorTile::new, FRAME_ACTUATOR_BLOCK.get()).build(null)); - TRANSPOSER_BLOCK_TILE = BLOCK_ENTITY_TYPES.register(ID_TRANSPOSER, () -> BlockEntityType.Builder.of(TransposerBlockEntity::new, TRANSPOSER_BLOCK.get()).build(null)); - BLOCK_BREAKER_TILE = BLOCK_ENTITY_TYPES.register(ID_BLOCK_BREAKER, () -> BlockEntityType.Builder.of(BlockBreakerBlockEntity::new, BLOCK_BREAKER_BLOCK.get()).build(null)); - DEPLOYER_TILE = BLOCK_ENTITY_TYPES.register(ID_DEPLOYER, () -> BlockEntityType.Builder.of(DeployerBlockEntity::new, DEPLOYER_BLOCK.get()).build(null)); + PROJECT_BENCH_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_PROJECT_BENCH, () -> BlockEntityType.Builder.of(ProjectBenchBlockEntity::new, PROJECT_BENCH_BLOCK.get()).build(null)); + BATTERY_BOX_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_BATTERY_BOX, () -> BlockEntityType.Builder.of(BatteryBoxBlockEntity::new, BATTERY_BOX_BLOCK.get()).build(null)); + CHARGING_BENCH_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_CHARGING_BENCH, () -> BlockEntityType.Builder.of(ChargingBenchBlockEntity::new, CHARGING_BENCH_BLOCK.get()).build(null)); + AUTO_CRAFTER_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_AUTO_CRAFTER, () -> BlockEntityType.Builder.of(AutoCrafterBlockEntity::new, AUTO_CRAFTER_BLOCK.get()).build(null)); + FIRE_STARTER_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_FIRE_STARTER, () -> BlockEntityType.Builder.of(FireStarterBlockEntity::new, FIRE_STARTER_BLOCK.get()).build(null)); + FRAME_MOTOR_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_FRAME_MOTOR, () -> BlockEntityType.Builder.of(FrameMotorBlockEntity::new, FRAME_MOTOR_BLOCK.get()).build(null)); + FRAME_ACTUATOR_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_FRAME_ACTUATOR, () -> BlockEntityType.Builder.of(FrameActuatorBlockEntity::new, FRAME_ACTUATOR_BLOCK.get()).build(null)); + TRANSPOSER_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_TRANSPOSER, () -> BlockEntityType.Builder.of(TransposerBlockEntity::new, TRANSPOSER_BLOCK.get()).build(null)); + BLOCK_BREAKER_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_BLOCK_BREAKER, () -> BlockEntityType.Builder.of(BlockBreakerBlockEntity::new, BLOCK_BREAKER_BLOCK.get()).build(null)); + DEPLOYER_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_DEPLOYER, () -> BlockEntityType.Builder.of(DeployerBlockEntity::new, DEPLOYER_BLOCK.get()).build(null)); /* Blocks */ FRAME_BLOCK = BLOCKS.register(ID_FRAME, FrameBlock::new); diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionClientInit.java b/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionClientInit.java index 929b25587..70ef467fd 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionClientInit.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionClientInit.java @@ -10,7 +10,7 @@ import mrtjp.projectred.expansion.client.*; import mrtjp.projectred.expansion.gui.screen.inventory.*; import mrtjp.projectred.expansion.item.RecipePlanItem; -import mrtjp.projectred.expansion.tile.BatteryBoxTile; +import mrtjp.projectred.expansion.tile.BatteryBoxBlockEntity; import net.covers1624.quack.util.SneakyUtils; import net.minecraft.client.gui.screens.MenuScreens; import net.minecraft.client.renderer.ItemBlockRenderTypes; @@ -65,11 +65,11 @@ public static void init() { private static void clientSetup(final FMLClientSetupEvent event) { // Register screens - MenuScreens.register(PROJECT_BENCH_CONTAINER.get(), ProjectBenchScreen::new); - MenuScreens.register(BATTERY_BOX_CONTAINER.get(), BatteryBoxScreen::new); - MenuScreens.register(AUTO_CRAFTER_CONTAINER.get(), AutoCrafterScreen::new); - MenuScreens.register(CHARGING_BENCH_CONTAINER.get(), ChargingBenchScreen::new); - MenuScreens.register(DEPLOYER_CONTAINER.get(), DeployerScreen::new); + MenuScreens.register(PROJECT_BENCH_MENU.get(), ProjectBenchScreen::new); + MenuScreens.register(BATTERY_BOX_MENU.get(), BatteryBoxScreen::new); + MenuScreens.register(AUTO_CRAFTER_MENU.get(), AutoCrafterScreen::new); + MenuScreens.register(CHARGING_BENCH_MENU.get(), ChargingBenchScreen::new); + MenuScreens.register(DEPLOYER_MENU.get(), DeployerScreen::new); // Register item model properties addItemModelProperties(); @@ -101,7 +101,7 @@ private static void clientSetup(final FMLClientSetupEvent event) { private static void addItemModelProperties() { ItemProperties.register(BATTERY_BOX_BLOCK.get().asItem(), ITEM_MODEL_PROPERTY_CHARGE_LEVEL, (stack, world, entity, seed) -> { if (stack.hasTag()) { - return stack.getTag().getInt(BatteryBoxTile.TAG_KEY_CHARGE_LEVEL_STATE); + return stack.getTag().getInt(BatteryBoxBlockEntity.TAG_KEY_CHARGE_LEVEL_STATE); } return 0.0F; }); diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionMenus.java b/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionMenus.java index a8dba033e..b66928293 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionMenus.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/init/ExpansionMenus.java @@ -11,18 +11,18 @@ @SuppressWarnings("NotNullFieldNotInitialized") public class ExpansionMenus { - public static RegistryObject> PROJECT_BENCH_CONTAINER; - public static RegistryObject> BATTERY_BOX_CONTAINER; - public static RegistryObject> AUTO_CRAFTER_CONTAINER; - public static RegistryObject> CHARGING_BENCH_CONTAINER; - public static RegistryObject> DEPLOYER_CONTAINER; + public static RegistryObject> PROJECT_BENCH_MENU; + public static RegistryObject> BATTERY_BOX_MENU; + public static RegistryObject> AUTO_CRAFTER_MENU; + public static RegistryObject> CHARGING_BENCH_MENU; + public static RegistryObject> DEPLOYER_MENU; public static void register() { - PROJECT_BENCH_CONTAINER = MENU_TYPES.register(ID_PROJECT_BENCH, () -> ICCLContainerType.create(ProjectBenchContainer.FACTORY)); - BATTERY_BOX_CONTAINER = MENU_TYPES.register(ID_BATTERY_BOX, () -> ICCLContainerType.create(BatteryBoxContainer.FACTORY)); - AUTO_CRAFTER_CONTAINER = MENU_TYPES.register(ID_AUTO_CRAFTER, () -> ICCLContainerType.create(AutoCrafterContainer.FACTORY)); - CHARGING_BENCH_CONTAINER = MENU_TYPES.register(ID_CHARGING_BENCH, () -> ICCLContainerType.create(ChargingBenchContainer.FACTORY)); - DEPLOYER_CONTAINER = MENU_TYPES.register(ID_DEPLOYER, () -> ICCLContainerType.create(DeployerContainerMenu.FACTORY)); + PROJECT_BENCH_MENU = MENU_TYPES.register(ID_PROJECT_BENCH, () -> ICCLContainerType.create(ProjectBenchMenu.FACTORY)); + BATTERY_BOX_MENU = MENU_TYPES.register(ID_BATTERY_BOX, () -> ICCLContainerType.create(BatteryBoxMenu.FACTORY)); + AUTO_CRAFTER_MENU = MENU_TYPES.register(ID_AUTO_CRAFTER, () -> ICCLContainerType.create(AutoCrafterMenu.FACTORY)); + CHARGING_BENCH_MENU = MENU_TYPES.register(ID_CHARGING_BENCH, () -> ICCLContainerType.create(ChargingBenchMenu.FACTORY)); + DEPLOYER_MENU = MENU_TYPES.register(ID_DEPLOYER, () -> ICCLContainerType.create(DeployerMenu.FACTORY)); } } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/AutoCrafterContainer.java b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/AutoCrafterMenu.java similarity index 86% rename from expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/AutoCrafterContainer.java rename to expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/AutoCrafterMenu.java index ea7360791..07fdde982 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/AutoCrafterContainer.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/AutoCrafterMenu.java @@ -4,7 +4,7 @@ import mrtjp.projectred.core.inventory.container.SimpleDataSlot; import mrtjp.projectred.expansion.init.ExpansionMenus; import mrtjp.projectred.expansion.item.RecipePlanItem; -import mrtjp.projectred.expansion.tile.AutoCrafterTile; +import mrtjp.projectred.expansion.tile.AutoCrafterBlockEntity; import mrtjp.projectred.lib.InventoryLib; import net.minecraft.world.Container; import net.minecraft.world.entity.player.Inventory; @@ -13,21 +13,21 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; -public class AutoCrafterContainer extends BaseMachineContainer { +public class AutoCrafterMenu extends BaseMachineMenu { - public static final ICCLContainerFactory FACTORY = (windowId, playerInv, packet) -> { - BlockEntity tile = playerInv.player.level.getBlockEntity(packet.readPos()); - if (!(tile instanceof AutoCrafterTile)) return null; - return new AutoCrafterContainer(playerInv, (AutoCrafterTile) tile, windowId); + public static final ICCLContainerFactory FACTORY = (windowId, playerInv, packet) -> { + BlockEntity tile = playerInv.player.getLevel().getBlockEntity(packet.readPos()); + if (!(tile instanceof AutoCrafterBlockEntity)) return null; + return new AutoCrafterMenu(playerInv, (AutoCrafterBlockEntity) tile, windowId); }; private final Inventory playerInventory; - private final AutoCrafterTile tile; + private final AutoCrafterBlockEntity tile; private int planSlot; - public AutoCrafterContainer(Inventory inventory, AutoCrafterTile tile, int windowId) { - super(ExpansionMenus.AUTO_CRAFTER_CONTAINER.get(), windowId, tile); + public AutoCrafterMenu(Inventory inventory, AutoCrafterBlockEntity tile, int windowId) { + super(ExpansionMenus.AUTO_CRAFTER_MENU.get(), windowId, tile); this.playerInventory = inventory; this.tile = tile; @@ -52,7 +52,7 @@ public boolean stillValid(Player player) { return !tile.isRemoved(); } - public AutoCrafterTile getAutoCrafterTile() { + public AutoCrafterBlockEntity getAutoCrafterTile() { return tile; } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BaseMachineContainer.java b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BaseMachineMenu.java similarity index 64% rename from expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BaseMachineContainer.java rename to expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BaseMachineMenu.java index 14400789c..b5898e507 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BaseMachineContainer.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BaseMachineMenu.java @@ -1,20 +1,20 @@ package mrtjp.projectred.expansion.inventory.container; -import mrtjp.projectred.core.inventory.container.BasePoweredTileContainer; +import mrtjp.projectred.core.inventory.container.BasePoweredBlockEntityMenu; import mrtjp.projectred.core.inventory.container.SimpleDataSlot; -import mrtjp.projectred.expansion.tile.BaseMachineTile; +import mrtjp.projectred.expansion.tile.BaseMachineBlockEntity; import net.minecraft.world.inventory.MenuType; import javax.annotation.Nullable; -public abstract class BaseMachineContainer extends BasePoweredTileContainer { +public abstract class BaseMachineMenu extends BasePoweredBlockEntityMenu { - private final BaseMachineTile tile; + private final BaseMachineBlockEntity tile; private int remainingWork; private int totalWork; - public BaseMachineContainer(@Nullable MenuType containerType, int windowId, BaseMachineTile tile) { + public BaseMachineMenu(@Nullable MenuType containerType, int windowId, BaseMachineBlockEntity tile) { super(containerType, windowId, tile); this.tile = tile; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BatteryBoxContainer.java b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BatteryBoxMenu.java similarity index 84% rename from expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BatteryBoxContainer.java rename to expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BatteryBoxMenu.java index 1d1e598cf..ae0a853ca 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BatteryBoxContainer.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/BatteryBoxMenu.java @@ -1,12 +1,12 @@ package mrtjp.projectred.expansion.inventory.container; import codechicken.lib.inventory.container.ICCLContainerFactory; -import mrtjp.projectred.core.inventory.container.BasePoweredTileContainer; +import mrtjp.projectred.core.inventory.container.BasePoweredBlockEntityMenu; import mrtjp.projectred.core.inventory.container.SimpleDataSlot; import mrtjp.projectred.expansion.init.ExpansionMenus; import mrtjp.projectred.expansion.item.IChargable; import mrtjp.projectred.expansion.item.IRechargableBattery; -import mrtjp.projectred.expansion.tile.BatteryBoxTile; +import mrtjp.projectred.expansion.tile.BatteryBoxBlockEntity; import mrtjp.projectred.lib.InventoryLib; import net.minecraft.world.Container; import net.minecraft.world.entity.player.Inventory; @@ -15,22 +15,22 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; -public class BatteryBoxContainer extends BasePoweredTileContainer { +public class BatteryBoxMenu extends BasePoweredBlockEntityMenu { - public static final ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { - BlockEntity tile = inventory.player.level.getBlockEntity(packet.readPos()); - if (!(tile instanceof BatteryBoxTile)) return null; + public static final ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { + BlockEntity tile = inventory.player.getLevel().getBlockEntity(packet.readPos()); + if (!(tile instanceof BatteryBoxBlockEntity)) return null; - return new BatteryBoxContainer(inventory, (BatteryBoxTile) tile, windowId); + return new BatteryBoxMenu(inventory, (BatteryBoxBlockEntity) tile, windowId); }; private final Inventory playerInventory; - private final BatteryBoxTile tile; + private final BatteryBoxBlockEntity tile; protected int powerStored = 0; - public BatteryBoxContainer(Inventory inventory, BatteryBoxTile tile, int windowId) { - super(ExpansionMenus.BATTERY_BOX_CONTAINER.get(), windowId, tile); + public BatteryBoxMenu(Inventory inventory, BatteryBoxBlockEntity tile, int windowId) { + super(ExpansionMenus.BATTERY_BOX_MENU.get(), windowId, tile); this.playerInventory = inventory; this.tile = tile; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ChargingBenchContainer.java b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ChargingBenchMenu.java similarity index 86% rename from expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ChargingBenchContainer.java rename to expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ChargingBenchMenu.java index 3639015fe..133626c87 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ChargingBenchContainer.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ChargingBenchMenu.java @@ -1,11 +1,11 @@ package mrtjp.projectred.expansion.inventory.container; import codechicken.lib.inventory.container.ICCLContainerFactory; -import mrtjp.projectred.core.inventory.container.BasePoweredTileContainer; +import mrtjp.projectred.core.inventory.container.BasePoweredBlockEntityMenu; import mrtjp.projectred.core.inventory.container.SimpleDataSlot; import mrtjp.projectred.expansion.init.ExpansionMenus; import mrtjp.projectred.expansion.item.IChargable; -import mrtjp.projectred.expansion.tile.ChargingBenchTile; +import mrtjp.projectred.expansion.tile.ChargingBenchBlockEntity; import mrtjp.projectred.lib.InventoryLib; import net.minecraft.world.Container; import net.minecraft.world.entity.player.Inventory; @@ -14,22 +14,22 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; -public class ChargingBenchContainer extends BasePoweredTileContainer { +public class ChargingBenchMenu extends BasePoweredBlockEntityMenu { - public static final ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { - BlockEntity tile = inventory.player.level.getBlockEntity(packet.readPos()); - if (!(tile instanceof ChargingBenchTile)) return null; + public static final ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { + BlockEntity tile = inventory.player.getLevel().getBlockEntity(packet.readPos()); + if (!(tile instanceof ChargingBenchBlockEntity)) return null; - return new ChargingBenchContainer(inventory, (ChargingBenchTile) tile, windowId); + return new ChargingBenchMenu(inventory, (ChargingBenchBlockEntity) tile, windowId); }; private final Inventory playerInventory; - private final ChargingBenchTile tile; + private final ChargingBenchBlockEntity tile; protected int powerStored = 0; - public ChargingBenchContainer(Inventory inventory, ChargingBenchTile tile, int windowId) { - super(ExpansionMenus.CHARGING_BENCH_CONTAINER.get(), windowId, tile); + public ChargingBenchMenu(Inventory inventory, ChargingBenchBlockEntity tile, int windowId) { + super(ExpansionMenus.CHARGING_BENCH_MENU.get(), windowId, tile); this.playerInventory = inventory; this.tile = tile; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/DeployerContainerMenu.java b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/DeployerMenu.java similarity index 85% rename from expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/DeployerContainerMenu.java rename to expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/DeployerMenu.java index 5a5fc9894..fb3e03288 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/DeployerContainerMenu.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/DeployerMenu.java @@ -11,19 +11,19 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; -public class DeployerContainerMenu extends AbstractContainerMenu { +public class DeployerMenu extends AbstractContainerMenu { - public static final ICCLContainerFactory FACTORY = (windowId, playerInv, packet) -> { - BlockEntity tile = playerInv.player.level.getBlockEntity(packet.readPos()); + public static final ICCLContainerFactory FACTORY = (windowId, playerInv, packet) -> { + BlockEntity tile = playerInv.player.getLevel().getBlockEntity(packet.readPos()); if (!(tile instanceof DeployerBlockEntity dbe)) return null; - return new DeployerContainerMenu(playerInv, dbe, windowId); + return new DeployerMenu(playerInv, dbe, windowId); }; private final DeployerBlockEntity tile; private final Inventory playerInventory; - public DeployerContainerMenu(Inventory playerInventory, DeployerBlockEntity tile, int windowId) { - super(ExpansionMenus.DEPLOYER_CONTAINER.get(), windowId); + public DeployerMenu(Inventory playerInventory, DeployerBlockEntity tile, int windowId) { + super(ExpansionMenus.DEPLOYER_MENU.get(), windowId); this.playerInventory = playerInventory; this.tile = tile; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ProjectBenchContainer.java b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ProjectBenchMenu.java similarity index 90% rename from expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ProjectBenchContainer.java rename to expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ProjectBenchMenu.java index 781d332ea..592165e7f 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ProjectBenchContainer.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/inventory/container/ProjectBenchMenu.java @@ -3,7 +3,7 @@ import codechicken.lib.inventory.container.ICCLContainerFactory; import mrtjp.projectred.expansion.init.ExpansionMenus; import mrtjp.projectred.expansion.item.RecipePlanItem; -import mrtjp.projectred.expansion.tile.ProjectBenchTile; +import mrtjp.projectred.expansion.tile.ProjectBenchBlockEntity; import mrtjp.projectred.lib.InventoryLib; import net.minecraft.world.Container; import net.minecraft.world.entity.player.Inventory; @@ -14,19 +14,19 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; -public class ProjectBenchContainer extends AbstractContainerMenu { +public class ProjectBenchMenu extends AbstractContainerMenu { - public static final ICCLContainerFactory FACTORY = (windowId, playerInv, packet) -> { - BlockEntity tile = playerInv.player.level.getBlockEntity(packet.readPos()); - if (!(tile instanceof ProjectBenchTile)) return null; - return new ProjectBenchContainer(playerInv, (ProjectBenchTile) tile, windowId); + public static final ICCLContainerFactory FACTORY = (windowId, playerInv, packet) -> { + BlockEntity tile = playerInv.player.getLevel().getBlockEntity(packet.readPos()); + if (!(tile instanceof ProjectBenchBlockEntity)) return null; + return new ProjectBenchMenu(playerInv, (ProjectBenchBlockEntity) tile, windowId); }; - private final ProjectBenchTile tile; + private final ProjectBenchBlockEntity tile; private final Inventory playerInventory; - public ProjectBenchContainer(Inventory playerInventory, ProjectBenchTile tile, int windowId) { - super(ExpansionMenus.PROJECT_BENCH_CONTAINER.get(), windowId); + public ProjectBenchMenu(Inventory playerInventory, ProjectBenchBlockEntity tile, int windowId) { + super(ExpansionMenus.PROJECT_BENCH_MENU.get(), windowId); this.playerInventory = playerInventory; this.tile = tile; @@ -59,7 +59,7 @@ public int getMaxStackSize() { }); } - public ProjectBenchTile getProjectBenchTile() { + public ProjectBenchBlockEntity getProjectBenchTile() { return tile; } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/AutoCrafterTile.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/AutoCrafterBlockEntity.java similarity index 91% rename from expansion/src/main/java/mrtjp/projectred/expansion/tile/AutoCrafterTile.java rename to expansion/src/main/java/mrtjp/projectred/expansion/tile/AutoCrafterBlockEntity.java index d37f9995c..b4060d060 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/AutoCrafterTile.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/AutoCrafterBlockEntity.java @@ -3,10 +3,10 @@ import codechicken.lib.data.MCDataInput; import codechicken.lib.data.MCDataOutput; import codechicken.lib.vec.Vector3; -import mrtjp.projectred.core.inventory.BaseInventory; +import mrtjp.projectred.core.inventory.BaseContainer; import mrtjp.projectred.expansion.CraftingHelper; import mrtjp.projectred.expansion.init.ExpansionBlocks; -import mrtjp.projectred.expansion.inventory.container.AutoCrafterContainer; +import mrtjp.projectred.expansion.inventory.container.AutoCrafterMenu; import mrtjp.projectred.expansion.item.RecipePlanItem; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -29,18 +29,18 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; -public class AutoCrafterTile extends BaseMachineTile implements CraftingHelper.InventorySource { +public class AutoCrafterBlockEntity extends BaseMachineBlockEntity implements CraftingHelper.InventorySource { private static final int KEY_CYCLE_PLAN = 2; - private final BaseInventory planInventory = new BaseInventory(9) { + private final BaseContainer planInventory = new BaseContainer(9) { @Override public boolean canPlaceItem(int slot, ItemStack stack) { return RecipePlanItem.hasRecipeInside(stack); } }; - private final BaseInventory storageInventory = new BaseInventory(18); - private final BaseInventory craftingGrid = new BaseInventory(9); + private final BaseContainer storageInventory = new BaseContainer(18); + private final BaseContainer craftingGrid = new BaseContainer(9); private final LazyOptional handler = LazyOptional.of(() -> new InvWrapper(storageInventory)); @@ -50,8 +50,8 @@ public boolean canPlaceItem(int slot, ItemStack stack) { private int planSlot = 0; private int idleTicksOnPlan = 0; - public AutoCrafterTile(BlockPos pos, BlockState state) { - super(ExpansionBlocks.AUTO_CRAFTER_TILE.get(), pos, state); + public AutoCrafterBlockEntity(BlockPos pos, BlockState state) { + super(ExpansionBlocks.AUTO_CRAFTER_BLOCK_ENTITY.get(), pos, state); planInventory.addListener(this::onInventoryChanged); storageInventory.addListener(this::onInventoryChanged); } @@ -104,7 +104,7 @@ public void sendCyclePlan() { @Override protected AbstractContainerMenu createMenu(int windowId, Inventory playerInventory, Player player) { - return new AutoCrafterContainer(playerInventory, this, windowId); + return new AutoCrafterMenu(playerInventory, this, windowId); } @Override diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseDeviceTile.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseDeviceBlockEntity.java similarity index 95% rename from expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseDeviceTile.java rename to expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseDeviceBlockEntity.java index 23ef0565f..fa10746f6 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseDeviceTile.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseDeviceBlockEntity.java @@ -4,7 +4,7 @@ import codechicken.lib.data.MCDataOutput; import mrtjp.projectred.api.IScrewdriver; import mrtjp.projectred.core.block.ProjectRedBlock; -import mrtjp.projectred.core.tile.ProjectRedTile; +import mrtjp.projectred.core.tile.ProjectRedBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.InteractionHand; @@ -15,7 +15,7 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -public abstract class BaseDeviceTile extends ProjectRedTile { +public abstract class BaseDeviceBlockEntity extends ProjectRedBlockEntity { protected int side = 0; protected boolean powered = false; @@ -23,7 +23,7 @@ public abstract class BaseDeviceTile extends ProjectRedTile { private long schedTick = -1L; - public BaseDeviceTile(BlockEntityType type, BlockPos pos, BlockState state) { + public BaseDeviceBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); side = state.getValue(ProjectRedBlock.SIDE); } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseFrameMoverTile.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseFrameMoverBlockEntity.java similarity index 95% rename from expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseFrameMoverTile.java rename to expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseFrameMoverBlockEntity.java index 72388be3d..57fa05ae2 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseFrameMoverTile.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseFrameMoverBlockEntity.java @@ -19,7 +19,7 @@ import javax.annotation.Nullable; import java.util.Set; -public abstract class BaseFrameMoverTile extends LowLoadPoweredTile implements RedstoneConnector, IOrientableBlockEntity, Frame { +public abstract class BaseFrameMoverBlockEntity extends LowLoadPoweredBlockEntity implements RedstoneConnector, IOrientableBlockEntity, Frame { protected boolean powered = false; protected boolean isCharged = false; @@ -27,7 +27,7 @@ public abstract class BaseFrameMoverTile extends LowLoadPoweredTile implements R private @Nullable MovementDescriptor descriptor = null; - public BaseFrameMoverTile(BlockEntityType type, BlockPos pos, BlockState state) { + public BaseFrameMoverBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseMachineTile.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseMachineBlockEntity.java similarity index 96% rename from expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseMachineTile.java rename to expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseMachineBlockEntity.java index 3083a7f9d..ebd9f2eeb 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseMachineTile.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BaseMachineBlockEntity.java @@ -17,14 +17,14 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -public abstract class BaseMachineTile extends LowLoadPoweredTile { +public abstract class BaseMachineBlockEntity extends LowLoadPoweredBlockEntity { private boolean isWorking = false; private boolean isCharged = false; private int remainingWork = 0; private int totalWork = 0; - public BaseMachineTile(BlockEntityType type, BlockPos pos, BlockState state) { + public BaseMachineBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BasePneumaticDeviceBlockEntity.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BasePneumaticDeviceBlockEntity.java index 6a0d5e867..f9569999e 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BasePneumaticDeviceBlockEntity.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BasePneumaticDeviceBlockEntity.java @@ -4,7 +4,7 @@ import codechicken.lib.vec.Vector3; import codechicken.multipart.api.tile.RedstoneConnector; import mrtjp.projectred.core.CenterLookup; -import mrtjp.projectred.core.tile.ProjectRedTile; +import mrtjp.projectred.core.tile.ProjectRedBlockEntity; import mrtjp.projectred.expansion.part.PneumaticTubePayload; import mrtjp.projectred.expansion.pneumatics.PneumaticQueue; import mrtjp.projectred.expansion.pneumatics.PneumaticTransportContainer; @@ -18,7 +18,7 @@ import java.util.Objects; -public abstract class BasePneumaticDeviceBlockEntity extends BaseDeviceTile implements PneumaticTransportDevice, RedstoneConnector { +public abstract class BasePneumaticDeviceBlockEntity extends BaseDeviceBlockEntity implements PneumaticTransportDevice, RedstoneConnector { protected final PneumaticQueue itemQueue = new PneumaticQueue(); @@ -47,7 +47,7 @@ public void loadFromNBT(CompoundTag tag) { public void onBlockRemoved() { super.onBlockRemoved(); while (!itemQueue.isEmpty()) { - ProjectRedTile.dropItem( + ProjectRedBlockEntity.dropItem( Objects.requireNonNull(itemQueue.poll()).getItemStack(), getLevel(), Vector3.fromTileCenter(this)); diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BatteryBoxTile.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BatteryBoxBlockEntity.java similarity index 95% rename from expansion/src/main/java/mrtjp/projectred/expansion/tile/BatteryBoxTile.java rename to expansion/src/main/java/mrtjp/projectred/expansion/tile/BatteryBoxBlockEntity.java index 0440b0889..49828d6f5 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BatteryBoxTile.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BatteryBoxBlockEntity.java @@ -4,10 +4,10 @@ import codechicken.lib.data.MCDataOutput; import codechicken.lib.util.ServerUtils; import codechicken.lib.vec.Vector3; -import mrtjp.projectred.core.inventory.BaseInventory; +import mrtjp.projectred.core.inventory.BaseContainer; import mrtjp.projectred.expansion.block.BatteryBoxBlock; import mrtjp.projectred.expansion.init.ExpansionBlocks; -import mrtjp.projectred.expansion.inventory.container.BatteryBoxContainer; +import mrtjp.projectred.expansion.inventory.container.BatteryBoxMenu; import mrtjp.projectred.expansion.item.IChargable; import mrtjp.projectred.expansion.item.IRechargableBattery; import net.minecraft.core.BlockPos; @@ -33,7 +33,7 @@ import static mrtjp.projectred.expansion.ProjectRedExpansion.LOGGER; -public class BatteryBoxTile extends LowLoadPoweredTile { +public class BatteryBoxBlockEntity extends LowLoadPoweredBlockEntity { public static final String TAG_KEY_POWER_STORED = "power_stored"; public static final String TAG_KEY_CHARGE_LEVEL_STATE = "charge_level"; @@ -43,8 +43,8 @@ public class BatteryBoxTile extends LowLoadPoweredTile { private int powerStored = 0; - public BatteryBoxTile(BlockPos pos, BlockState state) { - super(ExpansionBlocks.BATTERY_BOX_TILE.get(), pos, state); + public BatteryBoxBlockEntity(BlockPos pos, BlockState state) { + super(ExpansionBlocks.BATTERY_BOX_BLOCK_ENTITY.get(), pos, state); inventory.addListener(c -> setChanged()); } @@ -78,7 +78,7 @@ public InteractionResult onBlockActivated(Player player, InteractionHand hand, B ServerUtils.openContainer( (ServerPlayer) player, new SimpleMenuProvider( - (id, inv, p) -> new BatteryBoxContainer(inv, this, id), + (id, inv, p) -> new BatteryBoxMenu(inv, this, id), getBlockState().getBlock().getName()), p -> p.writePos(getBlockPos())); } @@ -240,7 +240,7 @@ public int getPowerStored() { } //endregion - private static class BatteryBoxInventory extends BaseInventory implements WorldlyContainer { + private static class BatteryBoxInventory extends BaseContainer implements WorldlyContainer { private static final int[] TOP_SLOTS = new int[]{0}; private static final int[] BOTTOM_SLOTS = new int[]{1}; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BlockBreakerBlockEntity.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BlockBreakerBlockEntity.java index 31e1e2cc8..ea9102444 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/BlockBreakerBlockEntity.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/BlockBreakerBlockEntity.java @@ -27,7 +27,7 @@ public class BlockBreakerBlockEntity extends BasePneumaticDeviceBlockEntity impl private static final GameProfile PR_FAKE_PLAYER = new GameProfile(UUID.fromString("6140461b-e5b4-41ba-beb1-dce616e6abc0"), "[ProjectRed]"); public BlockBreakerBlockEntity(BlockPos pos, BlockState state) { - super(ExpansionBlocks.BLOCK_BREAKER_TILE.get(), pos, state); + super(ExpansionBlocks.BLOCK_BREAKER_BLOCK_ENTITY.get(), pos, state); } //region PneumaticTransportDevice implementation diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/ChargingBenchTile.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/ChargingBenchBlockEntity.java similarity index 94% rename from expansion/src/main/java/mrtjp/projectred/expansion/tile/ChargingBenchTile.java rename to expansion/src/main/java/mrtjp/projectred/expansion/tile/ChargingBenchBlockEntity.java index 985e6f038..28172194a 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/ChargingBenchTile.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/ChargingBenchBlockEntity.java @@ -5,9 +5,9 @@ import codechicken.lib.util.ServerUtils; import codechicken.lib.vec.Vector3; import mrtjp.projectred.core.block.ProjectRedBlock; -import mrtjp.projectred.core.inventory.BaseInventory; +import mrtjp.projectred.core.inventory.BaseContainer; import mrtjp.projectred.expansion.init.ExpansionBlocks; -import mrtjp.projectred.expansion.inventory.container.ChargingBenchContainer; +import mrtjp.projectred.expansion.inventory.container.ChargingBenchMenu; import mrtjp.projectred.expansion.item.IChargable; import mrtjp.projectred.lib.InventoryLib; import net.minecraft.core.BlockPos; @@ -29,7 +29,7 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; -public class ChargingBenchTile extends LowLoadPoweredTile { +public class ChargingBenchBlockEntity extends LowLoadPoweredBlockEntity { private final ChargingBenchInventory inventory = new ChargingBenchInventory(); private final LazyOptional[] handlers = SidedInvWrapper.create(inventory, Direction.UP, Direction.DOWN); @@ -38,8 +38,8 @@ public class ChargingBenchTile extends LowLoadPoweredTile { private int chargeSlot = 0; private int powerStored = 0; - public ChargingBenchTile(BlockPos pos, BlockState state) { - super(ExpansionBlocks.CHARGING_BENCH_TILE.get(), pos, state); + public ChargingBenchBlockEntity(BlockPos pos, BlockState state) { + super(ExpansionBlocks.CHARGING_BENCH_BLOCK_ENTITY.get(), pos, state); inventory.addListener(c -> setChanged()); } @@ -75,7 +75,7 @@ public InteractionResult onBlockActivated(Player player, InteractionHand hand, B ServerUtils.openContainer( (ServerPlayer) player, new SimpleMenuProvider( - (id, inv, p) -> new ChargingBenchContainer(inv, this, id), + (id, inv, p) -> new ChargingBenchMenu(inv, this, id), getBlockState().getBlock().getName()), p -> p.writePos(getBlockPos())); } @@ -201,7 +201,7 @@ public int getPowerStored() { } //endregion - private static class ChargingBenchInventory extends BaseInventory implements WorldlyContainer { + private static class ChargingBenchInventory extends BaseContainer implements WorldlyContainer { private static final int[] TOP_SLOTS = new int[8]; private static final int[] BOTTOM_SLOTS = new int[8]; diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/DeployerBlockEntity.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/DeployerBlockEntity.java index ef8a3209e..e463d5e85 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/DeployerBlockEntity.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/DeployerBlockEntity.java @@ -3,9 +3,9 @@ import codechicken.lib.util.ServerUtils; import codechicken.lib.vec.Vector3; import com.mojang.authlib.GameProfile; -import mrtjp.projectred.core.inventory.BaseInventory; +import mrtjp.projectred.core.inventory.BaseContainer; import mrtjp.projectred.expansion.init.ExpansionBlocks; -import mrtjp.projectred.expansion.inventory.container.DeployerContainerMenu; +import mrtjp.projectred.expansion.inventory.container.DeployerMenu; import net.minecraft.commands.arguments.EntityAnchorArgument; import net.minecraft.core.BlockPos; import net.minecraft.core.Direction; @@ -43,17 +43,17 @@ import static mrtjp.projectred.expansion.ProjectRedExpansion.LOGGER; -public class DeployerBlockEntity extends BaseDeviceTile { +public class DeployerBlockEntity extends BaseDeviceBlockEntity { // Fake player ID used to break blocks private static final GameProfile PR_FAKE_PLAYER = new GameProfile(UUID.fromString("6140461b-e5b4-41ba-beb1-dce616e6abc0"), "[ProjectRed]"); - private final BaseInventory inventory = new BaseInventory(9); + private final BaseContainer inventory = new BaseContainer(9); private final LazyOptional handler = LazyOptional.of(() -> new InvWrapper(inventory)); public DeployerBlockEntity(BlockPos pos, BlockState state) { - super(ExpansionBlocks.DEPLOYER_TILE.get(), pos, state); + super(ExpansionBlocks.DEPLOYER_BLOCK_ENTITY.get(), pos, state); inventory.addListener(c -> setChanged()); } @@ -83,7 +83,7 @@ public InteractionResult onBlockActivated(Player player, InteractionHand hand, B ServerUtils.openContainer( (ServerPlayer) player, new SimpleMenuProvider( - (id, inv, p) -> new DeployerContainerMenu(inv, this, id), + (id, inv, p) -> new DeployerMenu(inv, this, id), getBlockState().getBlock().getName()), p -> p.writePos(getBlockPos())); } @@ -280,7 +280,7 @@ public void invalidateCaps() { //endregion //region ContainerMenu interface - public BaseInventory getInventory() { + public BaseContainer getInventory() { return inventory; } //endregion diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/FireStarterTile.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/FireStarterBlockEntity.java similarity index 92% rename from expansion/src/main/java/mrtjp/projectred/expansion/tile/FireStarterTile.java rename to expansion/src/main/java/mrtjp/projectred/expansion/tile/FireStarterBlockEntity.java index 6ec3ec5e3..8a3a72553 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/FireStarterTile.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/FireStarterBlockEntity.java @@ -13,10 +13,10 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.level.block.state.properties.BlockStateProperties; -public class FireStarterTile extends BaseDeviceTile implements RedstoneConnector { +public class FireStarterBlockEntity extends BaseDeviceBlockEntity implements RedstoneConnector { - public FireStarterTile(BlockPos pos, BlockState state) { - super(ExpansionBlocks.FIRE_STARTER_TILE.get(), pos, state); + public FireStarterBlockEntity(BlockPos pos, BlockState state) { + super(ExpansionBlocks.FIRE_STARTER_BLOCK_ENTITY.get(), pos, state); } @Override diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/FrameActuatorTile.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/FrameActuatorBlockEntity.java similarity index 62% rename from expansion/src/main/java/mrtjp/projectred/expansion/tile/FrameActuatorTile.java rename to expansion/src/main/java/mrtjp/projectred/expansion/tile/FrameActuatorBlockEntity.java index abcf6e153..597769f4a 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/FrameActuatorTile.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/FrameActuatorBlockEntity.java @@ -4,10 +4,10 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.state.BlockState; -public class FrameActuatorTile extends BaseFrameMoverTile { +public class FrameActuatorBlockEntity extends BaseFrameMoverBlockEntity { - public FrameActuatorTile(BlockPos pos, BlockState state) { - super(ExpansionBlocks.FRAME_ACTUATOR_TILE.get(), pos, state); + public FrameActuatorBlockEntity(BlockPos pos, BlockState state) { + super(ExpansionBlocks.FRAME_ACTUATOR_BLOCK_ENTITY.get(), pos, state); } @Override diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/FrameMotorTile.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/FrameMotorBlockEntity.java similarity index 67% rename from expansion/src/main/java/mrtjp/projectred/expansion/tile/FrameMotorTile.java rename to expansion/src/main/java/mrtjp/projectred/expansion/tile/FrameMotorBlockEntity.java index 0423b6fb7..fcc6341ee 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/FrameMotorTile.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/FrameMotorBlockEntity.java @@ -5,10 +5,10 @@ import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.state.BlockState; -public class FrameMotorTile extends BaseFrameMoverTile { +public class FrameMotorBlockEntity extends BaseFrameMoverBlockEntity { - public FrameMotorTile(BlockPos pos, BlockState state) { - super(ExpansionBlocks.FRAME_MOTOR_TILE.get(), pos, state); + public FrameMotorBlockEntity(BlockPos pos, BlockState state) { + super(ExpansionBlocks.FRAME_MOTOR_BLOCK_ENTITY.get(), pos, state); } @Override diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/LowLoadPoweredTile.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/LowLoadPoweredBlockEntity.java similarity index 87% rename from expansion/src/main/java/mrtjp/projectred/expansion/tile/LowLoadPoweredTile.java rename to expansion/src/main/java/mrtjp/projectred/expansion/tile/LowLoadPoweredBlockEntity.java index c63cb916c..51f3fe3a4 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/LowLoadPoweredTile.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/LowLoadPoweredBlockEntity.java @@ -4,19 +4,19 @@ import mrtjp.projectred.core.power.ILowLoadMachine; import mrtjp.projectred.core.power.ILowLoadPowerLine; import mrtjp.projectred.core.power.PowerConductor; -import mrtjp.projectred.core.tile.BasePoweredTile; +import mrtjp.projectred.core.tile.BasePoweredBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -public abstract class LowLoadPoweredTile extends BasePoweredTile implements ILowLoadMachine { +public abstract class LowLoadPoweredBlockEntity extends BasePoweredBlockEntity implements ILowLoadMachine { protected final PowerConductor conductor = new PowerConductor(this, 0.01, 160); private int chargeFlow = 0; - public LowLoadPoweredTile(BlockEntityType type, BlockPos pos, BlockState state) { + public LowLoadPoweredBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/ProjectBenchTile.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/ProjectBenchBlockEntity.java similarity index 89% rename from expansion/src/main/java/mrtjp/projectred/expansion/tile/ProjectBenchTile.java rename to expansion/src/main/java/mrtjp/projectred/expansion/tile/ProjectBenchBlockEntity.java index d1441078c..fc2289044 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/ProjectBenchTile.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/ProjectBenchBlockEntity.java @@ -4,12 +4,12 @@ import codechicken.lib.data.MCDataOutput; import codechicken.lib.util.ServerUtils; import codechicken.lib.vec.Vector3; -import mrtjp.projectred.core.inventory.BaseInventory; -import mrtjp.projectred.core.tile.IPacketReceiverTile; -import mrtjp.projectred.core.tile.ProjectRedTile; +import mrtjp.projectred.core.inventory.BaseContainer; +import mrtjp.projectred.core.tile.IPacketReceiverBlockEntity; +import mrtjp.projectred.core.tile.ProjectRedBlockEntity; import mrtjp.projectred.expansion.CraftingHelper; import mrtjp.projectred.expansion.init.ExpansionBlocks; -import mrtjp.projectred.expansion.inventory.container.ProjectBenchContainer; +import mrtjp.projectred.expansion.inventory.container.ProjectBenchMenu; import mrtjp.projectred.expansion.item.RecipePlanItem; import mrtjp.projectred.lib.InventoryLib; import net.minecraft.core.BlockPos; @@ -32,20 +32,20 @@ import javax.annotation.Nonnull; import javax.annotation.Nullable; -public class ProjectBenchTile extends ProjectRedTile implements IPacketReceiverTile, CraftingHelper.InventorySource { +public class ProjectBenchBlockEntity extends ProjectRedBlockEntity implements IPacketReceiverBlockEntity, CraftingHelper.InventorySource { private static final int KEY_WRITE_PLAN = 2; private static final int KEY_CLEAR_GRID = 3; - private final BaseInventory planInventory = new BaseInventory(1) { + private final BaseContainer planInventory = new BaseContainer(1) { @Override public boolean canPlaceItem(int slot, ItemStack stack) { return stack.getItem() instanceof RecipePlanItem; } }; - private final BaseInventory craftingGrid = new BaseInventory(9); - private final BaseInventory storageInventory = new BaseInventory(18); - private final BaseInventory planCraftingGrid = new BaseInventory(9); + private final BaseContainer craftingGrid = new BaseContainer(9); + private final BaseContainer storageInventory = new BaseContainer(18); + private final BaseContainer planCraftingGrid = new BaseContainer(9); private final CraftingHelper craftingHelper = new CraftingHelper(this); private final LazyOptional storageInventoryCap = LazyOptional.of(this::createStorageInventoryCap); @@ -53,8 +53,8 @@ public boolean canPlaceItem(int slot, ItemStack stack) { private boolean isPlanRecipe = false; private boolean recipeNeedsUpdate = true; - public ProjectBenchTile(BlockPos pos, BlockState state) { - super(ExpansionBlocks.PROJECT_BENCH_TILE.get(), pos, state); + public ProjectBenchBlockEntity(BlockPos pos, BlockState state) { + super(ExpansionBlocks.PROJECT_BENCH_BLOCK_ENTITY.get(), pos, state); planInventory.addListener(this::onInventoryChanged); craftingGrid.addListener(this::onInventoryChanged); @@ -118,7 +118,7 @@ public InteractionResult onBlockActivated(Player player, InteractionHand hand, B ServerUtils.openContainer( (ServerPlayer) player, new SimpleMenuProvider( - (id, inv, p) -> new ProjectBenchContainer(inv, this, id), + (id, inv, p) -> new ProjectBenchMenu(inv, this, id), getBlockState().getBlock().getName()), p -> p.writePos(getBlockPos())); } @@ -213,8 +213,8 @@ private void clearGrid(ServerPlayer player) { // Target this player's container specifically in case clearing grid will require // items to spill into player inventory AbstractContainerMenu container = player.containerMenu; - if (container instanceof ProjectBenchContainer) { - ((ProjectBenchContainer) container).transferAllFromGrid(); + if (container instanceof ProjectBenchMenu) { + ((ProjectBenchMenu) container).transferAllFromGrid(); updateRecipeIfNeeded(); } } diff --git a/expansion/src/main/java/mrtjp/projectred/expansion/tile/TransposerBlockEntity.java b/expansion/src/main/java/mrtjp/projectred/expansion/tile/TransposerBlockEntity.java index 0efb18a9c..eca66b952 100644 --- a/expansion/src/main/java/mrtjp/projectred/expansion/tile/TransposerBlockEntity.java +++ b/expansion/src/main/java/mrtjp/projectred/expansion/tile/TransposerBlockEntity.java @@ -13,7 +13,7 @@ public class TransposerBlockEntity extends BasePneumaticDeviceBlockEntity implements RedstoneConnector { public TransposerBlockEntity(BlockPos pos, BlockState state) { - super(ExpansionBlocks.TRANSPOSER_BLOCK_TILE.get(), pos, state); + super(ExpansionBlocks.TRANSPOSER_BLOCK_ENTITY.get(), pos, state); } //region BaseDeviceTile implementation diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/gui/screen/inventory/BackpackScreen.java b/exploration/src/main/java/mrtjp/projectred/exploration/gui/screen/inventory/BackpackScreen.java index 4a7bcb1ab..18c90df3b 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/gui/screen/inventory/BackpackScreen.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/gui/screen/inventory/BackpackScreen.java @@ -2,7 +2,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; -import mrtjp.projectred.exploration.inventory.container.BackpackContainer; +import mrtjp.projectred.exploration.inventory.container.BackpackMenu; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; import net.minecraft.network.chat.Component; @@ -11,11 +11,11 @@ import static mrtjp.projectred.exploration.ProjectRedExploration.MOD_ID; -public class BackpackScreen extends RedUIContainerScreen { +public class BackpackScreen extends RedUIContainerScreen { public static final ResourceLocation BACKGROUND = new ResourceLocation(MOD_ID, "textures/gui/backpack.png"); - public BackpackScreen(BackpackContainer container, Inventory playerInventory, Component title) { + public BackpackScreen(BackpackMenu container, Inventory playerInventory, Component title) { super(176, 168, container, playerInventory, title); inventoryLabelX = 8; diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationClientInit.java b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationClientInit.java index 2f1362361..50784288a 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationClientInit.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationClientInit.java @@ -6,7 +6,7 @@ import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent; import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext; -import static mrtjp.projectred.exploration.init.ExplorationMenus.BACKPACK_CONTAINER; +import static mrtjp.projectred.exploration.init.ExplorationMenus.BACKPACK_MENU; public class ExplorationClientInit { @@ -19,6 +19,6 @@ public static void init() { private static void clientSetup(final FMLClientSetupEvent event) { // Register screens - MenuScreens.register(BACKPACK_CONTAINER.get(), BackpackScreen::new); + MenuScreens.register(BACKPACK_MENU.get(), BackpackScreen::new); } } diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationMenus.java b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationMenus.java index fc56bb5ce..10cb2b6a0 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationMenus.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/init/ExplorationMenus.java @@ -1,7 +1,7 @@ package mrtjp.projectred.exploration.init; import codechicken.lib.inventory.container.ICCLContainerType; -import mrtjp.projectred.exploration.inventory.container.BackpackContainer; +import mrtjp.projectred.exploration.inventory.container.BackpackMenu; import net.minecraft.world.inventory.MenuType; import net.minecraftforge.registries.RegistryObject; @@ -12,10 +12,10 @@ public class ExplorationMenus { public static final String ID_BACKPACK_CONTAINER = "backpack"; - public static RegistryObject> BACKPACK_CONTAINER; + public static RegistryObject> BACKPACK_MENU; public static void register() { - BACKPACK_CONTAINER = MENU_TYPES.register(ID_BACKPACK_CONTAINER, () -> ICCLContainerType.create(BackpackContainer.FACTORY)); + BACKPACK_MENU = MENU_TYPES.register(ID_BACKPACK_CONTAINER, () -> ICCLContainerType.create(BackpackMenu.FACTORY)); } } diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/inventory/BackpackInventory.java b/exploration/src/main/java/mrtjp/projectred/exploration/inventory/BackpackInventory.java index 10c2a3080..317ebda26 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/inventory/BackpackInventory.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/inventory/BackpackInventory.java @@ -1,12 +1,12 @@ package mrtjp.projectred.exploration.inventory; -import mrtjp.projectred.core.inventory.BaseInventory; +import mrtjp.projectred.core.inventory.BaseContainer; import mrtjp.projectred.exploration.item.BackpackItem; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.item.ItemStack; -public class BackpackInventory extends BaseInventory { +public class BackpackInventory extends BaseContainer { public BackpackInventory(int inventorySize) { super(inventorySize); diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/inventory/container/BackpackContainer.java b/exploration/src/main/java/mrtjp/projectred/exploration/inventory/container/BackpackMenu.java similarity index 94% rename from exploration/src/main/java/mrtjp/projectred/exploration/inventory/container/BackpackContainer.java rename to exploration/src/main/java/mrtjp/projectred/exploration/inventory/container/BackpackMenu.java index facae307b..f862cc487 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/inventory/container/BackpackContainer.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/inventory/container/BackpackMenu.java @@ -14,16 +14,16 @@ import net.minecraft.world.item.ItemStack; -public class BackpackContainer extends AbstractContainerMenu { +public class BackpackMenu extends AbstractContainerMenu { - public static final ICCLContainerFactory FACTORY = (windowId, playerInv, packet) -> new BackpackContainer(windowId, playerInv); + public static final ICCLContainerFactory FACTORY = (windowId, playerInv, packet) -> new BackpackMenu(windowId, playerInv); private final BackpackInventory inventory = new BackpackInventory(27); private final Inventory playerInventory; - public BackpackContainer(int windowId, Inventory playerInventory) { - super(ExplorationMenus.BACKPACK_CONTAINER.get(), windowId); + public BackpackMenu(int windowId, Inventory playerInventory) { + super(ExplorationMenus.BACKPACK_MENU.get(), windowId); this.playerInventory = playerInventory; diff --git a/exploration/src/main/java/mrtjp/projectred/exploration/item/BackpackItem.java b/exploration/src/main/java/mrtjp/projectred/exploration/item/BackpackItem.java index cea577ae9..c0c20c805 100644 --- a/exploration/src/main/java/mrtjp/projectred/exploration/item/BackpackItem.java +++ b/exploration/src/main/java/mrtjp/projectred/exploration/item/BackpackItem.java @@ -1,10 +1,10 @@ package mrtjp.projectred.exploration.item; import codechicken.lib.util.ServerUtils; -import mrtjp.projectred.core.inventory.BaseInventory; +import mrtjp.projectred.core.inventory.BaseContainer; import mrtjp.projectred.exploration.ProjectRedExploration; import mrtjp.projectred.exploration.init.ExplorationTags; -import mrtjp.projectred.exploration.inventory.container.BackpackContainer; +import mrtjp.projectred.exploration.inventory.container.BackpackMenu; import net.minecraft.ChatFormatting; import net.minecraft.nbt.CompoundTag; import net.minecraft.network.chat.Component; @@ -63,7 +63,7 @@ public InteractionResultHolder use(Level world, Player player, Intera private void openGui(ServerPlayer player) { ServerUtils.openContainer(player, - new SimpleMenuProvider((windowId, playerInventory, playerEntity) -> new BackpackContainer(windowId, playerInventory), + new SimpleMenuProvider((windowId, playerInventory, playerEntity) -> new BackpackMenu(windowId, playerInventory), Component.translatable(this.getDescriptionId()))); } @@ -96,7 +96,7 @@ public static CompoundTag getBackpackInventoryTag(ItemStack stack) { public static int getBackpackItemCount(ItemStack stack) { if (hasBackpackInventory(stack)) { - return BaseInventory.getItemCount(Objects.requireNonNull(stack.getTag()).getCompound(TAG_INVENTORY)); + return BaseContainer.getItemCount(Objects.requireNonNull(stack.getTag()).getCompound(TAG_INVENTORY)); } return 0; } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/block/ICWorkbenchBlock.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/block/ICWorkbenchBlock.java index 589a6d8c4..bfe8806a3 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/block/ICWorkbenchBlock.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/block/ICWorkbenchBlock.java @@ -2,7 +2,7 @@ import mrtjp.projectred.core.block.ProjectRedBlock; import mrtjp.projectred.fabrication.init.FabricationBlocks; -import mrtjp.projectred.fabrication.tile.ICWorkbenchTile; +import mrtjp.projectred.fabrication.tile.ICWorkbenchBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.item.context.BlockPlaceContext; import net.minecraft.world.level.block.Block; @@ -31,12 +31,12 @@ public BlockState getStateForPlacement(BlockPlaceContext context) { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new ICWorkbenchTile(pos, state); + return new ICWorkbenchBlockEntity(pos, state); } @Override protected BlockEntityType getBlockEntityType() { - return FabricationBlocks.IC_WORKBENCH_TILE.get(); + return FabricationBlocks.IC_WORKBENCH_BLOCK_ENTITY.get(); } @Override diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/block/LithographyTableBlock.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/block/LithographyTableBlock.java index f2fe424c9..60003b057 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/block/LithographyTableBlock.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/block/LithographyTableBlock.java @@ -1,7 +1,7 @@ package mrtjp.projectred.fabrication.block; import mrtjp.projectred.fabrication.init.FabricationBlocks; -import mrtjp.projectred.fabrication.tile.LithographyTableTile; +import mrtjp.projectred.fabrication.tile.LithographyTableBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -17,11 +17,11 @@ public LithographyTableBlock() { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new LithographyTableTile(pos, state); + return new LithographyTableBlockEntity(pos, state); } @Override protected BlockEntityType getBlockEntityType() { - return FabricationBlocks.LITHOGRAPHY_TABLE_TILE.get(); + return FabricationBlocks.LITHOGRAPHY_TABLE_BLOCK_ENTITY.get(); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/block/PackagingTableBlock.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/block/PackagingTableBlock.java index fb21f7afd..9ef1af4af 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/block/PackagingTableBlock.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/block/PackagingTableBlock.java @@ -1,7 +1,7 @@ package mrtjp.projectred.fabrication.block; import mrtjp.projectred.fabrication.init.FabricationBlocks; -import mrtjp.projectred.fabrication.tile.PackagingTableTile; +import mrtjp.projectred.fabrication.tile.PackagingTableBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -17,11 +17,11 @@ public PackagingTableBlock() { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new PackagingTableTile(pos, state); + return new PackagingTableBlockEntity(pos, state); } @Override protected BlockEntityType getBlockEntityType() { - return FabricationBlocks.PACKAGING_TABLE_TILE.get(); + return FabricationBlocks.PACKAGING_TABLE_BLOCK_ENTITY.get(); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/block/PlottingTableBlock.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/block/PlottingTableBlock.java index 717919d5e..702135e41 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/block/PlottingTableBlock.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/block/PlottingTableBlock.java @@ -2,7 +2,7 @@ import mrtjp.projectred.core.block.ProjectRedBlock; import mrtjp.projectred.fabrication.init.FabricationBlocks; -import mrtjp.projectred.fabrication.tile.PlottingTableTile; +import mrtjp.projectred.fabrication.tile.PlottingTableBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -18,11 +18,11 @@ public PlottingTableBlock() { @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new PlottingTableTile(pos, state); + return new PlottingTableBlockEntity(pos, state); } @Override protected BlockEntityType getBlockEntityType() { - return FabricationBlocks.PLOTTING_TABLE_TILE.get(); + return FabricationBlocks.PLOTTING_TABLE_BLOCK_ENTITY.get(); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchScreen.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchScreen.java index c96236730..6259ae2ed 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchScreen.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/ICWorkbenchScreen.java @@ -9,7 +9,7 @@ import mrtjp.projectred.fabrication.gui.SimpleUVTab; import mrtjp.projectred.fabrication.gui.TabButtonNode; import mrtjp.projectred.fabrication.gui.TabControllerNode; -import mrtjp.projectred.fabrication.tile.ICWorkbenchTile; +import mrtjp.projectred.fabrication.tile.ICWorkbenchBlockEntity; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.AbstractGuiNode; import mrtjp.projectred.redui.ItemStackNode; @@ -36,13 +36,13 @@ public class ICWorkbenchScreen extends RedUIScreen { public static final ResourceLocation BACKGROUND = new ResourceLocation(ProjectRedFabrication.MOD_ID, "textures/gui/ic_workbench.png"); - private final ICWorkbenchTile tile; + private final ICWorkbenchBlockEntity tile; private final ICWorkbenchEditor editor; private @Nullable AbstractGuiNode contentNode; private @Nullable InactiveOverlayNode overlayNode; - public ICWorkbenchScreen(ICWorkbenchTile tile) { + public ICWorkbenchScreen(ICWorkbenchBlockEntity tile) { super(304, 222, Component.literal(Objects.requireNonNull(ForgeRegistries.BLOCK_ENTITY_TYPES.getKey(tile.getType())).toString())); this.tile = tile; @@ -51,7 +51,7 @@ public ICWorkbenchScreen(ICWorkbenchTile tile) { initSubNodes(); } - public static void openGuiOnClient(ICWorkbenchTile tile) { + public static void openGuiOnClient(ICWorkbenchBlockEntity tile) { Minecraft.getInstance().setScreen(new ICWorkbenchScreen(tile)); } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/LithographyTableScreen.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/LithographyTableScreen.java index 4adde857b..ee9b4ebfe 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/LithographyTableScreen.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/LithographyTableScreen.java @@ -3,7 +3,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.ProjectRedFabrication; -import mrtjp.projectred.fabrication.inventory.container.LithographyTableContainer; +import mrtjp.projectred.fabrication.inventory.container.LithographyTableMenu; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; @@ -11,11 +11,11 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -public class LithographyTableScreen extends RedUIContainerScreen { +public class LithographyTableScreen extends RedUIContainerScreen { public static final ResourceLocation BACKGROUND = new ResourceLocation(ProjectRedFabrication.MOD_ID, "textures/gui/lithography_table.png"); - public LithographyTableScreen(LithographyTableContainer container, Inventory playerInventory, Component title) { + public LithographyTableScreen(LithographyTableMenu container, Inventory playerInventory, Component title) { super(176, 171, container, playerInventory, title); //TODO size inventoryLabelX = 8; diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PackagingTableScreen.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PackagingTableScreen.java index fa9e8c124..02b6f46c4 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PackagingTableScreen.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PackagingTableScreen.java @@ -4,7 +4,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.ProjectRedFabrication; -import mrtjp.projectred.fabrication.inventory.container.PackagingTableContainer; +import mrtjp.projectred.fabrication.inventory.container.PackagingTableMenu; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; @@ -13,11 +13,11 @@ import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.Slot; -public class PackagingTableScreen extends RedUIContainerScreen { +public class PackagingTableScreen extends RedUIContainerScreen { public static final ResourceLocation BACKGROUND = new ResourceLocation(ProjectRedFabrication.MOD_ID, "textures/gui/packaging_table.png"); - public PackagingTableScreen(PackagingTableContainer container, Inventory playerInventory, Component title) { + public PackagingTableScreen(PackagingTableMenu container, Inventory playerInventory, Component title) { super(176, 171, container, playerInventory, title); //TODO size inventoryLabelX = 8; diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PlottingTableScreen.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PlottingTableScreen.java index db1ca597b..1f08c843d 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PlottingTableScreen.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/screen/inventory/PlottingTableScreen.java @@ -3,7 +3,7 @@ import com.mojang.blaze3d.systems.RenderSystem; import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.fabrication.ProjectRedFabrication; -import mrtjp.projectred.fabrication.inventory.container.PlottingTableContainer; +import mrtjp.projectred.fabrication.inventory.container.PlottingTableMenu; import mrtjp.projectred.lib.GuiLib; import mrtjp.projectred.lib.Point; import mrtjp.projectred.redui.RedUIContainerScreen; @@ -11,11 +11,11 @@ import net.minecraft.resources.ResourceLocation; import net.minecraft.world.entity.player.Inventory; -public class PlottingTableScreen extends RedUIContainerScreen { +public class PlottingTableScreen extends RedUIContainerScreen { public static final ResourceLocation BACKGROUND = new ResourceLocation(ProjectRedFabrication.MOD_ID, "textures/gui/plotting_table.png"); - public PlottingTableScreen(PlottingTableContainer container, Inventory playerInventory, Component title) { + public PlottingTableScreen(PlottingTableMenu container, Inventory playerInventory, Component title) { super(176, 171, container, playerInventory, title); //TODO size inventoryLabelX = 8; diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationBlocks.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationBlocks.java index 2bf3d95ad..e2e46ea37 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationBlocks.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationBlocks.java @@ -4,10 +4,10 @@ import mrtjp.projectred.fabrication.block.LithographyTableBlock; import mrtjp.projectred.fabrication.block.PackagingTableBlock; import mrtjp.projectred.fabrication.block.PlottingTableBlock; -import mrtjp.projectred.fabrication.tile.ICWorkbenchTile; -import mrtjp.projectred.fabrication.tile.LithographyTableTile; -import mrtjp.projectred.fabrication.tile.PackagingTableTile; -import mrtjp.projectred.fabrication.tile.PlottingTableTile; +import mrtjp.projectred.fabrication.tile.ICWorkbenchBlockEntity; +import mrtjp.projectred.fabrication.tile.LithographyTableBlockEntity; +import mrtjp.projectred.fabrication.tile.PackagingTableBlockEntity; +import mrtjp.projectred.fabrication.tile.PlottingTableBlockEntity; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; import net.minecraft.world.level.block.entity.BlockEntityType; @@ -30,10 +30,10 @@ public class FabricationBlocks { public static RegistryObject PACKAGING_TABLE_BLOCK; // Block Entities - public static RegistryObject> IC_WORKBENCH_TILE; - public static RegistryObject> PLOTTING_TABLE_TILE; - public static RegistryObject> LITHOGRAPHY_TABLE_TILE; - public static RegistryObject> PACKAGING_TABLE_TILE; + public static RegistryObject> IC_WORKBENCH_BLOCK_ENTITY; + public static RegistryObject> PLOTTING_TABLE_BLOCK_ENTITY; + public static RegistryObject> LITHOGRAPHY_TABLE_BLOCK_ENTITY; + public static RegistryObject> PACKAGING_TABLE_BLOCK_ENTITY; public static void register() { @@ -51,9 +51,9 @@ public static void register() { ITEMS.register(ID_PACKAGING_TABLE, () -> new BlockItem(PACKAGING_TABLE_BLOCK.get(), new Item.Properties().tab(FABRICATION_GROUP))); // Tiles - IC_WORKBENCH_TILE = BLOCK_ENTITY_TYPES.register(ID_IC_WORKBENCH, () -> BlockEntityType.Builder.of(ICWorkbenchTile::new, IC_WORKBENCH_BLOCK.get()).build(null)); - PLOTTING_TABLE_TILE = BLOCK_ENTITY_TYPES.register(ID_PLOTTING_TABLE, () -> BlockEntityType.Builder.of(PlottingTableTile::new, PLOTTING_TABLE_BLOCK.get()).build(null)); - LITHOGRAPHY_TABLE_TILE = BLOCK_ENTITY_TYPES.register(ID_LITHOGRAPHY_TABLE, () -> BlockEntityType.Builder.of(LithographyTableTile::new, LITHOGRAPHY_TABLE_BLOCK.get()).build(null)); - PACKAGING_TABLE_TILE = BLOCK_ENTITY_TYPES.register(ID_PACKAGING_TABLE, () -> BlockEntityType.Builder.of(PackagingTableTile::new, PACKAGING_TABLE_BLOCK.get()).build(null)); + IC_WORKBENCH_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_IC_WORKBENCH, () -> BlockEntityType.Builder.of(ICWorkbenchBlockEntity::new, IC_WORKBENCH_BLOCK.get()).build(null)); + PLOTTING_TABLE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_PLOTTING_TABLE, () -> BlockEntityType.Builder.of(PlottingTableBlockEntity::new, PLOTTING_TABLE_BLOCK.get()).build(null)); + LITHOGRAPHY_TABLE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_LITHOGRAPHY_TABLE, () -> BlockEntityType.Builder.of(LithographyTableBlockEntity::new, LITHOGRAPHY_TABLE_BLOCK.get()).build(null)); + PACKAGING_TABLE_BLOCK_ENTITY = BLOCK_ENTITY_TYPES.register(ID_PACKAGING_TABLE, () -> BlockEntityType.Builder.of(PackagingTableBlockEntity::new, PACKAGING_TABLE_BLOCK.get()).build(null)); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationClientInit.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationClientInit.java index 64bb2d711..8cfe4be67 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationClientInit.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationClientInit.java @@ -41,8 +41,8 @@ private static void clientSetup(final FMLClientSetupEvent event) { modelRegistryHelper.register(new ModelResourceLocation(ForgeRegistries.ITEMS.getKey(FabricationParts.FABRICATED_GATE_ITEM.get()), "inventory"), GatePartItemRenderer.INSTANCE); // Register screens - MenuScreens.register(PLOTTING_TABLE_CONTAINER.get(), PlottingTableScreen::new); - MenuScreens.register(LITHOGRAPHY_TABLE_CONTAINER.get(), LithographyTableScreen::new); - MenuScreens.register(PACKAGING_TABLE_CONTAINER.get(), PackagingTableScreen::new); + MenuScreens.register(PLOTTING_TABLE_MENU.get(), PlottingTableScreen::new); + MenuScreens.register(LITHOGRAPHY_TABLE_MENU.get(), LithographyTableScreen::new); + MenuScreens.register(PACKAGING_TABLE_MENU.get(), PackagingTableScreen::new); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationMenus.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationMenus.java index 674ea0c65..c2be32853 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationMenus.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationMenus.java @@ -1,9 +1,9 @@ package mrtjp.projectred.fabrication.init; import codechicken.lib.inventory.container.ICCLContainerType; -import mrtjp.projectred.fabrication.inventory.container.LithographyTableContainer; -import mrtjp.projectred.fabrication.inventory.container.PackagingTableContainer; -import mrtjp.projectred.fabrication.inventory.container.PlottingTableContainer; +import mrtjp.projectred.fabrication.inventory.container.LithographyTableMenu; +import mrtjp.projectred.fabrication.inventory.container.PackagingTableMenu; +import mrtjp.projectred.fabrication.inventory.container.PlottingTableMenu; import net.minecraft.world.inventory.MenuType; import net.minecraftforge.registries.RegistryObject; @@ -13,14 +13,14 @@ @SuppressWarnings("NotNullFieldNotInitialized") public class FabricationMenus { - public static RegistryObject> PLOTTING_TABLE_CONTAINER; - public static RegistryObject> LITHOGRAPHY_TABLE_CONTAINER; - public static RegistryObject> PACKAGING_TABLE_CONTAINER; + public static RegistryObject> PLOTTING_TABLE_MENU; + public static RegistryObject> LITHOGRAPHY_TABLE_MENU; + public static RegistryObject> PACKAGING_TABLE_MENU; public static void register() { - PLOTTING_TABLE_CONTAINER = MENU_TYPES.register(ID_PLOTTING_TABLE, () -> ICCLContainerType.create(PlottingTableContainer.FACTORY)); - LITHOGRAPHY_TABLE_CONTAINER = MENU_TYPES.register(ID_LITHOGRAPHY_TABLE, () -> ICCLContainerType.create(LithographyTableContainer.FACTORY)); - PACKAGING_TABLE_CONTAINER = MENU_TYPES.register(ID_PACKAGING_TABLE, () -> ICCLContainerType.create(PackagingTableContainer.FACTORY)); + PLOTTING_TABLE_MENU = MENU_TYPES.register(ID_PLOTTING_TABLE, () -> ICCLContainerType.create(PlottingTableMenu.FACTORY)); + LITHOGRAPHY_TABLE_MENU = MENU_TYPES.register(ID_LITHOGRAPHY_TABLE, () -> ICCLContainerType.create(LithographyTableMenu.FACTORY)); + PACKAGING_TABLE_MENU = MENU_TYPES.register(ID_PACKAGING_TABLE, () -> ICCLContainerType.create(PackagingTableMenu.FACTORY)); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/FabricationMachineContainer.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/FabricationMachineMenu.java similarity index 62% rename from fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/FabricationMachineContainer.java rename to fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/FabricationMachineMenu.java index e49bed133..2e1476016 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/FabricationMachineContainer.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/FabricationMachineMenu.java @@ -1,20 +1,20 @@ package mrtjp.projectred.fabrication.inventory.container; -import mrtjp.projectred.core.inventory.container.BasePoweredTileContainer; +import mrtjp.projectred.core.inventory.container.BasePoweredBlockEntityMenu; import mrtjp.projectred.core.inventory.container.SimpleDataSlot; -import mrtjp.projectred.fabrication.tile.FabricationMachineTile; +import mrtjp.projectred.fabrication.tile.FabricationMachineBlockEntity; import net.minecraft.world.inventory.MenuType; import javax.annotation.Nullable; -public abstract class FabricationMachineContainer extends BasePoweredTileContainer { +public abstract class FabricationMachineMenu extends BasePoweredBlockEntityMenu { - private final FabricationMachineTile tile; + private final FabricationMachineBlockEntity tile; private int remainingWork; private int totalWork; - public FabricationMachineContainer(@Nullable MenuType containerType, int windowId, FabricationMachineTile tile) { + public FabricationMachineMenu(@Nullable MenuType containerType, int windowId, FabricationMachineBlockEntity tile) { super(containerType, windowId, tile); this.tile = tile; diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/LithographyTableContainer.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/LithographyTableMenu.java similarity index 85% rename from fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/LithographyTableContainer.java rename to fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/LithographyTableMenu.java index cd433eb57..d4e4749b8 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/LithographyTableContainer.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/LithographyTableMenu.java @@ -5,7 +5,7 @@ import mrtjp.projectred.fabrication.init.FabricationMenus; import mrtjp.projectred.fabrication.item.PhotomaskSetItem; import mrtjp.projectred.fabrication.item.RoughSiliconWaferItem; -import mrtjp.projectred.fabrication.tile.LithographyTableTile; +import mrtjp.projectred.fabrication.tile.LithographyTableBlockEntity; import mrtjp.projectred.lib.InventoryLib; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -13,20 +13,20 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; -public class LithographyTableContainer extends FabricationMachineContainer { +public class LithographyTableMenu extends FabricationMachineMenu { - public static ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { - BlockEntity tile = inventory.player.level.getBlockEntity(packet.readPos()); - if (!(tile instanceof LithographyTableTile)) return null; + public static ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { + BlockEntity tile = inventory.player.getLevel().getBlockEntity(packet.readPos()); + if (!(tile instanceof LithographyTableBlockEntity)) return null; - return new LithographyTableContainer(inventory, (LithographyTableTile) tile, windowId); + return new LithographyTableMenu(inventory, (LithographyTableBlockEntity) tile, windowId); }; private final Inventory playerInventory; - private final LithographyTableTile tile; + private final LithographyTableBlockEntity tile; - public LithographyTableContainer(Inventory playerInventory, LithographyTableTile tile, int windowId) { - super(FabricationMenus.LITHOGRAPHY_TABLE_CONTAINER.get(), windowId, tile); + public LithographyTableMenu(Inventory playerInventory, LithographyTableBlockEntity tile, int windowId) { + super(FabricationMenus.LITHOGRAPHY_TABLE_MENU.get(), windowId, tile); this.playerInventory = playerInventory; this.tile = tile; diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PackagingTableContainer.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PackagingTableMenu.java similarity index 84% rename from fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PackagingTableContainer.java rename to fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PackagingTableMenu.java index 92469bdff..2d1596274 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PackagingTableContainer.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PackagingTableMenu.java @@ -5,7 +5,7 @@ import mrtjp.projectred.core.inventory.container.TakeOnlySlot; import mrtjp.projectred.fabrication.init.FabricationMenus; import mrtjp.projectred.fabrication.item.ValidDieItem; -import mrtjp.projectred.fabrication.tile.PackagingTableTile; +import mrtjp.projectred.fabrication.tile.PackagingTableBlockEntity; import mrtjp.projectred.lib.InventoryLib; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -13,22 +13,22 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; -public class PackagingTableContainer extends FabricationMachineContainer { +public class PackagingTableMenu extends FabricationMachineMenu { - public static ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { - BlockEntity tile = inventory.player.level.getBlockEntity(packet.readPos()); - if (!(tile instanceof PackagingTableTile)) return null; + public static ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { + BlockEntity tile = inventory.player.getLevel().getBlockEntity(packet.readPos()); + if (!(tile instanceof PackagingTableBlockEntity)) return null; - return new PackagingTableContainer(inventory, (PackagingTableTile) tile, windowId); + return new PackagingTableMenu(inventory, (PackagingTableBlockEntity) tile, windowId); }; private final Inventory playerInventory; - private final PackagingTableTile tile; + private final PackagingTableBlockEntity tile; protected int problematicSlotMask; - public PackagingTableContainer(Inventory playerInventory, PackagingTableTile tile, int windowId) { - super(FabricationMenus.PACKAGING_TABLE_CONTAINER.get(), windowId, tile); + public PackagingTableMenu(Inventory playerInventory, PackagingTableBlockEntity tile, int windowId) { + super(FabricationMenus.PACKAGING_TABLE_MENU.get(), windowId, tile); this.playerInventory = playerInventory; this.tile = tile; diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PlottingTableContainer.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PlottingTableMenu.java similarity index 85% rename from fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PlottingTableContainer.java rename to fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PlottingTableMenu.java index a3057c9b0..61adab468 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PlottingTableContainer.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/inventory/container/PlottingTableMenu.java @@ -5,7 +5,7 @@ import mrtjp.projectred.fabrication.init.FabricationMenus; import mrtjp.projectred.fabrication.item.BlankPhotomaskItem; import mrtjp.projectred.fabrication.item.ICBlueprintItem; -import mrtjp.projectred.fabrication.tile.PlottingTableTile; +import mrtjp.projectred.fabrication.tile.PlottingTableBlockEntity; import mrtjp.projectred.lib.InventoryLib; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.entity.player.Player; @@ -13,20 +13,20 @@ import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.block.entity.BlockEntity; -public class PlottingTableContainer extends FabricationMachineContainer { +public class PlottingTableMenu extends FabricationMachineMenu { - public static ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { - BlockEntity tile = inventory.player.level.getBlockEntity(packet.readPos()); - if (!(tile instanceof PlottingTableTile)) return null; + public static ICCLContainerFactory FACTORY = (windowId, inventory, packet) -> { + BlockEntity tile = inventory.player.getLevel().getBlockEntity(packet.readPos()); + if (!(tile instanceof PlottingTableBlockEntity)) return null; - return new PlottingTableContainer(inventory, (PlottingTableTile) tile, windowId); + return new PlottingTableMenu(inventory, (PlottingTableBlockEntity) tile, windowId); }; private final Inventory playerInventory; - private final PlottingTableTile tile; + private final PlottingTableBlockEntity tile; - public PlottingTableContainer(Inventory playerInventory, PlottingTableTile tile, int windowId) { - super(FabricationMenus.PLOTTING_TABLE_CONTAINER.get(), windowId, tile); + public PlottingTableMenu(Inventory playerInventory, PlottingTableBlockEntity tile, int windowId) { + super(FabricationMenus.PLOTTING_TABLE_MENU.get(), windowId, tile); this.playerInventory = playerInventory; this.tile = tile; diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/FabricationMachineTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/FabricationMachineBlockEntity.java similarity index 93% rename from fabrication/src/main/java/mrtjp/projectred/fabrication/tile/FabricationMachineTile.java rename to fabrication/src/main/java/mrtjp/projectred/fabrication/tile/FabricationMachineBlockEntity.java index 89beb47c0..db2b9d646 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/FabricationMachineTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/FabricationMachineBlockEntity.java @@ -4,14 +4,14 @@ import mrtjp.projectred.core.power.ILowLoadMachine; import mrtjp.projectred.core.power.ILowLoadPowerLine; import mrtjp.projectred.core.power.PowerConductor; -import mrtjp.projectred.core.tile.BasePoweredTile; +import mrtjp.projectred.core.tile.BasePoweredBlockEntity; import mrtjp.projectred.fabrication.block.FabricationMachineBlock; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; import net.minecraft.world.level.block.entity.BlockEntityType; import net.minecraft.world.level.block.state.BlockState; -public abstract class FabricationMachineTile extends BasePoweredTile implements ILowLoadMachine { +public abstract class FabricationMachineBlockEntity extends BasePoweredBlockEntity implements ILowLoadMachine { protected final PowerConductor conductor = new PowerConductor(this, 0.01, 160); @@ -21,7 +21,7 @@ public abstract class FabricationMachineTile extends BasePoweredTile implements private int remainingWork = 0; private int totalWork = 0; - public FabricationMachineTile(BlockEntityType type, BlockPos pos, BlockState state) { + public FabricationMachineBlockEntity(BlockEntityType type, BlockPos pos, BlockState state) { super(type, pos, state); } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/ICWorkbenchTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/ICWorkbenchBlockEntity.java similarity index 94% rename from fabrication/src/main/java/mrtjp/projectred/fabrication/tile/ICWorkbenchTile.java rename to fabrication/src/main/java/mrtjp/projectred/fabrication/tile/ICWorkbenchBlockEntity.java index b2595adb7..e0fee98d7 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/ICWorkbenchTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/ICWorkbenchBlockEntity.java @@ -6,8 +6,8 @@ import codechicken.lib.vec.Vector3; import codechicken.lib.world.IChunkLoadTile; import mrtjp.projectred.core.CoreNetwork; -import mrtjp.projectred.core.tile.IPacketReceiverTile; -import mrtjp.projectred.core.tile.ProjectRedTile; +import mrtjp.projectred.core.tile.IPacketReceiverBlockEntity; +import mrtjp.projectred.core.tile.ProjectRedBlockEntity; import mrtjp.projectred.fabrication.block.ICWorkbenchBlock; import mrtjp.projectred.fabrication.editor.ICWorkbenchEditor; import mrtjp.projectred.fabrication.editor.IICWorkbenchEditorNetwork; @@ -34,7 +34,7 @@ import static mrtjp.projectred.fabrication.ProjectRedFabrication.LOGGER; import static mrtjp.projectred.fabrication.init.FabricationItems.IC_BLUEPRINT_ITEM; -public class ICWorkbenchTile extends ProjectRedTile implements IPacketReceiverTile, IICWorkbenchEditorNetwork, IChunkLoadTile { +public class ICWorkbenchBlockEntity extends ProjectRedBlockEntity implements IPacketReceiverBlockEntity, IICWorkbenchEditorNetwork, IChunkLoadTile { private static final int KEY_CLIENT_OPENED_SCREEN = 0; private static final int KEY_CLIENT_CLOSED_SCREEN = 1; @@ -46,8 +46,8 @@ public class ICWorkbenchTile extends ProjectRedTile implements IPacketReceiverTi private final Map editorBufferedStreams = new HashMap<>(); private final Set playersWatchingScreen = new HashSet<>(); - public ICWorkbenchTile(BlockPos pos, BlockState state) { - super(FabricationBlocks.IC_WORKBENCH_TILE.get(), pos, state); + public ICWorkbenchBlockEntity(BlockPos pos, BlockState state) { + super(FabricationBlocks.IC_WORKBENCH_BLOCK_ENTITY.get(), pos, state); } public ICWorkbenchEditor getEditor() { @@ -127,7 +127,7 @@ public InteractionResult onBlockActivated(Player player, InteractionHand hand, B public void onBlockRemoved() { if (getEditor().isActive()) { ItemStack blueprintToDrop = createBlueprintStack(); - ProjectRedTile.dropItem(blueprintToDrop, getLevel(), Vector3.fromBlockPos(getBlockPos())); + ProjectRedBlockEntity.dropItem(blueprintToDrop, getLevel(), Vector3.fromBlockPos(getBlockPos())); } } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/LithographyTableTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/LithographyTableBlockEntity.java similarity index 92% rename from fabrication/src/main/java/mrtjp/projectred/fabrication/tile/LithographyTableTile.java rename to fabrication/src/main/java/mrtjp/projectred/fabrication/tile/LithographyTableBlockEntity.java index e100d98a2..cfc9f48aa 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/LithographyTableTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/LithographyTableBlockEntity.java @@ -4,11 +4,11 @@ import codechicken.lib.data.MCDataOutput; import codechicken.lib.util.ServerUtils; import codechicken.lib.vec.Vector3; -import mrtjp.projectred.core.inventory.BaseInventory; +import mrtjp.projectred.core.inventory.BaseContainer; import mrtjp.projectred.fabrication.editor.EditorDataUtils; import mrtjp.projectred.fabrication.init.FabricationBlocks; import mrtjp.projectred.fabrication.init.FabricationItems; -import mrtjp.projectred.fabrication.inventory.container.LithographyTableContainer; +import mrtjp.projectred.fabrication.inventory.container.LithographyTableMenu; import mrtjp.projectred.fabrication.item.BaseSiliconWaferItem; import mrtjp.projectred.fabrication.item.PhotomaskSetItem; import mrtjp.projectred.fabrication.lithography.ProcessNode; @@ -25,9 +25,9 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -public class LithographyTableTile extends FabricationMachineTile { +public class LithographyTableBlockEntity extends FabricationMachineBlockEntity { - private final BaseInventory inventory = new BaseInventory(4) { + private final BaseContainer inventory = new BaseContainer(4) { @Override public boolean canPlaceItem(int slot, ItemStack stack) { @@ -39,8 +39,8 @@ public boolean canPlaceItem(int slot, ItemStack stack) { } }; - public LithographyTableTile(BlockPos pos, BlockState state) { - super(FabricationBlocks.LITHOGRAPHY_TABLE_TILE.get(), pos, state); + public LithographyTableBlockEntity(BlockPos pos, BlockState state) { + super(FabricationBlocks.LITHOGRAPHY_TABLE_BLOCK_ENTITY.get(), pos, state); inventory.addListener(this::onInventoryChanged); } @@ -72,7 +72,7 @@ public void readDesc(MCDataInput in) { public InteractionResult onBlockActivated(Player player, InteractionHand hand, BlockHitResult hit) { if (!getLevel().isClientSide) { ServerUtils.openContainer((ServerPlayer) player, - new SimpleMenuProvider((id, inv, p) -> new LithographyTableContainer(inv, this, id), getBlockState().getBlock().getName()), + new SimpleMenuProvider((id, inv, p) -> new LithographyTableMenu(inv, this, id), getBlockState().getBlock().getName()), p -> p.writePos(getBlockPos())); } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableBlockEntity.java similarity index 91% rename from fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java rename to fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableBlockEntity.java index bfb5f9783..2d3aad82d 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PackagingTableBlockEntity.java @@ -5,12 +5,12 @@ import codechicken.lib.util.ServerUtils; import codechicken.lib.vec.Vector3; import mrtjp.projectred.core.init.CoreItems; -import mrtjp.projectred.core.inventory.BaseInventory; -import mrtjp.projectred.core.tile.IPacketReceiverTile; +import mrtjp.projectred.core.inventory.BaseContainer; +import mrtjp.projectred.core.tile.IPacketReceiverBlockEntity; import mrtjp.projectred.fabrication.engine.ICInterfaceType; import mrtjp.projectred.fabrication.engine.InterfaceSpec; import mrtjp.projectred.fabrication.init.FabricationBlocks; -import mrtjp.projectred.fabrication.inventory.container.PackagingTableContainer; +import mrtjp.projectred.fabrication.inventory.container.PackagingTableMenu; import mrtjp.projectred.fabrication.item.ValidDieItem; import net.minecraft.core.BlockPos; import net.minecraft.nbt.CompoundTag; @@ -28,12 +28,12 @@ import static mrtjp.projectred.fabrication.editor.EditorDataUtils.getInterfaceSpec; import static mrtjp.projectred.fabrication.editor.EditorDataUtils.hasFabricationTarget; -public class PackagingTableTile extends FabricationMachineTile implements IPacketReceiverTile { +public class PackagingTableBlockEntity extends FabricationMachineBlockEntity implements IPacketReceiverBlockEntity { private static final int DIE_SLOT = 4; private static final int OUTPUT_SLOT = 9; - private final BaseInventory inventory = new BaseInventory(10) { + private final BaseContainer inventory = new BaseContainer(10) { @Override public boolean canPlaceItem(int slot, @NotNull ItemStack stack) { @@ -47,8 +47,8 @@ public boolean canPlaceItem(int slot, @NotNull ItemStack stack) { private int problematicSlotMask = 0; // Masks of slots that client should render red highlights - public PackagingTableTile(BlockPos pos, BlockState state) { - super(FabricationBlocks.PACKAGING_TABLE_TILE.get(), pos, state); + public PackagingTableBlockEntity(BlockPos pos, BlockState state) { + super(FabricationBlocks.PACKAGING_TABLE_BLOCK_ENTITY.get(), pos, state); inventory.addListener(this::onInventoryChanged); } @@ -80,7 +80,7 @@ public void readDesc(MCDataInput in) { public InteractionResult onBlockActivated(Player player, InteractionHand hand, BlockHitResult hit) { if (!getLevel().isClientSide) { ServerUtils.openContainer((ServerPlayer) player, - new SimpleMenuProvider((id, inv, p) -> new PackagingTableContainer(inv, this, id), getBlockState().getBlock().getName()), + new SimpleMenuProvider((id, inv, p) -> new PackagingTableMenu(inv, this, id), getBlockState().getBlock().getName()), p -> p.writePos(getBlockPos())); } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PlottingTableTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PlottingTableBlockEntity.java similarity index 89% rename from fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PlottingTableTile.java rename to fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PlottingTableBlockEntity.java index 2a064b30c..50d64b06c 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PlottingTableTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/tile/PlottingTableBlockEntity.java @@ -4,10 +4,10 @@ import codechicken.lib.data.MCDataOutput; import codechicken.lib.util.ServerUtils; import codechicken.lib.vec.Vector3; -import mrtjp.projectred.core.inventory.BaseInventory; +import mrtjp.projectred.core.inventory.BaseContainer; import mrtjp.projectred.fabrication.editor.EditorDataUtils; import mrtjp.projectred.fabrication.init.FabricationBlocks; -import mrtjp.projectred.fabrication.inventory.container.PlottingTableContainer; +import mrtjp.projectred.fabrication.inventory.container.PlottingTableMenu; import mrtjp.projectred.fabrication.item.BlankPhotomaskItem; import mrtjp.projectred.fabrication.item.ICBlueprintItem; import net.minecraft.core.BlockPos; @@ -22,9 +22,9 @@ import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.BlockHitResult; -public class PlottingTableTile extends FabricationMachineTile { +public class PlottingTableBlockEntity extends FabricationMachineBlockEntity { - private final BaseInventory inventory = new BaseInventory(3) { + private final BaseContainer inventory = new BaseContainer(3) { @Override public boolean canPlaceItem(int slot, ItemStack stack) { @@ -36,8 +36,8 @@ public boolean canPlaceItem(int slot, ItemStack stack) { } }; - public PlottingTableTile(BlockPos pos, BlockState state) { - super(FabricationBlocks.PLOTTING_TABLE_TILE.get(), pos, state); + public PlottingTableBlockEntity(BlockPos pos, BlockState state) { + super(FabricationBlocks.PLOTTING_TABLE_BLOCK_ENTITY.get(), pos, state); inventory.addListener(this::onInventoryChanged); } @@ -69,7 +69,7 @@ public void readDesc(MCDataInput in) { public InteractionResult onBlockActivated(Player player, InteractionHand hand, BlockHitResult hit) { if (!getLevel().isClientSide) { ServerUtils.openContainer((ServerPlayer) player, - new SimpleMenuProvider((id, inv, p) -> new PlottingTableContainer(inv, this, id), getBlockState().getBlock().getName()), + new SimpleMenuProvider((id, inv, p) -> new PlottingTableMenu(inv, this, id), getBlockState().getBlock().getName()), p -> p.writePos(getBlockPos())); } diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/BlockLightType.java b/illumination/src/main/java/mrtjp/projectred/illumination/BlockLightType.java index 0a8740d85..44c4a5cb4 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/BlockLightType.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/BlockLightType.java @@ -2,7 +2,8 @@ import codechicken.lib.colour.EnumColour; import mrtjp.projectred.illumination.block.IllumarLampBlock; -import mrtjp.projectred.illumination.tile.IllumarLampTile; +import mrtjp.projectred.illumination.tile.IllumarLampBlockEntity; +import net.covers1624.quack.collection.FastStream; import net.minecraft.core.BlockPos; import net.minecraft.world.item.BlockItem; import net.minecraft.world.item.Item; @@ -18,7 +19,7 @@ @SuppressWarnings("DataFlowIssue") public enum BlockLightType { - ILLUMAR_LAMP("illumar_lamp", "Illumar Lamp", IllumarLampBlock::new, IllumarLampTile::new); + ILLUMAR_LAMP("illumar_lamp", "Illumar Lamp", IllumarLampBlock::new, IllumarLampBlockEntity::new); private final String unlocalName; private final String localName; @@ -46,7 +47,7 @@ public void registerBlocks(DeferredRegister blockRegistry, DeferredRegist String registryID = getRegistryID(color, false); blockSupplier.add(color, blockRegistry.register(registryID, () -> blockFactory.apply(colorFinal, false))); - itemBlockSupplier.add(color, itemRegistry.register(registryID, () -> new BlockItem(getBlock(colorFinal, false), new Item.Properties().tab(ProjectRedIllumination.ILLUMINATION_GROUP)))); + itemBlockSupplier.add(color, itemRegistry.register(registryID, () -> new BlockItem(getBlock(colorFinal, false), new Item.Properties()))); tileEntityTypeSupplier.add(color, tileRegistry.register(registryID, () -> BlockEntityType.Builder.of( (pos, state) -> tileFactory.create(colorFinal, false, pos, state), getBlock(colorFinal, false)) @@ -59,7 +60,7 @@ public void registerBlocks(DeferredRegister blockRegistry, DeferredRegist String invertedRegistryID = getRegistryID(color, true); invertedBlockSupplier.add(color, blockRegistry.register(invertedRegistryID, () -> blockFactory.apply(colorFinal, true))); - invertedItemBlockSupplier.add(color, itemRegistry.register(invertedRegistryID, () -> new BlockItem(getBlock(colorFinal, true), new Item.Properties().tab(ProjectRedIllumination.ILLUMINATION_GROUP)))); + invertedItemBlockSupplier.add(color, itemRegistry.register(invertedRegistryID, () -> new BlockItem(getBlock(colorFinal, true), new Item.Properties()))); invertedTileEntityTypeSupplier.add(color, tileRegistry.register(invertedRegistryID, () -> BlockEntityType.Builder.of( (pos, state) -> tileFactory.create(colorFinal, true, pos, state), getBlock(colorFinal, true)) @@ -71,6 +72,10 @@ public Block getBlock(int color, boolean inverted) { return inverted ? invertedBlockSupplier.get(color).get() : blockSupplier.get(color).get(); } + public Iterable allColors(boolean inverted) { + return FastStream.of(inverted ? invertedBlockSupplier : blockSupplier).map(RegistryObject::get); + } + public BlockEntityType getTileEntityType(int color, boolean inverted) { return inverted ? invertedTileEntityTypeSupplier.get(color).get() : tileEntityTypeSupplier.get(color).get(); } diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/block/IllumarLampBlock.java b/illumination/src/main/java/mrtjp/projectred/illumination/block/IllumarLampBlock.java index cec3bc090..b71edc6bf 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/block/IllumarLampBlock.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/block/IllumarLampBlock.java @@ -1,7 +1,7 @@ package mrtjp.projectred.illumination.block; import codechicken.multipart.api.RedstoneConnectorBlock; -import mrtjp.projectred.illumination.tile.IllumarLampTile; +import mrtjp.projectred.illumination.tile.IllumarLampBlockEntity; import net.minecraft.core.BlockPos; import net.minecraft.server.level.ServerLevel; import net.minecraft.util.RandomSource; @@ -19,7 +19,6 @@ import net.minecraft.world.level.material.Material; import javax.annotation.Nullable; -import java.util.Random; public class IllumarLampBlock extends Block implements EntityBlock, RedstoneConnectorBlock { @@ -87,7 +86,7 @@ public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource @Nullable @Override public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { - return new IllumarLampTile(color, inverted, pos, state); + return new IllumarLampBlockEntity(color, inverted, pos, state); } //region Redstone Connector block diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/client/IllumarLampTileRenderer.java b/illumination/src/main/java/mrtjp/projectred/illumination/client/IllumarLampBlockEntityRenderer.java similarity index 65% rename from illumination/src/main/java/mrtjp/projectred/illumination/client/IllumarLampTileRenderer.java rename to illumination/src/main/java/mrtjp/projectred/illumination/client/IllumarLampBlockEntityRenderer.java index 7e1f3c82f..1585833a3 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/client/IllumarLampTileRenderer.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/client/IllumarLampBlockEntityRenderer.java @@ -4,22 +4,22 @@ import com.mojang.blaze3d.vertex.PoseStack; import mrtjp.projectred.core.client.HaloRenderer; import mrtjp.projectred.illumination.block.IllumarLampBlock; -import mrtjp.projectred.illumination.tile.IllumarLampTile; +import mrtjp.projectred.illumination.tile.IllumarLampBlockEntity; import net.minecraft.client.renderer.MultiBufferSource; import net.minecraft.client.renderer.blockentity.BlockEntityRenderer; import net.minecraft.world.level.block.state.BlockState; -public class IllumarLampTileRenderer implements BlockEntityRenderer { +public class IllumarLampBlockEntityRenderer implements BlockEntityRenderer { - public static final IllumarLampTileRenderer INSTANCE = new IllumarLampTileRenderer(); + public static final IllumarLampBlockEntityRenderer INSTANCE = new IllumarLampBlockEntityRenderer(); public static final Cuboid6 GLOW_BOUNDS = Cuboid6.full.copy().expand(0.05D); - private IllumarLampTileRenderer() { + private IllumarLampBlockEntityRenderer() { } @Override - public void render(IllumarLampTile tile, float partialTicks, PoseStack matrixStack, MultiBufferSource buffers, int combinedLight, int combinedOverlay) { + public void render(IllumarLampBlockEntity tile, float partialTicks, PoseStack matrixStack, MultiBufferSource buffers, int combinedLight, int combinedOverlay) { if (tile.getLevel() != null) { BlockState state = tile.getLevel().getBlockState(tile.getBlockPos()); diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/init/IlluminationClientInit.java b/illumination/src/main/java/mrtjp/projectred/illumination/init/IlluminationClientInit.java index 66ef3cdb2..b41bac208 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/init/IlluminationClientInit.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/init/IlluminationClientInit.java @@ -60,8 +60,8 @@ private static void clientSetup(final FMLClientSetupEvent event) { for (BlockLightType lampType : BlockLightType.values()) { for (int color = 0; color < 16; color++) { //TODO this only works because Illumar lamp is the only BlockLightType - BlockEntityRenderers.register(SneakyUtils.unsafeCast(lampType.getTileEntityType(color, false)), c -> IllumarLampTileRenderer.INSTANCE); - BlockEntityRenderers.register(SneakyUtils.unsafeCast(lampType.getTileEntityType(color, true)), c -> IllumarLampTileRenderer.INSTANCE); + BlockEntityRenderers.register(SneakyUtils.unsafeCast(lampType.getTileEntityType(color, false)), c -> IllumarLampBlockEntityRenderer.INSTANCE); + BlockEntityRenderers.register(SneakyUtils.unsafeCast(lampType.getTileEntityType(color, true)), c -> IllumarLampBlockEntityRenderer.INSTANCE); } } diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/tile/IllumarLampTile.java b/illumination/src/main/java/mrtjp/projectred/illumination/tile/IllumarLampBlockEntity.java similarity index 73% rename from illumination/src/main/java/mrtjp/projectred/illumination/tile/IllumarLampTile.java rename to illumination/src/main/java/mrtjp/projectred/illumination/tile/IllumarLampBlockEntity.java index 72603172e..34439dfed 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/tile/IllumarLampTile.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/tile/IllumarLampBlockEntity.java @@ -3,18 +3,18 @@ import codechicken.lib.vec.Cuboid6; import mrtjp.projectred.illumination.BlockLightType; import mrtjp.projectred.illumination.block.IllumarLampBlock; -import mrtjp.projectred.illumination.client.IllumarLampTileRenderer; +import mrtjp.projectred.illumination.client.IllumarLampBlockEntityRenderer; import net.minecraft.core.BlockPos; import net.minecraft.world.level.block.entity.BlockEntity; import net.minecraft.world.level.block.state.BlockState; import net.minecraft.world.phys.AABB; -public class IllumarLampTile extends BlockEntity { +public class IllumarLampBlockEntity extends BlockEntity { public final int color; public final boolean inverted; - public IllumarLampTile(int color, boolean inverted, BlockPos pos, BlockState state) { + public IllumarLampBlockEntity(int color, boolean inverted, BlockPos pos, BlockState state) { super(BlockLightType.ILLUMAR_LAMP.getTileEntityType(color, inverted), pos, state); this.color = color; this.inverted = inverted; @@ -26,7 +26,7 @@ public boolean isLit() { @Override public AABB getRenderBoundingBox() { - Cuboid6 c = IllumarLampTileRenderer.GLOW_BOUNDS.copy(); + Cuboid6 c = IllumarLampBlockEntityRenderer.GLOW_BOUNDS.copy(); return c.add(worldPosition).aabb(); } } diff --git a/illumination/src/main/java/mrtjp/projectred/illumination/tile/IllumarSmartLampBlockEntity.java b/illumination/src/main/java/mrtjp/projectred/illumination/tile/IllumarSmartLampBlockEntity.java index 0dcf62e51..a95c20b50 100644 --- a/illumination/src/main/java/mrtjp/projectred/illumination/tile/IllumarSmartLampBlockEntity.java +++ b/illumination/src/main/java/mrtjp/projectred/illumination/tile/IllumarSmartLampBlockEntity.java @@ -10,7 +10,7 @@ import mrtjp.projectred.core.BundledSignalsLib; import mrtjp.projectred.core.CenterLookup; import mrtjp.projectred.core.FaceLookup; -import mrtjp.projectred.core.tile.BaseConnectableTile; +import mrtjp.projectred.core.tile.BaseConnectableBlockEntity; import mrtjp.projectred.core.tile.IOrientableBlockEntity; import mrtjp.projectred.illumination.block.IllumarSmartLampBlock; import mrtjp.projectred.illumination.init.IlluminationBlocks; @@ -24,7 +24,7 @@ import javax.annotation.Nullable; import java.util.Objects; -public class IllumarSmartLampBlockEntity extends BaseConnectableTile implements IOrientableBlockEntity, IMaskedBundledTile { +public class IllumarSmartLampBlockEntity extends BaseConnectableBlockEntity implements IOrientableBlockEntity, IMaskedBundledTile { private static final int PACKET_SIGNAL = 10; From 60070370247b87efb19e725b87158311afb1f002 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Sun, 26 Jan 2025 13:59:14 -0500 Subject: [PATCH 31/31] ci: run pull request check on older branches (cherry picked from commit f1ba1e27271d7cc6ee1d6e4d6a5bde9609cb7e53) --- .github/workflows/verify-pull-request.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/.github/workflows/verify-pull-request.yaml b/.github/workflows/verify-pull-request.yaml index 3dccf8399..70f6ce18e 100644 --- a/.github/workflows/verify-pull-request.yaml +++ b/.github/workflows/verify-pull-request.yaml @@ -4,8 +4,10 @@ on: pull_request: branches: - main - - main/** - feature/** + - 1.20.1 + - 1.19.x + - 1.18.x jobs: style_check:

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 b#q+0aIN z9hX2Q$QFokQp?5^q?}-vWVKGh>Ms9^#Z)UKtR;LIEYpV( zDs@Drfr!mq7>8%3;35TUb}%z2T?`y(2?}GTYc)EfI9unB;IcP$qNLV4( zfXoD0G&77e5KI9Zfp8dxnF0}8gyT3*L5R3BnJA2+9GJ^Nco4!9!vZmiGKXI*5YV7d ziesd6hr@v@2}?y$dNGG%GMU&WE}JwYa}be8#DP%`ibB8wGG^!~EFIDrr;d1#5=Pvh z)>CRy$FzFHQy8~8dc<|+B;xGe&QKTV`BsC+oiXNfNL{T=voG!y~wazLc;H52u6r%_U3)BsP zU_Jy3<4{D*7m0Z=1cL&?L#8rPp;l(tOnJZ#f&=4Vp%_#d4g8%c=oq!Sl*Ci5wH?{70Q+H{5Ea0Iflwg92Tl~A?JzmW z1}?&dm{2Z|<6Pdz{wRYQj2EW)+kU_d{HAckO9)V81jREBPe>@1JiOAVgNFuELE?bw zZ(EgeL>P!GaR?Rw=0G_P$@x44LX>i@5W$sP9#0;`u?`1tF*J8zVNID;GA>ezl!!tO z2?9|O#6yrkNF*1c5HFC2^Y~mPSAYm#+CAuJh!p2H3a?^6*zn>AwN*{VaNJm8wT%ID zu*bz1Zk=5T3%52cp+v9FX#0p?GLs1vuDNY$>FlOzkhHIZTo|q!3G`bGtM7daPYU6 zP7F}Y!CT-MvMy~$Ah@s{qJ$1)$^ec?TEJ(IXtdGAk4NGD~hpY0P6J^3gT<)H^blB-a%HVTX|VJu3Tp-!kd=ni=>3Th)z@771qE*&%39QW=uvp+ z0#_NpW$GIM_dP$hpBFLWOBz?52@PKekmt6zujJ_xi)l^A!1`-e&^z`WJ?Hn_GJb!_ zzQRJX-Su)pEr4@#Z(8Mk*YzG&Y+JM)fNnTY;NP*nq4;sYS~qV7!(r1vAN{EOOAWwG z$q5&gT?<$wEB@M@2iYFS_@}u@$0m4 zU~EygaVzh9^sT99(Ny@@({>eY=E3p(zA+o0ZaSRYWlkva9=*K0w$aZw%FyT-km{Lm zT4yffKghXytrozpq~X&qXZUz-c~9=s30VNv<}Ph3gy%UFcxU~vAD>ipzV6B7HHBR> zEXCXvE8_dlR+o-RsmT)uX+0hD9IkBq(d{84&7u5qCzAQWk0qMZ%jntrrsi#rE7xe$8#-PEN|!a zmQ{T*b+gY4Oe^L)SGTETpr`7BAJgN*bitmn^D8Fi`Yt}}pHCfbRPhrhb@j52 z6%MTJICFnz8_DdxI=vx2H0aLfdGi{+3$VOh-Vpq;eShshbJEYf9IpqS9NKBKhWlOq zk&v>s8<{^!Z#rgASz#2}-D|JnZ+pSglltqEf4Tt8u8L?| zx@}t<9I-g&qqEi9C572>6P$9-71{3=os%DK?p*Gl9!!t*)mN|W$?$Z{KIM{y=Du6M z&V1&LBe|@(AuZFik9KEI8;2bseJ^hO=lrdV$Y3nNIlOkk^MKSR811=v!(OUx)}`A= zmtQpXq1lJ#%OYLvPvtX0j}WV>%+_$739dYK3`Po@&1K<)k$wReOS77E_>#v^2@p}yc$yL{FyO=Zm%cH zlI<&3AAjFBuXTCP_h-kKd9%;eS`6jYk^!e9tONeng?-P;GFpSkviO_>QJ2iIcV^}L wUvkTSZujxhQDsMF7j-Wr{ROpV1GnF);E{Sv%ltQ&SpO15hA)(!2wl11f1>R+^#A|> literal 0 HcmV?d00001 diff --git a/integration/src/main/resources/assets/projectred_integration/textures/block/io_bundled_buffer.png b/integration/src/main/resources/assets/projectred_integration/textures/block/io_bundled_buffer.png new file mode 100644 index 0000000000000000000000000000000000000000..ea3c3dc021ad15f5520c75c44fc75415307e1e26 GIT binary patch literal 3909 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 G-~AsIfTH&R diff --git a/integration/src/main/resources/assets/projectred_integration/textures/block/io_crimp.png b/integration/src/main/resources/assets/projectred_integration/textures/block/io_crimp.png deleted file mode 100644 index dae560584335f3e446a878d6d6eee67095eab96c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3472 zcmb_f3se)=77YXu5Q<9W0gA=}L@JZaO#UO`W1@f%p%O(3S|^hUi6NPggl~}|S`8Mp z+FE^7pV$^uYFi&j{go1{6{}dNRbD|rs;vkp)F0vp?SxP2>#}`au9ua`+_`t3bM`s+ z?71sN@e3l|Tzp(;G@4s@R$&YLlB$67cyZUhl}uo83=?xESUOoL70zn1SlI}jC=qpnn9sN7fR-h z#G;-=fXZajqbycdRu(gh%_I$}ELbQMvLJ+oARvVRjX63KmJRBRexn{Fgb_EW^(Hl` zV^}?6ax%jt0w|`#DQNXJw>slUnW%!XvN1giWPe+8gQE0x+}JeP}BYYSmC&CR6J7%9ke(MDO0o?tB`jAVuZ zC+22SH2tjE=uxqOz)Yk;Mv`fx8x=oFnSmfom@!j|;cA^ViJ)gp2nl8)L;$sKFbHu$ zNFYOClq*Cz5D0Nl2pWb;NrhUOV}l}AD9n>V5DIfqtJyP9s%aFM3HzU51&%67gBGJw zR%@|Tf~D7`0t{OrQ8AfD8mPb&JNC2l(PDADfmEu~s0HJ~$T^JYxndqH1VG2k-YA+%2 z3~LjN+AFN~909_Is5m@=OHlSye`0c~Y`72?U;;T`jhGpXIV|AeN*sjv6mt%rgM)G|2L@rKoGpNH zC7Z*Mhp?yPR8IU{ish;$nR#*i3L47ZA01mM>0CKSNPwEB6w`?q#y*lm`I zpq&0i&kw_lq|%gy8Hk8fsuTW(s#t$U--u=YHF+gl!9j!w4&pe1fgB;505L?#2XR6U z!59oHIXqkPHuA$NL}W06Qtw);euq`~V&q3ki>okQDnXqZEa1h{`Fl$H!(RN^OXdHW z&QOC6_ZjPtEjYCH%+W$^=Fk*%URj5>gOYl%9kqmxs+55`NR>aA+@aCNd>Ac>kg3{# z*}gLNLdKN3u5as`&6O!Ds+F&Gw@xhixYTk>Z(o;Q;_kKH$8O>PZEw=N?@|_@&)XrL z?2-JSAjH|lpm%RVG}jNN36nqAH#YD*M|pOuaaTKeYMU`EvyEt9b*5+2{m1!z`L%tW zgM)dYm;1c+c|2#Q(|McBidwPcwxP&evaQFTQA%td{IUKC0Al?+gI1R&^$&C%Z=BR$ zw@13>{g#(%5#JW&+q@b#-_&ujsKd_G2j>eKX4h7|eDY#ZO7^wo38t{(PG6_>(H`n$ zHMNVMGEHh}QD};!CJud)x5uvPKjSx-{lnS5FH+)pE)XEo7)$oLw7zS146}R^zXxnT zNcUMW8B4L>souc*%87orY3tfpl>vWem1F(hY1_>Yu5D@2I-{!0j8|{GdcEow_qZLi zt{CY`Uj~!za-yi`a?iRAv(!Ua4Jc83SyT8-+Xw}>H5l^mAAt5 zshEve>*Inz*^}n+LO9JWmwta`xmjhbV6ZsJ_gZcYTH`_h#g7 z*MZo!i_SBrr+&~pb@rC4Zj*`{A|knK19m&?5KrFd{irf%LEf*WYz&M?Vx$&3j}g3YasTgmE& zLGhac-pMhWgQFONF};C67yR=zxA?W0HHVF@SbMs^!zpy}B=@NsmR&g=FNyoYj3adaL^E!G}}mn@(Iq@vjedYv@SR#3`$N-#k3v8YpmkI5EY1+qriv-RYXv zVON|VlaBZ}xt8$qtFt;GHb?Ll)op*n1z;1?L zQWwtZiZArl0zhqZ(X{!NK1bDx-W$p>vY+Ajpkz8%FFT~Z*Z4h_ ir5a0Hc~*_xQ(ErZkCgp_@M`OSrs%l~B%jS$UicfXn=8`* diff --git a/integration/src/main/resources/assets/projectred_integration/textures/block/io_crimp_old.png b/integration/src/main/resources/assets/projectred_integration/textures/block/io_crimp_old.png deleted file mode 100644 index 073b4b9447d2ea7a80da02d76862d531f4e9dc54..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3218 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 RO2fYffA3()KfU4>{}-HqzeWH6 diff --git a/integration/src/main/resources/assets/projectred_integration/textures/block/io_redstone_connector.png b/integration/src/main/resources/assets/projectred_integration/textures/block/io_redstone_connector.png new file mode 100644 index 0000000000000000000000000000000000000000..f4c0f8501e08c569b15051bb839f4df357a76a0c GIT binary patch literal 3814 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 M&fehdk1t;S3n7Ie`v3p{ diff --git a/integration/src/main/resources/assets/projectred_integration/textures/block/surface/io_redstone-0.png b/integration/src/main/resources/assets/projectred_integration/textures/block/surface/io_redstone-0.png new file mode 100644 index 0000000000000000000000000000000000000000..8de9e68ae693fcfbbfc4b3f0a191c6d5c95cdd33 GIT binary patch literal 1794 zcmbVN&2QX96n8ENN_#>=h?C`BK*wv*lD z*b`hiAb~2>I}-l@2mU1f1>Wq3)kF!6V#)S+{Cgk2_ujns^U>jpM-M)KU>L@u@xkaA z-lo2H;9>l*^Wqh}KB^C1wTAKWC;Hwoet+|sVSMmQk(_iV@wZH<(&m{;rM)a`EoD4? zwye20m7ST&X;DSizkmN@nMD>^-}^C+>peLu4lWz{^71edm!~4ktY=@DPnQf7l(OUI zvYb~fTSnGOFN3w-b}VxR=}seSR~s}>;v;iUHPRf|1PP3>ISB1g2;pTibf1_MQ|e&X zAs!+g!vjXCxw$Mb*kn079(}Vh2Vapj>$;jb&SJ5!7p|?EsYAjrbTD-&MSwuEMRRHMaF^v4@sD&$QuR(d4vWi4RRlO;n2l`4``MT zRxCh%q{Nxd?N&Ym`8=b8Aj~nMz6kcTEAui_h<^M;|&} z6zrgAAzc@nGx1XXxLM5$b5#e73tiulC3IqCW^J~M8zOKw25Ys8nFOW(lkPRFRe87I zjoh6=wC+$)&Ta0u{QN!6(;z3p3z0uaUF7-s5OI+Xkw^0olVKWW8KnQ3^HkR=@e(p% zE`~OjCTS6k4k^|Bum@X-$%SwW;47$eCaGZ#kCr{mFX^5Jh{@-~>vCzEtCdHd7XhVjHO V-aP#C*N1vajrR{ne?6bP{trm>BsTy6 literal 0 HcmV?d00001 From 41348695b7026d2b4076ae0efd95597a2c30a282 Mon Sep 17 00:00:00 2001 From: MrTJP Date: Sat, 10 Aug 2024 12:06:58 -0400 Subject: [PATCH 14/31] feat: add bundled bus io gates (cherry picked from commit 4fb8f5bd580358ff84808ce12d969a5595176827) --- .../af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 | 4 +- .../projectred_fabrication/lang/en_us.json | 4 + .../data/FabricationLanguageProvider.java | 4 + .../engine/IBundledCableICTile.java | 5 + .../engine/IBundledConnectableICTile.java | 1 - .../fabrication/engine/ICTileType.java | 4 +- .../engine/gates/BundledBusIOGateTile.java | 281 ++++++++++++++++++ .../engine/gates/BundledGateTile.java | 41 +++ .../engine/gates/ICGateTileType.java | 1 + .../engine/gates/SingleBitIOGateTile.java | 1 + .../engine/wires/BundledWireTile.java | 19 +- .../fabrication/gui/GatePlacerToolTab.java | 1 + .../fabrication/init/FabricationUnlocal.java | 4 + .../client/GateComponentModels.java | 28 ++ .../integration/client/GateModelRenderer.java | 42 +++ .../obj/array/busrand.blend | Bin 605036 -> 614572 bytes .../obj/array/busxcvr.blend | Bin 643376 -> 646904 bytes .../obj/io_bundled_bus.blend | Bin 0 -> 621472 bytes .../obj/io_bundled_bus.obj | 81 +++++ .../obj/io_bundled_connector.blend | Bin 620628 -> 628852 bytes .../obj/io_bundled_connector.obj | 8 +- .../textures/block/io_bundled_bus.png | Bin 0 -> 4513 bytes 22 files changed, 511 insertions(+), 18 deletions(-) create mode 100644 fabrication/src/main/java/mrtjp/projectred/fabrication/engine/IBundledCableICTile.java create mode 100644 fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledBusIOGateTile.java create mode 100644 fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledGateTile.java create mode 100644 integration/src/main/resources/assets/projectred_integration/obj/io_bundled_bus.blend create mode 100644 integration/src/main/resources/assets/projectred_integration/obj/io_bundled_bus.obj create mode 100644 integration/src/main/resources/assets/projectred_integration/textures/block/io_bundled_bus.png diff --git a/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 b/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 index ec278c70f..e91661c7c 100644 --- a/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 +++ b/fabrication/src/main/generated/.cache/af9e6e51e4f0a9c76d168bf51cd141f0b8234be4 @@ -1,2 +1,2 @@ -// 1.19.2 2025-01-21T11:08:50.000856 ProjectRed-Fabrication Languages: en_us -544f30078813d520aa0605fe587d997ab84a2324 assets/projectred_fabrication/lang/en_us.json +// 1.19.2 2025-01-21T11:17:37.203854 ProjectRed-Fabrication Languages: en_us +791a9f4360406346bf48eb394d3c20b798551076 assets/projectred_fabrication/lang/en_us.json diff --git a/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json b/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json index d76cd06c8..c6491c6c3 100644 --- a/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json +++ b/fabrication/src/main/generated/assets/projectred_fabrication/lang/en_us.json @@ -61,6 +61,7 @@ "projectred_fabrication.f.unit.warnings": "%d warnings", "projectred_fabrication.interact.default_state": "Default state", "projectred_fabrication.interact.delay": "Delay", + "projectred_fabrication.interact.io_bus_toggle": "Use Bundled Color IO gates to toggle bits", "projectred_fabrication.interact.io_direction": "IO direction", "projectred_fabrication.interact.io_direction.input": "Input", "projectred_fabrication.interact.io_direction.output": "Output", @@ -70,7 +71,9 @@ "projectred_fabrication.interact.side_disabled": "Side disabled", "projectred_fabrication.interact.side_enabled": "Side enabled", "projectred_fabrication.interact.sim_input": "Simulation input", + "projectred_fabrication.interact.sim_input_mask": "Simulation input mask", "projectred_fabrication.interact.sim_output": "Simulation output", + "projectred_fabrication.interact.sim_output_mask": "Simulation output mask", "projectred_fabrication.interface.bundled": "Bundled", "projectred_fabrication.interface.nc": "Not connected", "projectred_fabrication.interface.redstone": "Redstone", @@ -102,6 +105,7 @@ "projectred_fabrication.tilegroup.memory": "Memory", "projectred_fabrication.tilegroup.redwire": "Redwire", "projectred_fabrication.tilegroup.timing": "Timing", + "projectred_fabrication.tiles.bundled_bus_io_gate": "Bundled Bus IO Gate", "projectred_fabrication.tiles.bundled_color_io_gate": "Bundled Color IO Gate", "projectred_fabrication.tiles.counter.decr": "Decrement", "projectred_fabrication.tiles.counter.incr": "Increment", diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java index 4f97da66c..4b6f3b679 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/data/FabricationLanguageProvider.java @@ -57,6 +57,9 @@ protected void addTranslations() { add(UL_REFLECT, "Reflect"); add(UL_SIM_INPUT, "Simulation input"); add(UL_SIM_OUTPUT, "Simulation output"); + add(UL_SIM_INPUT_MASK, "Simulation input mask"); + add(UL_SIM_OUTPUT_MASK, "Simulation output mask"); + add(UL_IO_BUS_TOGGLE, "Use Bundled Color IO gates to toggle bits"); add(UL_IO_DIRECTION, "IO direction"); add(UL_IO_DIR_INPUT, "Input"); add(UL_IO_DIR_OUTPUT, "Output"); @@ -170,6 +173,7 @@ protected void addTranslations() { add(UL_REDSTONE_IO_GATE_TILE, "Redstone IO Gate"); add(UL_BUNDLED_COLOR_IO_GATE_TILE, "Bundled Color IO Gate"); + add(UL_BUNDLED_BUS_IO_GATE_TILE, "Bundled Bus IO Gate"); add(UL_TIMER_INTERVAL, "Interval"); add(UL_COUNTER_VALUE, "Value"); add(UL_COUNTER_MAX, "Max"); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/IBundledCableICTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/IBundledCableICTile.java new file mode 100644 index 000000000..4785a3f32 --- /dev/null +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/IBundledCableICTile.java @@ -0,0 +1,5 @@ +package mrtjp.projectred.fabrication.engine; + +public interface IBundledCableICTile extends IBundledConnectableICTile { + int getBundledColour(); +} diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/IBundledConnectableICTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/IBundledConnectableICTile.java index 513e1f4dd..c795ad2d3 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/IBundledConnectableICTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/IBundledConnectableICTile.java @@ -1,5 +1,4 @@ package mrtjp.projectred.fabrication.engine; public interface IBundledConnectableICTile { - int getBundledColour(); } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICTileType.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICTileType.java index 0c9edad44..abd129ef7 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICTileType.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/ICTileType.java @@ -12,8 +12,7 @@ import static mrtjp.projectred.fabrication.ProjectRedFabrication.LOGGER; import static mrtjp.projectred.fabrication.engine.ICTileTypeOffsets.*; -import static mrtjp.projectred.fabrication.init.FabricationUnlocal.UL_BUNDLED_COLOR_IO_GATE_TILE; -import static mrtjp.projectred.fabrication.init.FabricationUnlocal.UL_REDSTONE_IO_GATE_TILE; +import static mrtjp.projectred.fabrication.init.FabricationUnlocal.*; import static mrtjp.projectred.integration.GateType.*; import static mrtjp.projectred.transmission.WireType.*; @@ -22,6 +21,7 @@ public enum ICTileType { //@formatter:off REDSTONE_IO_GATE (ID_OFFSET_IOGATE, UL_REDSTONE_IO_GATE_TILE, RedstoneIOGateTile::new), BUNDLED_COLOR_IO_GATE (ID_OFFSET_IOGATE + 1, UL_BUNDLED_COLOR_IO_GATE_TILE, BundledColorIOGateTile::new), + BUNDLED_BUS_IO_GATE (ID_OFFSET_IOGATE + 2, UL_BUNDLED_BUS_IO_GATE_TILE, BundledBusIOGateTile::new), OR_GATE (ID_OFFSET_GATE, OR, ORGateTile::new), NOR_GATE (ID_OFFSET_GATE + 1, NOR, NORGateTile::new), diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledBusIOGateTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledBusIOGateTile.java new file mode 100644 index 000000000..165ef3997 --- /dev/null +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledBusIOGateTile.java @@ -0,0 +1,281 @@ +package mrtjp.projectred.fabrication.engine.gates; + +import codechicken.lib.data.MCDataInput; +import codechicken.lib.data.MCDataOutput; +import codechicken.lib.vec.*; +import mrtjp.fengine.api.IPathFinder; +import mrtjp.fengine.assemble.PathFinderResult; +import mrtjp.projectred.fabrication.editor.ICWorkbenchEditor; +import mrtjp.projectred.fabrication.editor.tools.InteractionZone; +import mrtjp.projectred.fabrication.editor.tools.SimpleInteractionZone; +import mrtjp.projectred.fabrication.engine.ICInterfaceType; +import mrtjp.projectred.fabrication.engine.ICSimulationContainer; +import mrtjp.projectred.fabrication.engine.IIOConnectionTile; +import mrtjp.projectred.fabrication.engine.IRotatableICTile; +import mrtjp.projectred.fabrication.engine.log.MultipleDriversError; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.network.chat.Component; + +import java.util.Arrays; +import java.util.List; +import java.util.Optional; + +import static mrtjp.projectred.fabrication.engine.PRFabricationEngine.*; +import static mrtjp.projectred.fabrication.init.FabricationUnlocal.*; + +public class BundledBusIOGateTile extends BundledGateTile implements IIOConnectionTile { + + public static final int BUNDLED_SIGNAL_PACKET = 6; + + private static final Cuboid6[] INPUT_TOGGLE_ZONE_BOUNDS = new Cuboid6[4]; + private static final Cuboid6[] DIR_ZONE_BOUNDS = new Cuboid6[4]; + + protected final int[] regIds = new int[16]; + protected short bundledSignal = 0; + + { + Arrays.fill(regIds, -1); + } + + static { + for (int r = 0; r < 4; r++) { + Transformation t = new Scale(1/16D).with(Rotation.quarterRotations[r].at(Vector3.CENTER)); + INPUT_TOGGLE_ZONE_BOUNDS[r] = new Cuboid6(1, 2, 0, 15, 3, 3).apply(t); // Toggle state of IO register + DIR_ZONE_BOUNDS[r] = new Cuboid6(5, 2, 7, 11, 5, 13).apply(t); // Toggle IO mode + } + } + + public BundledBusIOGateTile() { + super(ICGateTileType.BUNDLED_BUS_IO); + } + + //region Save/Load + @Override + public void save(CompoundTag tag) { + super.save(tag); + for (int i = 0; i < 16; i++) { + tag.putInt("reg" + i, regIds[i]); + } + tag.putShort("bundled_signal", bundledSignal); + } + + @Override + public void load(CompoundTag tag) { + super.load(tag); + for (int i = 0; i < 16; i++) { + if (tag.contains("reg" + i)) { + regIds[i] = tag.getInt("reg" + i); + } else { + regIds[i] = -1; + } + } + bundledSignal = tag.getShort("bundled_signal"); + } + //endregion + + //region Network + @Override + public void writeDesc(MCDataOutput out) { + super.writeDesc(out); + out.writeShort(bundledSignal); + } + + @Override + public void readDesc(MCDataInput in) { + super.readDesc(in); + bundledSignal = in.readShort(); + } + + @Override + public void read(MCDataInput in, int key) { + switch (key) { + case BUNDLED_SIGNAL_PACKET -> bundledSignal = in.readShort(); + default -> super.read(in, key); + } + } + + protected void sendBundledSignalUpdate() { + getWriteStream(BUNDLED_SIGNAL_PACKET).writeShort(bundledSignal); + } + //endregion + + //region IIOConnectionTile implementation + @Override + public boolean isInputIOMode() { + return getShape() == 0; + } + + @Override + public int getIOSide() { + return getRotation(); + } + + @Override + public ICInterfaceType getInterfaceType() { + return ICInterfaceType.BUNDLED; + } + //endregion + + //region BaseTile overrides + @Override + public void onSimRegistersChanged(int rMask, ICSimulationContainer container) { + int oldSig = bundledSignal; + int newSig = pullBundledSignal(container); + if (oldSig != newSig) { + bundledSignal = (short) newSig; + sendBundledSignalUpdate(); + } + } + + protected int pullBundledSignal(ICSimulationContainer container) { + int signal = 0; + for (int i = 0; i < 16; i++) { + if (regIds[i] != -1) { + signal |= container.pullRegisterValue(regIds[i]) << i; + } + } + return signal; + } + + @Override + public void buildInteractionZoneList(List zones) { + super.buildInteractionZoneList(zones); + + // For toggling input to simulation + zones.add(new SimpleInteractionZone.Builder() + .bounds(() -> INPUT_TOGGLE_ZONE_BOUNDS[getRotation()]) + .tooltip(toolTip -> { + toolTip.add(Component.translatable(isInputIOMode() ? UL_SIM_INPUT_MASK : UL_SIM_OUTPUT_MASK) + .append(Component.literal(": " + "0x%04X".formatted(bundledSignal))) + .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); + + if (isInputIOMode()) { + toolTip.add(Component.translatable(UL_IO_BUS_TOGGLE).withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); + } + }) + .build()); + + // For toggling input/output direction + zones.add(new SimpleInteractionZone.Builder() + .bounds(() -> DIR_ZONE_BOUNDS[getRotation()]) + .leftClickAction(this::toggleDirection) + .tooltip(toolTip -> { + toolTip.add(Component.translatable(UL_IO_DIRECTION) + .append(Component.literal(": ")) + .append(Component.translatable((isInputIOMode() ? UL_IO_DIR_INPUT : UL_IO_DIR_OUTPUT))) + .withStyle(ICWorkbenchEditor.UNIFORM_GRAY)); + }) + .build()); + + } + + protected void toggleDirection() { + configureShapeAndSend((getShape() + 1) % 2); + } + //endregion + + //region IGateRenderKey overrides + @Override + public short bOutput2() { + // Renderer should show 0 signal when not simulating + if (!getEditor().getStateMachine().isSimulating()) return 0; + return bundledOutputMask() != 0 ? bundledSignal : 0; + } + + @Override + public short bInput2() { + // Renderer should show 0 signal when not simulating + if (!getEditor().getStateMachine().isSimulating()) return 0; + return bundledInputMask() != 0 ? bundledSignal : 0; + } + //endregion + + //region GateTile overrides + @Override + protected boolean canRotate() { + return false; + } + //endregion + + //region BundledGateTile overrides + @Override + protected int bundledOutputMask() { + // Input mode, so this IC gate outputs into the sim + return isInputIOMode() ? 0x4 : 0x0; + } + + @Override + protected int bundledInputMask() { + // Output mode, so this IC gate inputs into sim + return isInputIOMode() ? 0x0 : 0x4; + } + //endregion + + //region FETile overrides + @Override + public void allocate(Allocator allocator) { + if (isInputIOMode()) { // Input from world, output into simulation + for (int i = 0; i < 16; i++) { + regIds[i] = inputRegisterId(getIOSide(), i); + } + } else { // Input from simulation, output into world + Arrays.fill(regIds, REG_ZERO); // Will be located, then remapped to target static register + } + } + + @Override + public void locate(IPathFinder pathFinder) { + if (!isInputIOMode()) { + int absR = toAbsoluteRotation(2); + int absDir = IRotatableICTile.rotationToDir(absR); + // Run path finding for each of the 16 ports/colors of the bundled connection + for (int i = 0; i < 16; i++) { + final int port = i; + PathFinderResult pfr = pathFinder.doPathFinding((d, p) -> d == absDir && p == port); + if (pfr.outputRegisters.size() > 1) { + //TODO specify port in this error + getEditor().getStateMachine().getCompilerLog().addProblem(new MultipleDriversError(getPos(), pfr.outputRegisters)); + } + if (!pfr.outputRegisters.isEmpty()) { + regIds[i] = pfr.outputRegisters.get(0); + } + } + } + } + + @Override + public void registerRemaps(RemapRegistry remapRegistry) { + if (!isInputIOMode()) { + for (int i = 0; i < 16; i++) { + if (regIds[i] == REG_ZERO) continue; + remapRegistry.addRemap(regIds[i], outputRegisterId(getIOSide(), i)); + } + } + } + + @Override + public void consumeRemaps(RemapProvider remapProvider) { + for (int i = 0; i < 16; i++) { + regIds[i] = remapProvider.getRemappedRegisterID(regIds[i]); + } + } + + @Override + public void collect(Collector collector) { + // No registers to define. We are only dealing with static registers that our + // engine pre-creates as hard-coded inputs/outputs. + } + + @Override + public Optional getOutputRegister(int outDir, int outPort) { + int gateOutputDir = IRotatableICTile.rotationToDir(toAbsoluteRotation(2)); + return isInputIOMode() && outDir == gateOutputDir ? Optional.of(regIds[outPort]) : Optional.empty(); + } + + @Override + public Optional getInputRegister(int inDir, int inPort) { + int gateInputDir = IRotatableICTile.rotationToDir(toAbsoluteRotation(2)); + return !isInputIOMode() && inDir == gateInputDir ? Optional.of(regIds[inPort]) : Optional.empty(); + } + //endregion +} diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledGateTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledGateTile.java new file mode 100644 index 000000000..e11738729 --- /dev/null +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/BundledGateTile.java @@ -0,0 +1,41 @@ +package mrtjp.projectred.fabrication.engine.gates; + +import mrtjp.projectred.fabrication.engine.IBundledConnectableICTile; +import mrtjp.projectred.fabrication.engine.IConnectableICTile; + +public class BundledGateTile extends RedstoneGateTile implements IBundledConnectableICTile { + + public BundledGateTile(ICGateTileType gateType) { + super(gateType); + } + + //region BundledGateTile override points + @Override + protected boolean canGateConnectTo(IConnectableICTile target, int r) { + if (target instanceof IBundledConnectableICTile) { + return canConnectBundled(r); + } + return super.canGateConnectTo(target, r); + } + + protected boolean canConnectBundled(int r) { + return canInputBundled(r) || canOutputBundled(r); + } + + protected boolean canOutputBundled(int r) { + return (bundledOutputMask() & 1 << r) != 0; + } + + protected boolean canInputBundled(int r) { + return (bundledInputMask() & 1 << r) != 0; + } + + protected int bundledOutputMask() { + return 0; + } + + protected int bundledInputMask() { + return 0; + } + //endregion +} diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/ICGateTileType.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/ICGateTileType.java index 6de4172a8..06910b2c4 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/ICGateTileType.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/ICGateTileType.java @@ -12,6 +12,7 @@ public enum ICGateTileType { REDSTONE_IO (ICTileType.REDSTONE_IO_GATE, GateModelRenderer.getNonPartRenderIndex(0), IO_EDGE), BUNDLED_COLOR_IO (ICTileType.BUNDLED_COLOR_IO_GATE, GateModelRenderer.getNonPartRenderIndex(1), IO_EDGE), + BUNDLED_BUS_IO (ICTileType.BUNDLED_BUS_IO_GATE, GateModelRenderer.getNonPartRenderIndex(2), IO_EDGE), OR (ICTileType.OR_GATE, GateModelRenderer.getRenderIndex(GateType.OR)), NOR (ICTileType.NOR_GATE, GateModelRenderer.getRenderIndex(GateType.NOR)), diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/SingleBitIOGateTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/SingleBitIOGateTile.java index eb0272649..950274c42 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/SingleBitIOGateTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/gates/SingleBitIOGateTile.java @@ -142,6 +142,7 @@ public int state2() { //region RedstoneGateTile overrides @Override protected int redstoneOutputMask() { + //TODO these are wrong i think? return isInputIOMode() ? 0x0 : 0x4; } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/wires/BundledWireTile.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/wires/BundledWireTile.java index e54f414e8..69f860818 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/wires/BundledWireTile.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/engine/wires/BundledWireTile.java @@ -1,13 +1,10 @@ package mrtjp.projectred.fabrication.engine.wires; import mrtjp.fengine.api.PropagationFunction; -import mrtjp.projectred.fabrication.engine.IBundledConnectableICTile; -import mrtjp.projectred.fabrication.engine.ICTileType; -import mrtjp.projectred.fabrication.engine.IConnectableICTile; -import mrtjp.projectred.fabrication.engine.IInsulatedConnectableICTile; +import mrtjp.projectred.fabrication.engine.*; import mrtjp.projectred.transmission.WireType; -public class BundledWireTile extends WireTile implements IBundledConnectableICTile { +public class BundledWireTile extends WireTile implements IBundledCableICTile { public BundledWireTile(int colour) { super(colour == -1 ? ICTileType.BUNDLED_NEUTRAL_WIRE : ICWireTileType.BUNDLED_COLOURED[colour].tileType, @@ -21,15 +18,19 @@ public int getBundledColour() { @Override public boolean canConnectTo(IConnectableICTile target, int towardsDir) { - - if (target instanceof IBundledConnectableICTile) { - int targetColour = ((IBundledConnectableICTile) target).getBundledColour(); + if (target instanceof IBundledCableICTile) { + int targetColour = ((IBundledCableICTile) target).getBundledColour(); int thisColour = getBundledColour(); return targetColour == thisColour || targetColour == -1 || thisColour == -1; // -1 means neutral } - if (target instanceof IInsulatedConnectableICTile) + if (target instanceof IInsulatedConnectableICTile) { return true; + } + + if (target instanceof IBundledConnectableICTile) { + return true; + } return false; } diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java index cb9ec689d..2c5851f54 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/gui/GatePlacerToolTab.java @@ -71,6 +71,7 @@ private void construct() { addGroup(UL_TILEGROUP_IO); addGateButton(ICGateTileType.REDSTONE_IO); addGateButton(ICGateTileType.BUNDLED_COLOR_IO); + addGateButton(ICGateTileType.BUNDLED_BUS_IO); addGroup(UL_TILEGROUP_BASIC); addGateButton(ICGateTileType.OR); diff --git a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java index a7cf014fe..2c8cddff5 100644 --- a/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java +++ b/fabrication/src/main/java/mrtjp/projectred/fabrication/init/FabricationUnlocal.java @@ -25,6 +25,9 @@ public class FabricationUnlocal { public static final String UL_REFLECT = PREFIX + "interact.reflect"; public static final String UL_SIM_INPUT = PREFIX + "interact.sim_input"; public static final String UL_SIM_OUTPUT = PREFIX + "interact.sim_output"; + public static final String UL_SIM_INPUT_MASK = PREFIX + "interact.sim_input_mask"; + public static final String UL_SIM_OUTPUT_MASK = PREFIX + "interact.sim_output_mask"; + public static final String UL_IO_BUS_TOGGLE = PREFIX + "interact.io_bus_toggle"; public static final String UL_IO_DIRECTION = PREFIX + "interact.io_direction"; public static final String UL_IO_DIR_INPUT = PREFIX + "interact.io_direction.input"; public static final String UL_IO_DIR_OUTPUT = PREFIX + "interact.io_direction.output"; @@ -124,6 +127,7 @@ public class FabricationUnlocal { // IC Tiles public static final String UL_REDSTONE_IO_GATE_TILE = PREFIX + "tiles.redstone_io_gate"; public static final String UL_BUNDLED_COLOR_IO_GATE_TILE = PREFIX + "tiles.bundled_color_io_gate"; + public static final String UL_BUNDLED_BUS_IO_GATE_TILE = PREFIX + "tiles.bundled_bus_io_gate"; public static final String UL_TIMER_INTERVAL = PREFIX + "tiles.timer.interval"; public static final String UL_COUNTER_VALUE = PREFIX + "tiles.counter.value"; public static final String UL_COUNTER_MAX = PREFIX + "tiles.counter.max"; diff --git a/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java b/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java index 64710abb0..440c630f8 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java +++ b/integration/src/main/java/mrtjp/projectred/integration/client/GateComponentModels.java @@ -67,6 +67,7 @@ public class GateComponentModels { public static final Map ioBundledConnector = loadModels("io_bundled_connector"); public static final Map ioBuffer = loadModels("io_buffer"); public static final Map ioBundledBuffer = loadModels("io_bundled_buffer"); + public static final Map ioBundledBus = loadModels("io_bundled_bus"); public static IconTransformation baseIcon; public static IconTransformation wireBorderIcon; @@ -105,6 +106,7 @@ public class GateComponentModels { public static IconTransformation ioBundledConnectorIcon; public static IconTransformation ioBufferIcon; public static IconTransformation ioBundledBufferIcon; + public static IconTransformation ioBundledBusIcon; public static void registerIcons(AtlasRegistrar registrar) { //@formatter:off @@ -149,6 +151,7 @@ public static void registerIcons(AtlasRegistrar registrar) { registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_bundled_connector"), i -> ioBundledConnectorIcon = new IconTransformation(i)); registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_buffer"), i -> ioBufferIcon = new IconTransformation(i)); registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_bundled_buffer"), i -> ioBundledBufferIcon = new IconTransformation(i)); + registrar.registerSprite(new ResourceLocation(MOD_ID, "block/io_bundled_bus"), i -> ioBundledBusIcon = new IconTransformation(i)); //@formatter:on } @@ -1680,6 +1683,31 @@ public void renderModel(Transformation t, int orient, CCRenderState ccrs) { } } + public static class IOBundledBusCableModel extends BundledCableModel { + + public static final IOBundledBusCableModel INSTANCE = new IOBundledBusCableModel(); + + private final CCModel[] boxModels; + + private IOBundledBusCableModel() { + super(ioBundledBus.get("cable"), new Vector3(8, 0, 8), 7 / 32D, 12 / 32D); + + Transformation t = new Translation(8/16D, 0, 8/16D); + CCModel m = ioBundledBus.get("box").copy().apply(t); + boxModels = bakeOrients(m); + } + + @Override + protected UVTransformation getUVT() { + return ioBundledBusIcon; + } + + @Override + public void renderModel(Transformation t, int orient, CCRenderState ccrs) { + super.renderModel(t, orient, ccrs); + boxModels[orient].render(ccrs, t, getUVT()); + } + } private static class RedundantUVTransformation extends UVTransformation { diff --git a/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java b/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java index cb5806418..006912c0f 100644 --- a/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java +++ b/integration/src/main/java/mrtjp/projectred/integration/client/GateModelRenderer.java @@ -81,6 +81,7 @@ public static GateModelRenderer instance() { private final GateRenderer[] nonPartRenderers = new GateRenderer[] { new RenderRedstoneIOGate(), new RenderBundledColorIOGate(), + new RenderBundledBusIOGate(), }; //region Static rendering @@ -2041,4 +2042,45 @@ protected void prepare(IGateRenderData gate) { buffer.isInput = gate.shape() == 0; } } + + public static class RenderBundledBusIOGate extends GateRenderer { + + private final List inputModels = new LinkedList<>(); + private final List outputModels = new LinkedList<>(); + private final SignalPanelModel inputPanel = new SignalPanelModel(8, 10, 0); + private final SignalPanelModel outputPanel = new SignalPanelModel(8, 10, 2); + + boolean ioInputMode = true; + + public RenderBundledBusIOGate() { + inputModels.add(BaseComponentModel.INSTANCE); + inputModels.add(IOBundledConnectorModel.INSTANCE); + inputModels.add(IOBundledBusCableModel.INSTANCE); + inputModels.add(inputPanel); + + outputModels.add(BaseComponentModel.INSTANCE); + outputModels.add(IOBundledConnectorModel.INSTANCE); + outputModels.add(IOBundledBusCableModel.INSTANCE); + outputModels.add(outputPanel); + } + + @Override + protected List getModels() { + return ioInputMode ? inputModels : outputModels; + } + + @Override + protected void prepareInventory(@Nullable ItemStack stack) { + ioInputMode = true; + inputPanel.signal = 0; + outputPanel.signal = 0; + } + + @Override + protected void prepare(IGateRenderData gate) { + ioInputMode = gate.shape() == 0; + inputPanel.signal = gate.bOutput2(); // Input mode panel outputs into simulation + outputPanel.signal = gate.bInput2(); // Output mode panel inputs from simulation + } + } } diff --git a/integration/src/main/resources/assets/projectred_integration/obj/array/busrand.blend b/integration/src/main/resources/assets/projectred_integration/obj/array/busrand.blend index 189c957a470bd914984439348f06d198928392d5..6a6491ea84e1f9c95f0dcadfbff33af3e70c8295 100644 GIT binary patch delta 104762 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 J$BTX2|1YlRHqZb7 delta 98725 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 Az5oCK diff --git a/integration/src/main/resources/assets/projectred_integration/obj/array/busxcvr.blend b/integration/src/main/resources/assets/projectred_integration/obj/array/busxcvr.blend index a095011ac1dffd50a1439c1bd0d9446779a4d346..6611a046e93c9491fccc18ff189eb2576f21fe57 100644 GIT binary patch delta 117023 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 Il|A?UUrqu?WB>pF diff --git a/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_bus.blend b/integration/src/main/resources/assets/projectred_integration/obj/io_bundled_bus.blend new file mode 100644 index 0000000000000000000000000000000000000000..208141a60481e1a38d3911bc75b3c2e9f454c08f GIT binary patch literal 621472 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