From 27fe1af0bebe7fd261a9ec4dc99d891a8dc49742 Mon Sep 17 00:00:00 2001 From: Robin Date: Fri, 28 Jun 2024 21:06:09 +0200 Subject: [PATCH] env distributor models and textures --- .../models/item/env_distributor.json | 3 + .../jei/EnvCollectorRecipeCategory.java | 2 - .../datagen/ETItemModelProvider.java | 2 +- .../level/block/EnvDistributorBlock.java | 31 ++- .../environmenttech/level/item/ETItems.java | 2 + .../models/block/env_distributor.json | 228 ++++++++++++++++++ .../textures/block/env_distributor.png | Bin 0 -> 4112 bytes 7 files changed, 264 insertions(+), 4 deletions(-) create mode 100644 src/generated/resources/assets/environmenttech/models/item/env_distributor.json create mode 100644 src/main/resources/assets/environmenttech/models/block/env_distributor.json create mode 100644 src/main/resources/assets/environmenttech/textures/block/env_distributor.png diff --git a/src/generated/resources/assets/environmenttech/models/item/env_distributor.json b/src/generated/resources/assets/environmenttech/models/item/env_distributor.json new file mode 100644 index 0000000..b459194 --- /dev/null +++ b/src/generated/resources/assets/environmenttech/models/item/env_distributor.json @@ -0,0 +1,3 @@ +{ + "parent": "environmenttech:block/env_distributor" +} \ No newline at end of file diff --git a/src/main/java/robaertschi/environmenttech/compat/jei/EnvCollectorRecipeCategory.java b/src/main/java/robaertschi/environmenttech/compat/jei/EnvCollectorRecipeCategory.java index 4466f2b..c18072d 100644 --- a/src/main/java/robaertschi/environmenttech/compat/jei/EnvCollectorRecipeCategory.java +++ b/src/main/java/robaertschi/environmenttech/compat/jei/EnvCollectorRecipeCategory.java @@ -68,8 +68,6 @@ public class EnvCollectorRecipeCategory implements IRecipeCategory recipeHolder, IFocusGroup focuses) { -//54, 34)) -// 116, 35 EnvCollectorRecipe recipe = recipeHolder.value(); builder.addSlot(RecipeIngredientRole.INPUT, 6, 16).addIngredients(recipe.input()); diff --git a/src/main/java/robaertschi/environmenttech/datagen/ETItemModelProvider.java b/src/main/java/robaertschi/environmenttech/datagen/ETItemModelProvider.java index 4bff28b..76e864d 100644 --- a/src/main/java/robaertschi/environmenttech/datagen/ETItemModelProvider.java +++ b/src/main/java/robaertschi/environmenttech/datagen/ETItemModelProvider.java @@ -29,7 +29,7 @@ public class ETItemModelProvider extends ItemModelProvider { @Override protected void registerModels() { withExistingParent(ETBlocks.ENV_COLLECTOR_BLOCK.getId().getPath(), modLoc("block/" + "env_collector")); -// withExistingParent(ETBlocks.ENV_DISTRIBUTOR_BLOCK.getId().getPath(), modLoc("block/" + "env_distributor")); + withExistingParent(ETBlocks.ENV_DISTRIBUTOR_BLOCK.getId().getPath(), modLoc("block/" + "env_distributor")); basicItem(ETItems.ENVIRONMENTAL_ESSENCE_ITEM.get()); basicItem(ETItems.GLASS_TANK.get()); registerEnvDetector(); diff --git a/src/main/java/robaertschi/environmenttech/level/block/EnvDistributorBlock.java b/src/main/java/robaertschi/environmenttech/level/block/EnvDistributorBlock.java index 7103fcd..9db77cd 100644 --- a/src/main/java/robaertschi/environmenttech/level/block/EnvDistributorBlock.java +++ b/src/main/java/robaertschi/environmenttech/level/block/EnvDistributorBlock.java @@ -10,6 +10,11 @@ import lombok.extern.slf4j.Slf4j; import javax.annotation.ParametersAreNonnullByDefault; +import net.minecraft.world.level.BlockGetter; +import net.minecraft.world.phys.shapes.BooleanOp; +import net.minecraft.world.phys.shapes.CollisionContext; +import net.minecraft.world.phys.shapes.Shapes; +import net.minecraft.world.phys.shapes.VoxelShape; import org.jetbrains.annotations.Nullable; import net.minecraft.MethodsReturnNonnullByDefault; @@ -28,6 +33,31 @@ import robaertschi.environmenttech.level.block.entity.EnvDistributorBlockEntity; @MethodsReturnNonnullByDefault public class EnvDistributorBlock extends SimpleBlockWithEntity { public static final MapCodec CODEC = simpleCodec(EnvDistributorBlock::new); + public static final VoxelShape SHAPE = makeShape(); + + + public static VoxelShape makeShape(){ + VoxelShape shape = Shapes.empty(); + shape = Shapes.join(shape, Shapes.box(0, 0, 0, 1, 0.0625, 1), BooleanOp.OR); + shape = Shapes.join(shape, Shapes.box(0.0625, 0.0625, 0.0625, 0.0625, 0.375, 0.9375), BooleanOp.OR); + shape = Shapes.join(shape, Shapes.box(0.9375, 0.0625, 0.0625, 0.9375, 0.375, 0.9375), BooleanOp.OR); + shape = Shapes.join(shape, Shapes.box(0.0625, 0.0625, 0.9375, 0.9375, 0.375, 0.9375), BooleanOp.OR); + shape = Shapes.join(shape, Shapes.box(0.0625, 0.0625, 0.0625, 0.9375, 0.375, 0.0625), BooleanOp.OR); + shape = Shapes.join(shape, Shapes.box(0, 0.4375, 0, 1, 0.625, 1), BooleanOp.OR); + shape = Shapes.join(shape, Shapes.box(0.1875, 0.625, 0.1875, 0.25, 1, 0.8125), BooleanOp.OR); + shape = Shapes.join(shape, Shapes.box(0.75, 0.625, 0.1875, 0.8125, 1, 0.8125), BooleanOp.OR); + shape = Shapes.join(shape, Shapes.box(0.25, 0.625, 0.25, 0.75, 0.75, 0.75), BooleanOp.OR); + shape = Shapes.join(shape, Shapes.box(0, 0.375, 0, 1, 0.4375, 1), BooleanOp.OR); + shape = Shapes.join(shape, Shapes.box(0.25, 0.625, 0.75, 0.75, 1, 0.8125), BooleanOp.OR); + shape = Shapes.join(shape, Shapes.box(0.25, 0.625, 0.1875, 0.75, 1, 0.25), BooleanOp.OR); + + return shape; + } + + @Override + protected VoxelShape getShape(BlockState state, BlockGetter level, BlockPos pos, CollisionContext context) { + return SHAPE; + } public EnvDistributorBlock(Properties pProperties) { super(pProperties, ETBlockEntities.ENV_DISTRIBUTOR_BLOCK_ENTITY); @@ -43,5 +73,4 @@ public class EnvDistributorBlock extends SimpleBlockWithEntity EXAMPLE_BLOCK_ITEM = ITEMS.registerSimpleBlockItem("example_block", EXAMPLE_BLOCK); public static final DeferredItem ENV_COLLECTOR_BLOCK_ITEM = ITEMS.registerSimpleBlockItem("env_collector", ETBlocks.ENV_COLLECTOR_BLOCK); + public static final DeferredItem ENV_DISTRIBUTOR_ITEM = ITEMS.registerSimpleBlockItem("env_distributor", ETBlocks.ENV_DISTRIBUTOR_BLOCK); public static final DeferredItem ENV_DETECTOR_ITEM = ITEMS.registerItem("env_detector", EnvDetectorItem::new, @@ -54,6 +55,7 @@ public class ETItems { .icon(() -> ENV_COLLECTOR_BLOCK_ITEM.get().getDefaultInstance()) .displayItems((parameters, output) -> { output.accept(ENV_COLLECTOR_BLOCK_ITEM.get()); + output.accept(ENV_DISTRIBUTOR_ITEM); output.accept(ENV_DETECTOR_ITEM.get()); // output.accept(EXAMPLE_BLOCK_ITEM.get()); output.accept(ENVIRONMENTAL_ESSENCE_ITEM.get()); diff --git a/src/main/resources/assets/environmenttech/models/block/env_distributor.json b/src/main/resources/assets/environmenttech/models/block/env_distributor.json new file mode 100644 index 0000000..e7c9eb3 --- /dev/null +++ b/src/main/resources/assets/environmenttech/models/block/env_distributor.json @@ -0,0 +1,228 @@ +{ + "credit": "Made with Blockbench", + "texture_size": [128, 128], + "render_type": "cutout", + "textures": { + "0": "environmenttech:block/env_distributor", + "particle": "#0" + }, + "elements": [ + { + "name": "base", + "from": [0, 0, 0], + "to": [16, 1, 16], + "faces": { + "north": {"uv": [2, 6.75, 4, 6.875], "texture": "#0", "cullface": "north"}, + "east": {"uv": [0, 6.75, 2, 6.875], "texture": "#0", "cullface": "east"}, + "south": {"uv": [6, 6.75, 8, 6.875], "texture": "#0", "cullface": "south"}, + "west": {"uv": [4, 6.75, 6, 6.875], "texture": "#0", "cullface": "west"}, + "up": {"uv": [4, 6.75, 2, 4.75], "texture": "#0"}, + "down": {"uv": [6, 4.75, 4, 6.75], "texture": "#0", "cullface": "down"} + } + }, + { + "name": "base", + "from": [0, 6, 0], + "to": [16, 7, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 6, 0]}, + "faces": { + "north": {"uv": [2, 4.5, 4, 4.625], "texture": "#0", "cullface": "north"}, + "east": {"uv": [0, 4.5, 2, 4.625], "texture": "#0", "cullface": "east"}, + "south": {"uv": [6, 4.5, 8, 4.625], "texture": "#0", "cullface": "south"}, + "west": {"uv": [4, 4.5, 6, 4.625], "texture": "#0", "cullface": "west"}, + "up": {"uv": [4, 4.5, 2, 2.5], "texture": "#0"}, + "down": {"uv": [6, 2.5, 4, 4.5], "texture": "#0", "cullface": "down"} + } + }, + { + "name": "glass_east", + "from": [1, 1, 1], + "to": [1, 6, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [-1, 1, 1]}, + "faces": { + "north": {"uv": [8.125, 5, 8.125, 5.625], "texture": "#0"}, + "east": {"uv": [6.375, 5, 8.125, 5.625], "texture": "#0"}, + "south": {"uv": [9.875, 5, 9.875, 5.625], "texture": "#0"}, + "west": {"uv": [8.125, 5, 9.875, 5.625], "texture": "#0"}, + "up": {"uv": [8.125, 5, 8.125, 3.25], "texture": "#0"}, + "down": {"uv": [8.125, 3.25, 8.125, 5], "texture": "#0"} + } + }, + { + "name": "glass_west", + "from": [15, 1, 1], + "to": [15, 6, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [13, 1, 1]}, + "faces": { + "north": {"uv": [8.125, 2.5, 8.125, 3.125], "texture": "#0"}, + "east": {"uv": [6.375, 2.5, 8.125, 3.125], "texture": "#0"}, + "south": {"uv": [9.875, 2.5, 9.875, 3.125], "texture": "#0"}, + "west": {"uv": [8.125, 2.5, 9.875, 3.125], "texture": "#0"}, + "up": {"uv": [8.125, 2.5, 8.125, 0.75], "texture": "#0"}, + "down": {"uv": [8.125, 0.75, 8.125, 2.5], "texture": "#0"} + } + }, + { + "name": "glass_south", + "from": [1, 1, 15], + "to": [15, 6, 15], + "rotation": {"angle": 0, "axis": "y", "origin": [2, 1, 14]}, + "faces": { + "north": {"uv": [7, 7.875, 8.75, 8.5], "texture": "#0"}, + "east": {"uv": [7, 7.875, 7, 8.5], "texture": "#0"}, + "south": {"uv": [8.75, 7.875, 10.5, 8.5], "texture": "#0"}, + "west": {"uv": [8.75, 7.875, 8.75, 8.5], "texture": "#0"}, + "up": {"uv": [8.75, 7.875, 7, 7.875], "texture": "#0"}, + "down": {"uv": [10.5, 7.875, 8.75, 7.875], "texture": "#0"} + } + }, + { + "name": "glass_north", + "from": [1, 1, 1], + "to": [15, 6, 1], + "rotation": {"angle": 0, "axis": "y", "origin": [2, 1, 0]}, + "faces": { + "north": {"uv": [6.125, 0, 7.875, 0.625], "texture": "#0"}, + "east": {"uv": [6.125, 0, 6.125, 0.625], "texture": "#0"}, + "south": {"uv": [7.875, 0, 9.625, 0.625], "texture": "#0"}, + "west": {"uv": [7.875, 0, 7.875, 0.625], "texture": "#0"}, + "up": {"uv": [7.875, 0, 6.125, 0], "texture": "#0"}, + "down": {"uv": [9.625, 0, 7.875, 0], "texture": "#0"} + } + }, + { + "name": "base", + "from": [0, 7, 0], + "to": [16, 10, 16], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 7, 0]}, + "faces": { + "north": {"uv": [2, 2, 4, 2.375], "texture": "#0"}, + "east": {"uv": [0, 2, 2, 2.375], "texture": "#0"}, + "south": {"uv": [6, 2, 8, 2.375], "texture": "#0"}, + "west": {"uv": [4, 2, 6, 2.375], "texture": "#0"}, + "up": {"uv": [4, 2, 2, 0], "texture": "#0"}, + "down": {"uv": [6, 0, 4, 2], "texture": "#0"} + } + }, + { + "name": "east", + "from": [3, 10, 3], + "to": [4, 16, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [0, 10, 0]}, + "faces": { + "north": {"uv": [5.375, 8.25, 5.5, 9], "texture": "#0"}, + "east": {"uv": [4.125, 8.25, 5.375, 9], "texture": "#0"}, + "south": {"uv": [6.75, 8.25, 6.875, 9], "texture": "#0"}, + "west": {"uv": [5.5, 8.25, 6.75, 9], "texture": "#0"}, + "up": {"uv": [5.5, 8.25, 5.375, 7], "texture": "#0"}, + "down": {"uv": [5.625, 7, 5.5, 8.25], "texture": "#0"} + } + }, + { + "name": "west", + "from": [12, 10, 3], + "to": [13, 16, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [9, 10, 0]}, + "faces": { + "north": {"uv": [8.125, 7, 8.25, 7.75], "texture": "#0"}, + "east": {"uv": [6.875, 7, 8.125, 7.75], "texture": "#0"}, + "south": {"uv": [9.5, 7, 9.625, 7.75], "texture": "#0"}, + "west": {"uv": [8.25, 7, 9.5, 7.75], "texture": "#0"}, + "up": {"uv": [8.25, 7, 8.125, 5.75], "texture": "#0"}, + "down": {"uv": [8.375, 5.75, 8.25, 7], "texture": "#0"} + } + }, + { + "name": "spout_base", + "from": [4, 10, 4], + "to": [12, 12, 12], + "rotation": {"angle": 0, "axis": "y", "origin": [7.5, 13, 8.5]}, + "faces": { + "north": {"uv": [1, 8, 2, 8.25], "texture": "#0"}, + "east": {"uv": [0, 8, 1, 8.25], "texture": "#0"}, + "south": {"uv": [3, 8, 4, 8.25], "texture": "#0"}, + "west": {"uv": [2, 8, 3, 8.25], "texture": "#0"}, + "up": {"uv": [2, 8, 1, 7], "rotation": 90, "texture": "#0"}, + "down": {"uv": [3, 7, 2, 8], "rotation": 270, "texture": "#0"} + } + }, + { + "from": [4, 10, 12], + "to": [12, 16, 13], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 10, 12]}, + "faces": { + "north": {"uv": [10.75, 3.375, 11.75, 4.125], "texture": "#0"}, + "east": {"uv": [10.625, 3.375, 10.75, 4.125], "texture": "#0"}, + "south": {"uv": [11.875, 3.375, 12.875, 4.125], "texture": "#0"}, + "west": {"uv": [11.75, 3.375, 11.875, 4.125], "texture": "#0"}, + "up": {"uv": [11.75, 3.375, 10.75, 3.25], "texture": "#0"}, + "down": {"uv": [12.75, 3.25, 11.75, 3.375], "texture": "#0"} + } + }, + { + "from": [4, 10, 3], + "to": [12, 16, 4], + "rotation": {"angle": 0, "axis": "y", "origin": [4, 10, 3]}, + "faces": { + "north": {"uv": [10.75, 0.875, 11.75, 1.625], "texture": "#0"}, + "east": {"uv": [10.625, 0.875, 10.75, 1.625], "texture": "#0"}, + "south": {"uv": [11.875, 0.875, 12.875, 1.625], "texture": "#0"}, + "west": {"uv": [11.75, 0.875, 11.875, 1.625], "texture": "#0"}, + "up": {"uv": [11.75, 0.875, 10.75, 0.75], "texture": "#0"}, + "down": {"uv": [12.75, 0.75, 11.75, 0.875], "texture": "#0"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "thirdperson_lefthand": { + "rotation": [75, 45, 0], + "translation": [0, 2.5, 0], + "scale": [0.375, 0.375, 0.375] + }, + "firstperson_righthand": { + "rotation": [0, 45, 0], + "scale": [0.4, 0.4, 0.4] + }, + "firstperson_lefthand": { + "rotation": [0, 225, 0], + "scale": [0.4, 0.4, 0.4] + }, + "ground": { + "translation": [0, 3, 0], + "scale": [0.25, 0.25, 0.25] + }, + "gui": { + "rotation": [30, 225, 0], + "scale": [0.625, 0.625, 0.625] + }, + "fixed": { + "scale": [0.5, 0.5, 0.5] + } + }, + "groups": [ + { + "name": "main", + "origin": [0, 0, 0], + "color": 0, + "children": [ + { + "name": "tank", + "origin": [0, 0, 0], + "color": 0, + "children": [0, 1, 2, 3, 4, 5] + }, + { + "name": "spiller", + "origin": [0, 0, 0], + "color": 0, + "children": [6, 7, 8, 9, 10, 11] + } + ] + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/environmenttech/textures/block/env_distributor.png b/src/main/resources/assets/environmenttech/textures/block/env_distributor.png new file mode 100644 index 0000000000000000000000000000000000000000..303b5a2a18c49edc37117d98bb5c8618cb51ee50 GIT binary patch literal 4112 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 Kah;)i%>MvTR|6>k literal 0 HcmV?d00001