From 82a2d128f198af2c1cf859d0f8781e41c5f6dd14 Mon Sep 17 00:00:00 2001 From: simibubi <31564874+simibubi@users.noreply.github.com> Date: Thu, 4 Jun 2020 15:04:49 +0200 Subject: [PATCH] Ported ISTERs - Removed temporary lang partial with entity names - Fixed and Refactored the item renderers of the Wrench, Blockzappers, Worldshapers, Symmetry Wand and Deforester - Tweaked blockzapper beam rendering to look less clunky - Fixed selection of zapper tools not showing after they had been dual-wielded --- src/generated/resources/.cache/cache | 8 +- .../create/blockstates/radial_chassis.json | 24 ++--- .../resources/assets/create/lang/en_ud.json | 3 + .../resources/assets/create/lang/en_us.json | 11 +-- .../recipes/create.base/copper_shingles.json | 32 ------ .../data/create/recipes/copper_shingles.json | 15 --- .../wrench/WrenchItemRenderer.java | 31 ++---- .../client/SymmetryWandItemRenderer.java | 30 +++--- .../symmetry/client/SymmetryWandModel.java | 2 +- .../tools/DeforesterItemRenderer.java | 37 +++---- .../curiosities/tools/DeforesterModel.java | 2 +- .../zapper/ZapperItemRenderer.java | 48 ++++++--- .../zapper/ZapperRenderHandler.java | 34 +++---- .../blockzapper/BlockzapperItemRenderer.java | 69 ++++++------- .../zapper/blockzapper/BlockzapperModel.java | 6 +- .../blockzapper/BlockzapperRenderHandler.java | 5 +- .../WorldshaperItemRenderer.java | 54 ++++------- .../terrainzapper/WorldshaperModel.java | 2 +- .../WorldshaperRenderHandler.java | 5 +- .../CustomRenderedItemModelRenderer.java | 32 ++++++ .../foundation/data/AllLangPartials.java | 1 - .../item/PartialItemModelRenderer.java | 97 +++++++++++++++++++ .../foundation/renderState/RenderTypes.java | 76 ++++++++++++++- .../renderState/SuperRenderTypeBuffer.java | 1 + .../utility/outliner/LineOutline.java | 40 +++++++- .../foundation/utility/outliner/Outliner.java | 17 +++- .../assets/create/lang/default/temporary.json | 5 - .../item/deforester/{light.json => core.json} | 21 ++-- .../deforester/{blade.json => core_glow.json} | 20 ++-- .../handheld_blockzapper/amplifier_core.json | 17 +--- .../amplifier_core_glow.json | 21 ++++ .../item/handheld_blockzapper/core.json | 17 +--- .../item/handheld_blockzapper/core_glow.json | 21 ++++ .../handheld_worldshaper/accelerator.json | 40 -------- .../item/handheld_worldshaper/core.json | 82 +--------------- .../item/handheld_worldshaper/core_glow.json | 37 +++++++ .../models/item/wand_of_symmetry/core.json | 19 ---- .../item/wand_of_symmetry/core_glow.json | 22 +++++ 38 files changed, 542 insertions(+), 462 deletions(-) delete mode 100644 src/generated/resources/data/create/advancements/recipes/create.base/copper_shingles.json delete mode 100644 src/generated/resources/data/create/recipes/copper_shingles.json create mode 100644 src/main/java/com/simibubi/create/foundation/block/render/CustomRenderedItemModelRenderer.java create mode 100644 src/main/java/com/simibubi/create/foundation/item/PartialItemModelRenderer.java delete mode 100644 src/main/resources/assets/create/lang/default/temporary.json rename src/main/resources/assets/create/models/item/deforester/{light.json => core.json} (56%) rename src/main/resources/assets/create/models/item/deforester/{blade.json => core_glow.json} (57%) create mode 100644 src/main/resources/assets/create/models/item/handheld_blockzapper/amplifier_core_glow.json create mode 100644 src/main/resources/assets/create/models/item/handheld_blockzapper/core_glow.json create mode 100644 src/main/resources/assets/create/models/item/handheld_worldshaper/core_glow.json create mode 100644 src/main/resources/assets/create/models/item/wand_of_symmetry/core_glow.json diff --git a/src/generated/resources/.cache/cache b/src/generated/resources/.cache/cache index f1fe00ed8..fa5d3c11f 100644 --- a/src/generated/resources/.cache/cache +++ b/src/generated/resources/.cache/cache @@ -272,7 +272,7 @@ b7829c2ef2c47188713f8cab21b2c9bc7f9c5b79 assets\create\blockstates\portable_stor e8b0a401c10d1ba67ed71ba31bd5f9bc28571b65 assets\create\blockstates\powered_toggle_latch.json 3a739f9d4276828d83f2d2750bf3227c87bcd438 assets\create\blockstates\pulley_magnet.json 469e430d96cb0a5e1aaf6b7cc5d401d488c9e600 assets\create\blockstates\pulse_repeater.json -5c1df061eb5efe49beee7219e113206fc31a4733 assets\create\blockstates\radial_chassis.json +4e1fb033316e9230d2f024d67c27940ea731643a assets\create\blockstates\radial_chassis.json 8929677f2cc5354aa19ef182af69f9f0b41eb242 assets\create\blockstates\redstone_contact.json c29213b77ac0c78d8979c5f6188d2b265696f9b9 assets\create\blockstates\redstone_link.json e2990fe70ad5d10437a376e70e167d1856277cc1 assets\create\blockstates\rope.json @@ -323,8 +323,8 @@ c60c3115fd6eeaa3a696428a87a74d184ab7d62d assets\create\blockstates\weathered_lim c77b46d8b459e5c7cc495393546f3fcca8a1fa1d assets\create\blockstates\weathered_limestone_pillar.json 7f39521b211441f5c3e06d60c5978cebe16cacfb assets\create\blockstates\zinc_block.json b7181bcd8182b2f17088e5aa881f374c9c65470c assets\create\blockstates\zinc_ore.json -c47cfc7aae111eb9136f9cd3b6240669f920550d assets\create\lang\en_ud.json -9691b16416906b5f42f30420210d9f3937defed0 assets\create\lang\en_us.json +bf385ee965d828085374a6a31614cf0fc04c0c0c assets\create\lang\en_ud.json +4524b8b3180676a54234d5c97c2bbda0f239b1d1 assets\create\lang\en_us.json 846200eb548d3bfa2e77b41039de159b4b6cfb45 assets\create\models\block\acacia_window.json 1930fa3a3c98d53dd19e4ee7f55bc27fd47aa281 assets\create\models\block\acacia_window_pane_noside.json 1763ea2c9b981d187f5031ba608f3d5d3be3986a assets\create\models\block\acacia_window_pane_noside_alt.json @@ -1280,7 +1280,6 @@ a135eec618e448f440d9f42cc7a3e6c63fc45a71 data\create\advancements\overstressed.j 1e3cd82e36fd4bcd053d652a0eead4458ed7f315 data\create\advancements\press.json b2782692d27ffb105e3167174cebe1ebdd4a9867 data\create\advancements\recipes\create.base\brass_block.json df6f220e693f5256bb3df8d6c7769bc931820ae5 data\create\advancements\recipes\create.base\copper_block.json -22e0798a182df482aa6e7b3da5312ea2e21b9e7d data\create\advancements\recipes\create.base\copper_shingles.json 82280c50b78dd7e8c179cb8e8f0c074b26ec9586 data\create\advancements\recipes\create.base\zinc_block.json 909345eb2f5541a2be592a52800319a8765ca345 data\create\advancements\recipes\create.palettes\acacia_window.json 73f99cd857b056da5e19ff8304a4f5eeacc4f8cd data\create\advancements\recipes\create.palettes\acacia_window_pane.json @@ -2021,7 +2020,6 @@ c323b106e88b7de77fea71ff12494abdbb818d15 data\create\recipes\chiseled_limestone_ da9a919b476954c1de34826aa7706bf6056a8f12 data\create\recipes\chiseled_scoria_from_scoria_stonecutting.json 09faa4ddcf9f3907dcdb3ab3e8b68c1deb2486e5 data\create\recipes\chiseled_weathered_limestone_from_weathered_limestone_stonecutting.json 386c52f0aad6e2239f31dc85f7e745b47230846b data\create\recipes\copper_block.json -f863c101808434316da5261b0274f09d80065ea5 data\create\recipes\copper_shingles.json f2c317e03ac4d42fb631e1625607061e10c480fe data\create\recipes\dark_oak_window.json d9dbae6e237eb38e53a619a0f1b339fca7c59b4d data\create\recipes\dark_oak_window_pane.json 55596a590962e3ddd40949917661f0bd94408274 data\create\recipes\dark_scoria_bricks_from_dark_scoria_stonecutting.json diff --git a/src/generated/resources/assets/create/blockstates/radial_chassis.json b/src/generated/resources/assets/create/blockstates/radial_chassis.json index 7a1df3438..80ab92133 100644 --- a/src/generated/resources/assets/create/blockstates/radial_chassis.json +++ b/src/generated/resources/assets/create/blockstates/radial_chassis.json @@ -29,8 +29,8 @@ }, { "when": { - "sticky_south": "true", - "axis": "x" + "axis": "x", + "sticky_south": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -39,8 +39,8 @@ }, { "when": { - "sticky_south": "true", - "axis": "y" + "axis": "y", + "sticky_south": "true" }, "apply": { "model": "create:block/radial_chassis_side_y_sticky" @@ -48,8 +48,8 @@ }, { "when": { - "sticky_south": "true", - "axis": "z" + "axis": "z", + "sticky_south": "true" }, "apply": { "model": "create:block/radial_chassis_side_x_sticky", @@ -59,8 +59,8 @@ }, { "when": { - "sticky_south": "false", - "axis": "x" + "axis": "x", + "sticky_south": "false" }, "apply": { "model": "create:block/radial_chassis_side_x", @@ -69,8 +69,8 @@ }, { "when": { - "sticky_south": "false", - "axis": "y" + "axis": "y", + "sticky_south": "false" }, "apply": { "model": "create:block/radial_chassis_side_y" @@ -78,8 +78,8 @@ }, { "when": { - "sticky_south": "false", - "axis": "z" + "axis": "z", + "sticky_south": "false" }, "apply": { "model": "create:block/radial_chassis_side_x", diff --git a/src/generated/resources/assets/create/lang/en_ud.json b/src/generated/resources/assets/create/lang/en_ud.json index e555208f8..8d5f4b5a0 100644 --- a/src/generated/resources/assets/create/lang/en_ud.json +++ b/src/generated/resources/assets/create/lang/en_ud.json @@ -324,6 +324,9 @@ "block.create.weathered_limestone_pillar": "\u0279\u0250\u05DF\u05DF\u0131\u0500 \u01DDuo\u0287s\u01DD\u026F\u0131\uA780 p\u01DD\u0279\u01DD\u0265\u0287\u0250\u01DDM", "block.create.zinc_block": "\u029E\u0254o\u05DF\u15FA \u0254u\u0131Z", "block.create.zinc_ore": "\u01DD\u0279O \u0254u\u0131Z", + "entity.create.contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186", + "entity.create.stationary_contraption": "uo\u0131\u0287d\u0250\u0279\u0287uo\u0186 \u028E\u0279\u0250uo\u0131\u0287\u0250\u0287S", + "entity.create.super_glue": "\u01DDn\u05DF\u2141 \u0279\u01DDdnS", "item.create.andesite_alloy": "\u028Eo\u05DF\u05DF\u2C6F \u01DD\u0287\u0131s\u01DDpu\u2C6F", "item.create.attribute_filter": "\u0279\u01DD\u0287\u05DF\u0131\u2132 \u01DD\u0287nq\u0131\u0279\u0287\u0287\u2C6F", "item.create.belt_connector": "\u0287\u05DF\u01DD\u15FA \u05DF\u0250\u0254\u0131u\u0250\u0265\u0254\u01DDW", diff --git a/src/generated/resources/assets/create/lang/en_us.json b/src/generated/resources/assets/create/lang/en_us.json index e5f92068e..3dfe691e0 100644 --- a/src/generated/resources/assets/create/lang/en_us.json +++ b/src/generated/resources/assets/create/lang/en_us.json @@ -328,6 +328,10 @@ "block.create.zinc_block": "Zinc Block", "block.create.zinc_ore": "Zinc Ore", + "entity.create.contraption": "Contraption", + "entity.create.stationary_contraption": "Stationary Contraption", + "entity.create.super_glue": "Super Glue", + "item.create.andesite_alloy": "Andesite Alloy", "item.create.attribute_filter": "Attribute Filter", "item.create.belt_connector": "Mechanical Belt", @@ -380,13 +384,6 @@ "item.create.zinc_nugget": "Zinc Nugget", - "_": "->------------------------] We aren't in Registrate yet [------------------------<-", - - "entity.create.contraption": "Moving Contraption", - "entity.create.stationary_contraption": "Stationary Contraption", - "entity.create.super_glue": "Superglue", - - "_": "->------------------------] Advancements [------------------------<-", "advancement.create.root": "Welcome to Create", diff --git a/src/generated/resources/data/create/advancements/recipes/create.base/copper_shingles.json b/src/generated/resources/data/create/advancements/recipes/create.base/copper_shingles.json deleted file mode 100644 index e07c09425..000000000 --- a/src/generated/resources/data/create/advancements/recipes/create.base/copper_shingles.json +++ /dev/null @@ -1,32 +0,0 @@ -{ - "parent": "minecraft:recipes/root", - "rewards": { - "recipes": [ - "create:copper_shingles" - ] - }, - "criteria": { - "has_plates_copper": { - "trigger": "minecraft:inventory_changed", - "conditions": { - "items": [ - { - "tag": "forge:plates/copper" - } - ] - } - }, - "has_the_recipe": { - "trigger": "minecraft:recipe_unlocked", - "conditions": { - "recipe": "create:copper_shingles" - } - } - }, - "requirements": [ - [ - "has_plates_copper", - "has_the_recipe" - ] - ] -} \ No newline at end of file diff --git a/src/generated/resources/data/create/recipes/copper_shingles.json b/src/generated/resources/data/create/recipes/copper_shingles.json deleted file mode 100644 index 6a3d1ab61..000000000 --- a/src/generated/resources/data/create/recipes/copper_shingles.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "type": "minecraft:crafting_shaped", - "pattern": [ - "XX", - "XX" - ], - "key": { - "X": { - "tag": "forge:plates/copper" - } - }, - "result": { - "item": "create:copper_shingles" - } -} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java b/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java index c7bf225f2..6bd89f42a 100644 --- a/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/contraptions/wrench/WrenchItemRenderer.java @@ -1,40 +1,29 @@ package com.simibubi.create.content.contraptions.wrench; import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.block.render.CustomRenderedItemModelRenderer; +import com.simibubi.create.foundation.item.PartialItemModelRenderer; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.Vector3f; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; import net.minecraft.item.ItemStack; -public class WrenchItemRenderer extends ItemStackTileEntityRenderer { +public class WrenchItemRenderer extends CustomRenderedItemModelRenderer { @Override - public void render(ItemStack stack, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { + protected void render(ItemStack stack, WrenchModel model, PartialItemModelRenderer renderer, MatrixStack ms, + IRenderTypeBuffer buffer, int light, int overlay) { + renderer.render(model.getBakedModel(), light); - ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer(); - WrenchModel mainModel = (WrenchModel) itemRenderer.getItemModelWithOverrides(stack, Minecraft.getInstance().world, Minecraft.getInstance().player); float worldTime = AnimationTickHolder.getRenderTick(); - - ms.push(); - ms.translate(0.5F, 0.5F, 0.5F); - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, light, overlay, mainModel.getBakedModel()); - float angle = worldTime * -.5f % 360; - float xOffset = -1/32f; - float zOffset = 0; - ms.translate(-xOffset, 0, -zOffset); + ms.translate(-xOffset, 0, 0); ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(angle)); - ms.translate(xOffset, 0, zOffset); + ms.translate(xOffset, 0, 0); - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, light, overlay, mainModel.getPartial("gear")); - - ms.pop(); + renderer.render(model.getPartial("gear"), light); } - + } diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandItemRenderer.java index bb610ff69..74fc534da 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandItemRenderer.java @@ -1,38 +1,34 @@ package com.simibubi.create.content.curiosities.symmetry.client; import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.block.render.CustomRenderedItemModelRenderer; +import com.simibubi.create.foundation.item.PartialItemModelRenderer; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.Vector3f; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; import net.minecraft.item.ItemStack; import net.minecraft.util.math.MathHelper; -public class SymmetryWandItemRenderer extends ItemStackTileEntityRenderer { +public class SymmetryWandItemRenderer extends CustomRenderedItemModelRenderer { @Override - public void render(ItemStack stack, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - - ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer(); - SymmetryWandModel mainModel = (SymmetryWandModel) itemRenderer.getItemModelWithOverrides(stack, null, null); + protected void render(ItemStack stack, SymmetryWandModel model, PartialItemModelRenderer renderer, MatrixStack ms, + IRenderTypeBuffer buffer, int light, int overlay) { float worldTime = AnimationTickHolder.getRenderTick() / 20; + int maxLight = 0xF000F0; - ms.push(); - ms.translate(0.5F, 0.5F, 0.5F); - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, light, overlay, mainModel.getBakedModel()); - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, 0xF000F0, overlay, mainModel.getPartial("core")); + renderer.render(model.getBakedModel(), light); + renderer.renderSolidGlowing(model.getPartial("core"), maxLight); + renderer.renderGlowing(model.getPartial("core_glow"), maxLight); float floating = MathHelper.sin(worldTime) * .05f; - ms.translate(0, floating, 0); float angle = worldTime * -10 % 360; + + ms.translate(0, floating, 0); ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(angle)); - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, 0xF000F0, overlay, mainModel.getPartial("bits")); - - ms.pop(); + + renderer.renderGlowing(model.getPartial("bits"), maxLight); } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandModel.java b/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandModel.java index 88b34b185..ce5796427 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandModel.java +++ b/src/main/java/com/simibubi/create/content/curiosities/symmetry/client/SymmetryWandModel.java @@ -9,7 +9,7 @@ public class SymmetryWandModel extends CustomRenderedItemModel { public SymmetryWandModel(IBakedModel template) { super(template, "wand_of_symmetry"); - addPartials("bits", "core"); + addPartials("bits", "core", "core_glow"); } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterItemRenderer.java index 9da15bc08..3d3fc9fef 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterItemRenderer.java @@ -1,45 +1,30 @@ package com.simibubi.create.content.curiosities.tools; import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.block.render.CustomRenderedItemModelRenderer; +import com.simibubi.create.foundation.item.PartialItemModelRenderer; import com.simibubi.create.foundation.utility.AnimationTickHolder; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; -import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.Vector3f; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; import net.minecraft.item.ItemStack; -public class DeforesterItemRenderer extends ItemStackTileEntityRenderer { +public class DeforesterItemRenderer extends CustomRenderedItemModelRenderer { @Override - public void render(ItemStack stack, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - - ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer(); - DeforesterModel mainModel = (DeforesterModel) itemRenderer.getItemModelWithOverrides(stack, Minecraft.getInstance().world, Minecraft.getInstance().player); + protected void render(ItemStack stack, DeforesterModel model, PartialItemModelRenderer renderer, + MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { + int maxLight = 0xF000F0; float worldTime = AnimationTickHolder.getRenderTick(); - ms.push(); - ms.translate(0.5F, 0.5F, 0.5F); - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, light, overlay, mainModel.getBakedModel()); - - int brightLight = LightTexture.pack(15, 7); - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, brightLight, overlay, mainModel.getPartial("light")); - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, brightLight, overlay, mainModel.getPartial("blade")); + renderer.renderSolid(model.getBakedModel(), light); + renderer.renderSolidGlowing(model.getPartial("core"), maxLight); + renderer.renderGlowing(model.getPartial("core_glow"), maxLight); float angle = worldTime * -.5f % 360; - float xOffset = 0; - float zOffset = 0; - ms.translate(-xOffset, 0, -zOffset); ms.multiply(Vector3f.POSITIVE_Y.getDegreesQuaternion(angle)); - ms.translate(xOffset, 0, zOffset); - - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, brightLight, overlay, mainModel.getPartial("gear")); - - - ms.pop(); + renderer.renderSolid(model.getPartial("gear"), light); } + } diff --git a/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterModel.java b/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterModel.java index 5bfa9f696..5fad1cfac 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterModel.java +++ b/src/main/java/com/simibubi/create/content/curiosities/tools/DeforesterModel.java @@ -9,7 +9,7 @@ public class DeforesterModel extends CustomRenderedItemModel { public DeforesterModel(IBakedModel template) { super(template, "deforester"); - addPartials("gear", "light", "blade"); + addPartials("gear", "core", "core_glow"); } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItemRenderer.java index c4eefc0a7..056478073 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperItemRenderer.java @@ -1,35 +1,61 @@ package com.simibubi.create.content.curiosities.zapper; import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.block.render.CustomRenderedItemModel; +import com.simibubi.create.foundation.block.render.CustomRenderedItemModelRenderer; +import com.simibubi.create.foundation.item.PartialItemModelRenderer; import net.minecraft.block.BlockState; import net.minecraft.block.FourWayBlock; import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; -import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTUtil; +import net.minecraft.util.math.MathHelper; -public abstract class ZapperItemRenderer extends ItemStackTileEntityRenderer { +public abstract class ZapperItemRenderer extends CustomRenderedItemModelRenderer { - protected void renderBlockUsed(ItemStack stack, ItemRenderer itemRenderer, MatrixStack ms, IRenderTypeBuffer buffer, - int light, int overlay) { - BlockState state = NBTUtil.readBlockState(stack.getTag().getCompound("BlockUsed")); + @Override + protected void render(ItemStack stack, M model, PartialItemModelRenderer renderer, MatrixStack ms, + IRenderTypeBuffer buffer, int light, int overlay) { + // Block indicator + if (model.getCurrentPerspective() == TransformType.GUI && stack.hasTag() && stack.getTag() + .contains("BlockUsed")) + renderBlockUsed(stack, ms, buffer, light, overlay); + } + + private void renderBlockUsed(ItemStack stack, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { + BlockState state = NBTUtil.readBlockState(stack.getTag() + .getCompound("BlockUsed")); ms.push(); ms.translate(-0.3F, -0.45F, -0.0F); ms.scale(0.25F, 0.25F, 0.25F); - IBakedModel modelForState = Minecraft.getInstance().getBlockRendererDispatcher().getModelForState(state); + IBakedModel modelForState = Minecraft.getInstance() + .getBlockRendererDispatcher() + .getModelForState(state); if (state.getBlock() instanceof FourWayBlock) - modelForState = Minecraft.getInstance().getItemRenderer() - .getItemModelWithOverrides(new ItemStack(state.getBlock()), Minecraft.getInstance().world, null); + modelForState = Minecraft.getInstance() + .getItemRenderer() + .getItemModelWithOverrides(new ItemStack(state.getBlock()), Minecraft.getInstance().world, null); - itemRenderer.renderItem(new ItemStack(state.getBlock()), TransformType.NONE, false, ms, buffer, light, overlay, modelForState); + Minecraft.getInstance() + .getItemRenderer() + .renderItem(new ItemStack(state.getBlock()), TransformType.NONE, false, ms, buffer, light, overlay, + modelForState); ms.pop(); } - + + protected float getAnimationProgress(float pt, boolean leftHanded, boolean mainHand) { + float last = mainHand ^ leftHanded ? ZapperRenderHandler.lastRightHandAnimation + : ZapperRenderHandler.lastLeftHandAnimation; + float current = + mainHand ^ leftHanded ? ZapperRenderHandler.rightHandAnimation : ZapperRenderHandler.leftHandAnimation; + float animation = MathHelper.clamp(MathHelper.lerp(pt, last, current) * 5, 0, 1); + return animation; + } + } diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperRenderHandler.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperRenderHandler.java index 36ca2feef..b2991ca56 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperRenderHandler.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/ZapperRenderHandler.java @@ -8,8 +8,6 @@ import java.util.function.Supplier; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.AllSoundEvents; import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.utility.AnimationTickHolder; -import com.simibubi.create.foundation.utility.ColorHelper; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.player.AbstractClientPlayerEntity; @@ -62,12 +60,6 @@ public class ZapperRenderHandler { this.mainHand = mainHand; return this; } - - public Vec3d getStart() { - if (follow) - return getExactBarrelPos(mainHand); - return start; - } } public static Vec3d getExactBarrelPos(boolean mainHand) { @@ -86,26 +78,26 @@ public class ZapperRenderHandler { } public static void tick() { - if (cachedBeams == null) - cachedBeams = new LinkedList<>(); - cachedBeams.removeIf(b -> b.itensity < .1f); - cachedBeams.forEach(b -> b.itensity *= .4f); - lastLeftHandAnimation = leftHandAnimation; lastRightHandAnimation = rightHandAnimation; leftHandAnimation *= 0.8f; rightHandAnimation *= 0.8f; - - if (cachedBeams == null || cachedBeams.isEmpty()) + + if (cachedBeams == null) + cachedBeams = new LinkedList<>(); + + cachedBeams.removeIf(b -> b.itensity < .1f); + if (cachedBeams.isEmpty()) return; - + cachedBeams.forEach(beam -> { - CreateClient.outliner.showLine(beam, beam.getStart(), beam.end) - .disableNormals() - .colored(ColorHelper.mixColors(0xffffff, ColorHelper.rainbowColor(AnimationTickHolder.ticks), - MathHelper.clamp(beam.itensity * 3, 0, 1))) - .lineWidth(beam.itensity * 1 / 4f); + CreateClient.outliner.endChasingLine(beam, beam.start, beam.end, 1 - beam.itensity) + .disableNormals() + .colored(0xffffff) + .lineWidth(beam.itensity * 1 / 8f); }); + + cachedBeams.forEach(b -> b.itensity *= .6f); } public static void shoot(Hand hand) { diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperItemRenderer.java index c1bd030e3..3f05fca7f 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperItemRenderer.java @@ -5,74 +5,63 @@ import static com.simibubi.create.content.curiosities.zapper.blockzapper.Blockza import static com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.Components.Body; import static com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.Components.Retriever; import static com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.Components.Scope; +import static java.lang.Math.max; +import static net.minecraft.util.math.MathHelper.clamp; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.content.curiosities.zapper.ZapperItemRenderer; -import com.simibubi.create.content.curiosities.zapper.ZapperRenderHandler; import com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.ComponentTier; import com.simibubi.create.content.curiosities.zapper.blockzapper.BlockzapperItem.Components; +import com.simibubi.create.foundation.item.PartialItemModelRenderer; import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.player.ClientPlayerEntity; import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.Vector3f; import net.minecraft.client.renderer.model.IBakedModel; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; import net.minecraft.item.ItemStack; import net.minecraft.util.HandSide; import net.minecraft.util.math.MathHelper; -public class BlockzapperItemRenderer extends ZapperItemRenderer { +public class BlockzapperItemRenderer extends ZapperItemRenderer { @Override - public void render(ItemStack stack, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - ItemRenderer itemRenderer = Minecraft.getInstance() - .getItemRenderer(); - BlockzapperModel mainModel = - (BlockzapperModel) itemRenderer.getItemModelWithOverrides(stack, Minecraft.getInstance().world, null); + protected void render(ItemStack stack, BlockzapperModel model, PartialItemModelRenderer renderer, MatrixStack ms, + IRenderTypeBuffer buffer, int light, int overlay) { + super.render(stack, model, renderer, ms, buffer, light, overlay); + float pt = Minecraft.getInstance() - .getRenderPartialTicks(); + .getRenderPartialTicks(); float worldTime = AnimationTickHolder.getRenderTick() / 20; - ms.push(); - ms.translate(0.5F, 0.5F, 0.5F); - - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, light, overlay, - mainModel.getBakedModel()); - renderComponent(stack, mainModel, Body, itemRenderer, ms, buffer, light, overlay); - renderComponent(stack, mainModel, Amplifier, itemRenderer, ms, buffer, light, overlay); - renderComponent(stack, mainModel, Retriever, itemRenderer, ms, buffer, light, overlay); - renderComponent(stack, mainModel, Scope, itemRenderer, ms, buffer, light, overlay); - - // Block indicator - if (mainModel.getCurrentPerspective() == TransformType.GUI && stack.hasTag() && stack.getTag() - .contains("BlockUsed")) - renderBlockUsed(stack, itemRenderer, ms, buffer, light, overlay); + renderer.render(model.getBakedModel(), light); + renderComponent(stack, model, Body, renderer, light); + renderComponent(stack, model, Amplifier, renderer, light); + renderComponent(stack, model, Retriever, renderer, light); + renderComponent(stack, model, Scope, renderer, light); ClientPlayerEntity player = Minecraft.getInstance().player; boolean leftHanded = player.getPrimaryHand() == HandSide.LEFT; boolean mainHand = player.getHeldItemMainhand() == stack; boolean offHand = player.getHeldItemOffhand() == stack; - float last = mainHand ^ leftHanded ? ZapperRenderHandler.lastRightHandAnimation - : ZapperRenderHandler.lastLeftHandAnimation; - float current = - mainHand ^ leftHanded ? ZapperRenderHandler.rightHandAnimation : ZapperRenderHandler.leftHandAnimation; - float animation = MathHelper.clamp(MathHelper.lerp(pt, last, current) * 5, 0, 1); + float animation = getAnimationProgress(pt, leftHanded, mainHand); // Core glows float multiplier = MathHelper.sin(worldTime * 5); - if (mainHand || offHand) { + if (mainHand || offHand) multiplier = animation; + + int lightItensity = (int) (15 * clamp(multiplier, 0, 1)); + int glowLight = LightTexture.pack(lightItensity, max(lightItensity, 4)); + renderer.renderSolidGlowing(model.getPartial("core"), glowLight); + renderer.renderGlowing(model.getPartial("core_glow"), glowLight); + + if (BlockzapperItem.getTier(Amplifier, stack) != ComponentTier.None) { + renderer.renderSolidGlowing(model.getPartial("amplifier_core"), glowLight); + renderer.renderGlowing(model.getPartial("amplifier_core_glow"), glowLight); } - int glowLight = LightTexture.pack(0, (int) (15 * multiplier)); - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, glowLight, overlay, - mainModel.getPartial("core")); - if (BlockzapperItem.getTier(Amplifier, stack) != ComponentTier.None) - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, glowLight, overlay, - mainModel.getPartial("amplifier_core")); // Accelerator spins float angle = worldTime * -25; @@ -84,17 +73,15 @@ public class BlockzapperItemRenderer extends ZapperItemRenderer { ms.translate(0, offset, 0); ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(angle)); ms.translate(0, -offset, 0); - renderComponent(stack, mainModel, Accelerator, itemRenderer, ms, buffer, light, overlay); - - ms.pop(); + renderComponent(stack, model, Accelerator, renderer, light); } public void renderComponent(ItemStack stack, BlockzapperModel model, Components component, - ItemRenderer itemRenderer, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { + PartialItemModelRenderer renderer, int light) { ComponentTier tier = BlockzapperItem.getTier(component, stack); IBakedModel partial = model.getComponentPartial(tier, component); if (partial != null) - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, light, overlay, partial); + renderer.render(partial, light); } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperModel.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperModel.java index a3f26f370..f5688e9f6 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperModel.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperModel.java @@ -13,9 +13,9 @@ public class BlockzapperModel extends CustomRenderedItemModel { public BlockzapperModel(IBakedModel template) { super(template, "handheld_blockzapper"); - addPartials("core", "body", "amplifier_core", "accelerator", "gold_body", "gold_scope", "gold_amplifier", - "gold_retriever", "gold_accelerator", "chorus_body", "chorus_scope", "chorus_amplifier", "chorus_retriever", - "chorus_accelerator"); + addPartials("core", "core_glow", "body", "amplifier_core", "amplifier_core_glow", "accelerator", "gold_body", + "gold_scope", "gold_amplifier", "gold_retriever", "gold_accelerator", "chorus_body", "chorus_scope", + "chorus_amplifier", "chorus_retriever", "chorus_accelerator"); } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperRenderHandler.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperRenderHandler.java index 5adf2e5aa..f897956a3 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperRenderHandler.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/blockzapper/BlockzapperRenderHandler.java @@ -23,8 +23,7 @@ public class BlockzapperRenderHandler { return; CreateClient.outliner.showCluster("blockzapper", renderedShape) - .colored(0x999999) - .disableNormals() + .colored(0xbfbfbf) .lineWidth(1 / 32f) .withFaceTexture(AllSpecialTextures.CHECKERED); } @@ -38,7 +37,7 @@ public class BlockzapperRenderHandler { if (zapperInMain) { CompoundNBT tag = heldMain.getOrCreateTag(); - if (!tag.contains("_Swap")) { + if (!tag.contains("_Swap") || !zapperInOff) { createOutline(player, heldMain); return; } diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java index d12301424..2224a75ed 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperItemRenderer.java @@ -1,61 +1,50 @@ package com.simibubi.create.content.curiosities.zapper.terrainzapper; +import static java.lang.Math.max; +import static net.minecraft.util.math.MathHelper.clamp; + import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.content.curiosities.zapper.ZapperItemRenderer; -import com.simibubi.create.content.curiosities.zapper.ZapperRenderHandler; +import com.simibubi.create.foundation.item.PartialItemModelRenderer; import com.simibubi.create.foundation.utility.AnimationTickHolder; import net.minecraft.client.Minecraft; import net.minecraft.client.entity.player.ClientPlayerEntity; import net.minecraft.client.renderer.IRenderTypeBuffer; -import net.minecraft.client.renderer.ItemRenderer; import net.minecraft.client.renderer.LightTexture; import net.minecraft.client.renderer.Vector3f; -import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; import net.minecraft.item.ItemStack; import net.minecraft.util.HandSide; import net.minecraft.util.math.MathHelper; -public class WorldshaperItemRenderer extends ZapperItemRenderer { +public class WorldshaperItemRenderer extends ZapperItemRenderer { @Override - public void render(ItemStack stack, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { - ItemRenderer itemRenderer = Minecraft.getInstance().getItemRenderer(); - WorldshaperModel mainModel = (WorldshaperModel) itemRenderer.getItemModelWithOverrides(stack, Minecraft.getInstance().world, null); - float pt = Minecraft.getInstance().getRenderPartialTicks(); + protected void render(ItemStack stack, WorldshaperModel model, PartialItemModelRenderer renderer, MatrixStack ms, + IRenderTypeBuffer buffer, int light, int overlay) { + super.render(stack, model, renderer, ms, buffer, light, overlay); + + float pt = Minecraft.getInstance() + .getRenderPartialTicks(); float worldTime = AnimationTickHolder.getRenderTick() / 20; - ms.push(); - ms.translate(0.5F, 0.5F, 0.5F); - int lastBl = LightTexture.getBlockLightCoordinates(light); - int lastSl = LightTexture.getSkyLightCoordinates(light); - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, - LightTexture.pack(Math.min(lastBl + 4, 15), Math.min(lastSl + 7, 15)), overlay, - mainModel.getBakedModel()); - - // Block indicator - if (mainModel.getCurrentPerspective() == TransformType.GUI && stack.hasTag() - && stack.getTag().contains("BlockUsed")) - renderBlockUsed(stack, itemRenderer, ms, buffer, light, overlay); + renderer.renderSolid(model.getBakedModel(), light); ClientPlayerEntity player = Minecraft.getInstance().player; boolean leftHanded = player.getPrimaryHand() == HandSide.LEFT; boolean mainHand = player.getHeldItemMainhand() == stack; boolean offHand = player.getHeldItemOffhand() == stack; - float last = mainHand ^ leftHanded ? ZapperRenderHandler.lastRightHandAnimation - : ZapperRenderHandler.lastLeftHandAnimation; - float current = mainHand ^ leftHanded ? ZapperRenderHandler.rightHandAnimation - : ZapperRenderHandler.leftHandAnimation; - float animation = MathHelper.clamp(MathHelper.lerp(pt, last, current) * 5, 0, 1); + float animation = getAnimationProgress(pt, leftHanded, mainHand); // Core glows float multiplier = MathHelper.sin(worldTime * 5); - if (mainHand || offHand) { + if (mainHand || offHand) multiplier = animation; - } - - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, - LightTexture.pack((int) (15 * multiplier), 7), overlay, mainModel.getPartial("core")); + + int lightItensity = (int) (15 * clamp(multiplier, 0, 1)); + int glowLight = LightTexture.pack(lightItensity, max(lightItensity, 4)); + renderer.renderSolidGlowing(model.getPartial("core"), glowLight); + renderer.renderGlowing(model.getPartial("core_glow"), glowLight); // Accelerator spins float angle = worldTime * -25; @@ -67,10 +56,7 @@ public class WorldshaperItemRenderer extends ZapperItemRenderer { ms.translate(0, offset, 0); ms.multiply(Vector3f.POSITIVE_Z.getDegreesQuaternion(angle)); ms.translate(0, -offset, 0); - itemRenderer.renderItem(stack, TransformType.NONE, false, ms, buffer, light, overlay, - mainModel.getPartial("accelerator")); - - ms.pop(); + renderer.render(model.getPartial("accelerator"), light); } } diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperModel.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperModel.java index 983dc7872..d28e0a2af 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperModel.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperModel.java @@ -9,7 +9,7 @@ public class WorldshaperModel extends CustomRenderedItemModel { public WorldshaperModel(IBakedModel template) { super(template, "handheld_worldshaper"); - addPartials("core", "accelerator"); + addPartials("core", "core_glow", "accelerator"); } @Override diff --git a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java index 2a93ac668..ca8522bb4 100644 --- a/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java +++ b/src/main/java/com/simibubi/create/content/curiosities/zapper/terrainzapper/WorldshaperRenderHandler.java @@ -34,8 +34,7 @@ public class WorldshaperRenderHandler { CreateClient.outliner.showCluster("terrainZapper", renderedShape.stream() .map(pos -> pos.add(renderedPosition)) .collect(Collectors.toList())) - .colored(0x999999) - .disableNormals() + .colored(0xbfbfbf) .lineWidth(1 / 32f) .withFaceTexture(AllSpecialTextures.CHECKERED); } @@ -49,7 +48,7 @@ public class WorldshaperRenderHandler { if (zapperInMain) { CompoundNBT tag = heldMain.getOrCreateTag(); - if (!tag.contains("_Swap")) { + if (!tag.contains("_Swap") || !zapperInOff) { createBrushOutline(tag, player, heldMain); return; } diff --git a/src/main/java/com/simibubi/create/foundation/block/render/CustomRenderedItemModelRenderer.java b/src/main/java/com/simibubi/create/foundation/block/render/CustomRenderedItemModelRenderer.java new file mode 100644 index 000000000..41c4820d7 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/block/render/CustomRenderedItemModelRenderer.java @@ -0,0 +1,32 @@ +package com.simibubi.create.foundation.block.render; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.simibubi.create.foundation.item.PartialItemModelRenderer; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.tileentity.ItemStackTileEntityRenderer; +import net.minecraft.item.ItemStack; + +public class CustomRenderedItemModelRenderer extends ItemStackTileEntityRenderer { + + @Override + @SuppressWarnings("unchecked") + public void render(ItemStack stack, MatrixStack ms, IRenderTypeBuffer buffer, int light, int overlay) { + M mainModel = ((M) Minecraft.getInstance() + .getItemRenderer() + .getItemModelWithOverrides(stack, null, null)); + PartialItemModelRenderer renderer = PartialItemModelRenderer.of(stack, ms, buffer, overlay); + + ms.push(); + ms.translate(0.5F, 0.5F, 0.5F); + render(stack, mainModel, renderer, ms, buffer, light, overlay); + ms.pop(); + } + + protected void render(ItemStack stack, M model, PartialItemModelRenderer renderer, MatrixStack ms, + IRenderTypeBuffer buffer, int light, int overlay) { + + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/data/AllLangPartials.java b/src/main/java/com/simibubi/create/foundation/data/AllLangPartials.java index 4ca19a733..34dcfeb86 100644 --- a/src/main/java/com/simibubi/create/foundation/data/AllLangPartials.java +++ b/src/main/java/com/simibubi/create/foundation/data/AllLangPartials.java @@ -2,7 +2,6 @@ package com.simibubi.create.foundation.data; public enum AllLangPartials { - TEMPORARY("We aren't in Registrate yet"), ADVANCEMENTS("Advancements"), MESSAGES("UI & Messages"), TOOLTIPS("Item Descriptions"), diff --git a/src/main/java/com/simibubi/create/foundation/item/PartialItemModelRenderer.java b/src/main/java/com/simibubi/create/foundation/item/PartialItemModelRenderer.java new file mode 100644 index 000000000..b626cc9f7 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/item/PartialItemModelRenderer.java @@ -0,0 +1,97 @@ +package com.simibubi.create.foundation.item; + +import java.util.Random; + +import com.mojang.blaze3d.matrix.MatrixStack; +import com.mojang.blaze3d.vertex.IVertexBuilder; +import com.simibubi.create.foundation.renderState.RenderTypes; + +import net.minecraft.block.BlockState; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.IRenderTypeBuffer; +import net.minecraft.client.renderer.ItemRenderer; +import net.minecraft.client.renderer.RenderType; +import net.minecraft.client.renderer.model.IBakedModel; +import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; +import net.minecraft.item.ItemStack; +import net.minecraft.util.Direction; +import net.minecraftforge.client.model.data.EmptyModelData; +import net.minecraftforge.client.model.data.IModelData; + +public class PartialItemModelRenderer { + + static PartialItemModelRenderer instance; + + ItemStack stack; + int overlay; + MatrixStack ms; + IRenderTypeBuffer buffer; + + static PartialItemModelRenderer get() { + if (instance == null) + instance = new PartialItemModelRenderer(); + return instance; + } + + public static PartialItemModelRenderer of(ItemStack stack, MatrixStack ms, IRenderTypeBuffer buffer, int overlay) { + PartialItemModelRenderer instance = get(); + instance.stack = stack; + instance.buffer = buffer; + instance.ms = ms; + instance.overlay = overlay; + return instance; + } + + public void render(IBakedModel model, int light) { + render(model, RenderTypes.getItemPartialTranslucent(), light); + } + + public void renderSolid(IBakedModel model, int light) { + render(model, RenderTypes.getItemPartialSolid(), light); + } + + public void renderSolidGlowing(IBakedModel model, int light) { + render(model, RenderTypes.getGlowingSolid(), light); + } + + public void renderGlowing(IBakedModel model, int light) { + render(model, RenderTypes.getGlowingTranslucent(), light); + } + + public void render(IBakedModel model, RenderType type, int light) { + if (stack.isEmpty()) + return; + + ms.push(); + model = net.minecraftforge.client.ForgeHooksClient.handleCameraTransforms(ms, model, TransformType.NONE, false); + ms.translate(-0.5D, -0.5D, -0.5D); + + if (!model.isBuiltInRenderer()) + renderBakedItemModel(model, light, ms, + ItemRenderer.getArmorVertexConsumer(buffer, type, true, stack.hasEffect())); + else + stack.getItem() + .getItemStackTileEntityRenderer() + .render(stack, ms, buffer, light, overlay); + + ms.pop(); + } + + private void renderBakedItemModel(IBakedModel model, int light, MatrixStack ms, IVertexBuilder p_229114_6_) { + ItemRenderer ir = Minecraft.getInstance() + .getItemRenderer(); + Random random = new Random(); + IModelData data = EmptyModelData.INSTANCE; + + for (Direction direction : Direction.values()) { + random.setSeed(42L); + ir.renderBakedItemQuads(ms, p_229114_6_, model.getQuads((BlockState) null, direction, random, data), stack, + light, overlay); + } + + random.setSeed(42L); + ir.renderBakedItemQuads(ms, p_229114_6_, model.getQuads((BlockState) null, (Direction) null, random, data), + stack, light, overlay); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/renderState/RenderTypes.java b/src/main/java/com/simibubi/create/foundation/renderState/RenderTypes.java index 067274d50..078af3975 100644 --- a/src/main/java/com/simibubi/create/foundation/renderState/RenderTypes.java +++ b/src/main/java/com/simibubi/create/foundation/renderState/RenderTypes.java @@ -6,13 +6,12 @@ import com.simibubi.create.AllSpecialTextures; import net.minecraft.client.renderer.RenderState; import net.minecraft.client.renderer.RenderType; import net.minecraft.client.renderer.vertex.DefaultVertexFormats; +import net.minecraft.inventory.container.PlayerContainer; import net.minecraft.util.ResourceLocation; public class RenderTypes extends RenderState { - public static RenderType getOutlineSolid() { - return OUTLINE_SOLID; - } + protected static final RenderState.CullState DISABLE_CULLING = new NoCullState(); public static RenderType getOutlineTranslucent(ResourceLocation texture, boolean cull) { RenderType.State rendertype$state = RenderType.State.builder() @@ -38,7 +37,76 @@ public class RenderTypes extends RenderState { .overlay(ENABLE_OVERLAY_COLOR) .build(true)); - protected static final RenderState.CullState DISABLE_CULLING = new NoCullState(); + public static RenderType getGlowingSolid(ResourceLocation texture) { + RenderType.State rendertype$state = RenderType.State.builder() + .texture(new RenderState.TextureState(texture, false, false)) + .transparency(NO_TRANSPARENCY) + .diffuseLighting(DISABLE_DIFFUSE_LIGHTING) + .lightmap(ENABLE_LIGHTMAP) + .overlay(ENABLE_OVERLAY_COLOR) + .build(true); + return RenderType.of("glowing_solid", DefaultVertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, 7, 256, + true, false, rendertype$state); + } + + public static RenderType getGlowingTranslucent(ResourceLocation texture) { + RenderType.State rendertype$state = RenderType.State.builder() + .texture(new RenderState.TextureState(texture, false, false)) + .transparency(TRANSLUCENT_TRANSPARENCY) + .diffuseLighting(DISABLE_DIFFUSE_LIGHTING) + .alpha(ONE_TENTH_ALPHA) + .cull(DISABLE_CULLING) + .lightmap(ENABLE_LIGHTMAP) + .overlay(ENABLE_OVERLAY_COLOR) + .build(true); + return RenderType.of("glowing_translucent", DefaultVertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, 7, + 256, true, true, rendertype$state); + } + + private static final RenderType GLOWING_SOLID = RenderTypes.getGlowingSolid(PlayerContainer.BLOCK_ATLAS_TEXTURE); + private static final RenderType GLOWING_TRANSLUCENT = + RenderTypes.getGlowingTranslucent(PlayerContainer.BLOCK_ATLAS_TEXTURE); + + private static final RenderType ITEM_PARTIAL_SOLID = + RenderType.of("item_solid", DefaultVertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, 7, 256, true, + false, RenderType.State.builder() + .texture(new RenderState.TextureState(PlayerContainer.BLOCK_ATLAS_TEXTURE, false, false)) + .transparency(NO_TRANSPARENCY) + .diffuseLighting(ENABLE_DIFFUSE_LIGHTING) + .lightmap(ENABLE_LIGHTMAP) + .overlay(ENABLE_OVERLAY_COLOR) + .build(true)); + + private static final RenderType ITEM_PARTIAL_TRANSLUCENT = RenderType.of("entity_translucent", + DefaultVertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, 7, 256, true, true, RenderType.State.builder() + .texture(new RenderState.TextureState(PlayerContainer.BLOCK_ATLAS_TEXTURE, false, false)) + .transparency(TRANSLUCENT_TRANSPARENCY) + .diffuseLighting(ENABLE_DIFFUSE_LIGHTING) + .alpha(ONE_TENTH_ALPHA) + .cull(DISABLE_CULLING) + .lightmap(ENABLE_LIGHTMAP) + .overlay(ENABLE_OVERLAY_COLOR) + .build(true)); + + public static RenderType getItemPartialSolid() { + return ITEM_PARTIAL_SOLID; + } + + public static RenderType getItemPartialTranslucent() { + return ITEM_PARTIAL_TRANSLUCENT; + } + + public static RenderType getOutlineSolid() { + return OUTLINE_SOLID; + } + + public static RenderType getGlowingSolid() { + return GLOWING_SOLID; + } + + public static RenderType getGlowingTranslucent() { + return GLOWING_TRANSLUCENT; + } protected static class NoCullState extends RenderState.CullState { public NoCullState() { diff --git a/src/main/java/com/simibubi/create/foundation/renderState/SuperRenderTypeBuffer.java b/src/main/java/com/simibubi/create/foundation/renderState/SuperRenderTypeBuffer.java index 35739dd4d..6c2eb5e87 100644 --- a/src/main/java/com/simibubi/create/foundation/renderState/SuperRenderTypeBuffer.java +++ b/src/main/java/com/simibubi/create/foundation/renderState/SuperRenderTypeBuffer.java @@ -68,6 +68,7 @@ public class SuperRenderTypeBuffer implements IRenderTypeBuffer { static final SortedMap createEntityBuilders() { return Util.make(new Object2ObjectLinkedOpenHashMap<>(), (map) -> { map.put(Atlases.getEntitySolid(), blockBuilders.get(RenderType.getSolid())); + assign(map, RenderTypes.getOutlineSolid()); map.put(Atlases.getEntityCutout(), blockBuilders.get(RenderType.getCutout())); map.put(Atlases.getBannerPatterns(), blockBuilders.get(RenderType.getCutoutMipped())); map.put(Atlases.getEntityTranslucent(), blockBuilders.get(RenderType.getTranslucent())); diff --git a/src/main/java/com/simibubi/create/foundation/utility/outliner/LineOutline.java b/src/main/java/com/simibubi/create/foundation/utility/outliner/LineOutline.java index 44293ca23..0c97d254f 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/outliner/LineOutline.java +++ b/src/main/java/com/simibubi/create/foundation/utility/outliner/LineOutline.java @@ -3,12 +3,14 @@ package com.simibubi.create.foundation.utility.outliner; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; +import net.minecraft.client.Minecraft; +import net.minecraft.util.math.MathHelper; import net.minecraft.util.math.Vec3d; public class LineOutline extends Outline { - private Vec3d start = Vec3d.ZERO; - private Vec3d end = Vec3d.ZERO; + protected Vec3d start = Vec3d.ZERO; + protected Vec3d end = Vec3d.ZERO; public LineOutline set(Vec3d start, Vec3d end) { this.start = start; @@ -21,4 +23,38 @@ public class LineOutline extends Outline { renderAACuboidLine(ms, buffer, start, end); } + public static class EndChasingLineOutline extends LineOutline { + + float prevProgress = 0; + float progress = 0; + + @Override + public void tick() { + } + + public EndChasingLineOutline setProgress(float progress) { + prevProgress = this.progress; + this.progress = progress; + return this; + } + + @Override + public LineOutline set(Vec3d start, Vec3d end) { + if (!end.equals(this.end)) + super.set(start, end); + return this; + } + + @Override + public void render(MatrixStack ms, SuperRenderTypeBuffer buffer) { + float pt = Minecraft.getInstance() + .getRenderPartialTicks(); + float distanceToTarget = 1 - MathHelper.lerp(pt, prevProgress, progress); + Vec3d start = end.add(this.start.subtract(end) + .scale(distanceToTarget)); + renderAACuboidLine(ms, buffer, start, end); + } + + } + } diff --git a/src/main/java/com/simibubi/create/foundation/utility/outliner/Outliner.java b/src/main/java/com/simibubi/create/foundation/utility/outliner/Outliner.java index c9d2a3e4e..67ee4f80b 100644 --- a/src/main/java/com/simibubi/create/foundation/utility/outliner/Outliner.java +++ b/src/main/java/com/simibubi/create/foundation/utility/outliner/Outliner.java @@ -9,6 +9,7 @@ import java.util.Set; import com.mojang.blaze3d.matrix.MatrixStack; import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer; import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox; +import com.simibubi.create.foundation.utility.outliner.LineOutline.EndChasingLineOutline; import com.simibubi.create.foundation.utility.outliner.Outline.OutlineParams; import net.minecraft.client.Minecraft; @@ -27,7 +28,7 @@ public class Outliner { outlines.put(slot, new OutlineEntry(box)); return box.getParams(); } - + public OutlineParams showLine(Object slot, Vec3d start, Vec3d end) { if (!outlines.containsKey(slot)) { LineOutline outline = new LineOutline(); @@ -38,7 +39,19 @@ public class Outliner { ((LineOutline) entry.outline).set(start, end); return entry.outline.getParams(); } - + + public OutlineParams endChasingLine(Object slot, Vec3d start, Vec3d end, float chasingProgress) { + if (!outlines.containsKey(slot)) { + EndChasingLineOutline outline = new EndChasingLineOutline(); + outlines.put(slot, new OutlineEntry(outline)); + } + OutlineEntry entry = outlines.get(slot); + entry.ticksTillRemoval = 1; + ((EndChasingLineOutline) entry.outline).setProgress(chasingProgress) + .set(start, end); + return entry.outline.getParams(); + } + public OutlineParams showAABB(Object slot, AxisAlignedBB bb) { createAABBOutlineIfMissing(slot, bb); ChasingAABBOutline outline = getAndRefreshAABB(slot); diff --git a/src/main/resources/assets/create/lang/default/temporary.json b/src/main/resources/assets/create/lang/default/temporary.json deleted file mode 100644 index b6b058be3..000000000 --- a/src/main/resources/assets/create/lang/default/temporary.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "entity.create.contraption": "Moving Contraption", - "entity.create.stationary_contraption": "Stationary Contraption", - "entity.create.super_glue": "Superglue" -} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/deforester/light.json b/src/main/resources/assets/create/models/item/deforester/core.json similarity index 56% rename from src/main/resources/assets/create/models/item/deforester/light.json rename to src/main/resources/assets/create/models/item/deforester/core.json index 5ead22114..f2f5252b8 100644 --- a/src/main/resources/assets/create/models/item/deforester/light.json +++ b/src/main/resources/assets/create/models/item/deforester/core.json @@ -2,8 +2,7 @@ "credit": "Made with Blockbench", "parent": "create:item/deforester/item", "textures": { - "3": "block/white_concrete_powder", - "4": "block/white_stained_glass" + "3": "block/white_concrete_powder" }, "elements": [ { @@ -21,15 +20,17 @@ } }, { - "name": "light_outer", - "from": [5.75, 12, 7.5], - "to": [9.5, 14, 8.5], - "rotation": {"angle": 0, "axis": "y", "origin": [10, 16.5, 7.5]}, + "name": "blade_inner", + "from": [10.5, 9.7, 7.75], + "to": [11.5, 15.7, 8.25], + "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.75, 8]}, "faces": { - "north": {"uv": [7, 0, 10.75, 2], "texture": "#4"}, - "east": {"uv": [7, 0, 8, 2], "texture": "#4"}, - "south": {"uv": [7, 0, 10.75, 2], "texture": "#4"}, - "west": {"uv": [7, 0, 8, 2], "texture": "#4"} + "north": {"uv": [0, 0, 1, 6], "texture": "#3"}, + "east": {"uv": [0, 0, 1, 6], "texture": "#3"}, + "south": {"uv": [0, 0, 1, 6], "texture": "#3"}, + "west": {"uv": [0, 0, 1, 6], "texture": "#3"}, + "up": {"uv": [0, 0, 1, 1], "texture": "#3"}, + "down": {"uv": [0, 0, 1, 1], "texture": "#3"} } } ] diff --git a/src/main/resources/assets/create/models/item/deforester/blade.json b/src/main/resources/assets/create/models/item/deforester/core_glow.json similarity index 57% rename from src/main/resources/assets/create/models/item/deforester/blade.json rename to src/main/resources/assets/create/models/item/deforester/core_glow.json index cc065b487..a1c33ae4a 100644 --- a/src/main/resources/assets/create/models/item/deforester/blade.json +++ b/src/main/resources/assets/create/models/item/deforester/core_glow.json @@ -2,26 +2,22 @@ "credit": "Made with Blockbench", "parent": "create:item/deforester/item", "textures": { - "3": "block/white_concrete_powder", "4": "block/white_stained_glass" }, "elements": [ { - "name": "blade2", - "from": [10.5, 9.7, 7.75], - "to": [11.5, 15.7, 8.25], - "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.75, 8]}, + "name": "light_outer", + "from": [5.75, 12, 7.5], + "to": [9.5, 14, 8.5], + "rotation": {"angle": 0, "axis": "y", "origin": [10, 16.5, 7.5]}, "faces": { - "north": {"uv": [0, 0, 1, 6], "texture": "#3"}, - "east": {"uv": [0, 0, 1, 6], "texture": "#3"}, - "south": {"uv": [0, 0, 1, 6], "texture": "#3"}, - "west": {"uv": [0, 0, 1, 6], "texture": "#3"}, - "up": {"uv": [0, 0, 1, 1], "texture": "#3"}, - "down": {"uv": [0, 0, 1, 1], "texture": "#3"} + "north": {"uv": [7, 0, 10.75, 2], "texture": "#4"}, + "south": {"uv": [7, 0, 10.75, 2], "texture": "#4"}, + "west": {"uv": [7, 0, 8, 2], "texture": "#4"} } }, { - "name": "blade3", + "name": "blade_outer", "from": [10.25, 9.45, 7.5], "to": [11.75, 15.95, 8.5], "rotation": {"angle": 0, "axis": "y", "origin": [8, 6.75, 8]}, diff --git a/src/main/resources/assets/create/models/item/handheld_blockzapper/amplifier_core.json b/src/main/resources/assets/create/models/item/handheld_blockzapper/amplifier_core.json index c62efc205..aae80f3aa 100644 --- a/src/main/resources/assets/create/models/item/handheld_blockzapper/amplifier_core.json +++ b/src/main/resources/assets/create/models/item/handheld_blockzapper/amplifier_core.json @@ -1,9 +1,7 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", "parent": "create:item/handheld_blockzapper/item", "textures": { - "2": "block/white_concrete_powder", - "3": "block/white_stained_glass" + "2": "block/white_concrete_powder" }, "elements": [ { @@ -15,19 +13,6 @@ "east": { "texture": "#2", "uv": [ 3, 5, 7, 6 ] }, "west": { "texture": "#2", "uv": [ 3, 7, 7, 8 ] } } - }, - { - "name": "Amplifier Core Glow", - "from": [ 7.1, 2.6, 3.5 ], - "to": [ 8.9, 4.4, 7.4 ], - "faces": { - "north": { "texture": "#3", "uv": [ 6, 7, 7.8, 8.8 ] }, - "east": { "texture": "#3", "uv": [ 3, 7, 6.9, 8.8 ] }, - "south": { "texture": "#3", "uv": [ 5, 7, 6.8, 8.8 ] }, - "west": { "texture": "#3", "uv": [ 4, 7, 7.9, 8.8 ] }, - "up": { "texture": "#3", "uv": [ 7, 3, 8.8, 6.9 ] }, - "down": { "texture": "#3", "uv": [ 7, 4, 8.8, 7.9 ] } - } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/handheld_blockzapper/amplifier_core_glow.json b/src/main/resources/assets/create/models/item/handheld_blockzapper/amplifier_core_glow.json new file mode 100644 index 000000000..4aa3f92b7 --- /dev/null +++ b/src/main/resources/assets/create/models/item/handheld_blockzapper/amplifier_core_glow.json @@ -0,0 +1,21 @@ +{ + "parent": "create:item/handheld_blockzapper/item", + "textures": { + "3": "block/white_stained_glass" + }, + "elements": [ + { + "name": "Amplifier Core Glow", + "from": [ 7.1, 2.6, 3.5 ], + "to": [ 8.9, 4.4, 7.4 ], + "faces": { + "north": { "texture": "#3", "uv": [ 6, 7, 7.8, 8.8 ] }, + "east": { "texture": "#3", "uv": [ 3, 7, 6.9, 8.8 ] }, + "south": { "texture": "#3", "uv": [ 5, 7, 6.8, 8.8 ] }, + "west": { "texture": "#3", "uv": [ 4, 7, 7.9, 8.8 ] }, + "up": { "texture": "#3", "uv": [ 7, 3, 8.8, 6.9 ] }, + "down": { "texture": "#3", "uv": [ 7, 4, 8.8, 7.9 ] } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/handheld_blockzapper/core.json b/src/main/resources/assets/create/models/item/handheld_blockzapper/core.json index efa825196..c81d2b2e5 100644 --- a/src/main/resources/assets/create/models/item/handheld_blockzapper/core.json +++ b/src/main/resources/assets/create/models/item/handheld_blockzapper/core.json @@ -1,9 +1,7 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", "parent": "create:item/handheld_blockzapper/item", "textures": { - "2": "block/white_concrete_powder", - "3": "block/white_stained_glass" + "2": "block/white_concrete_powder" }, "elements": [ { @@ -15,19 +13,6 @@ "east": { "texture": "#2", "uv": [ 3, 5, 12, 6 ] }, "west": { "texture": "#2", "uv": [ 3, 7, 12, 8 ] } } - }, - { - "name": "Core Glow", - "from": [ 7.1, 4.6, 2.5 ], - "to": [ 8.9, 6.4, 11.4 ], - "faces": { - "north": { "texture": "#3", "uv": [ 6, 7, 7.8, 8.8 ] }, - "east": { "texture": "#3", "uv": [ 3, 7, 11.9, 8.8 ] }, - "south": { "texture": "#3", "uv": [ 5, 7, 6.8, 8.8 ] }, - "west": { "texture": "#3", "uv": [ 4, 7, 12.9, 8.8 ] }, - "up": { "texture": "#3", "uv": [ 7, 3, 8.8, 11.9 ] }, - "down": { "texture": "#3", "uv": [ 7, 4, 8.8, 12.9 ] } - } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/handheld_blockzapper/core_glow.json b/src/main/resources/assets/create/models/item/handheld_blockzapper/core_glow.json new file mode 100644 index 000000000..5d6af3fac --- /dev/null +++ b/src/main/resources/assets/create/models/item/handheld_blockzapper/core_glow.json @@ -0,0 +1,21 @@ +{ + "parent": "create:item/handheld_blockzapper/item", + "textures": { + "3": "block/white_stained_glass" + }, + "elements": [ + { + "name": "Core Glow", + "from": [ 7.1, 4.6, 2.5 ], + "to": [ 8.9, 6.4, 11.4 ], + "faces": { + "north": { "texture": "#3", "uv": [ 6, 7, 7.8, 8.8 ] }, + "east": { "texture": "#3", "uv": [ 3, 7, 11.9, 8.8 ] }, + "south": { "texture": "#3", "uv": [ 5, 7, 6.8, 8.8 ] }, + "west": { "texture": "#3", "uv": [ 4, 7, 12.9, 8.8 ] }, + "up": { "texture": "#3", "uv": [ 7, 3, 8.8, 11.9 ] }, + "down": { "texture": "#3", "uv": [ 7, 4, 8.8, 12.9 ] } + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/handheld_worldshaper/accelerator.json b/src/main/resources/assets/create/models/item/handheld_worldshaper/accelerator.json index 8038eb2fb..218be27a7 100644 --- a/src/main/resources/assets/create/models/item/handheld_worldshaper/accelerator.json +++ b/src/main/resources/assets/create/models/item/handheld_worldshaper/accelerator.json @@ -60,45 +60,5 @@ "down": {"uv": [5, 6, 10, 9], "texture": "#cog"} } } - ], - "display": { - "thirdperson_righthand": { - "rotation": [1, 0, 0], - "translation": [0, 4, -2.5], - "scale": [0.8, 0.8, 0.8] - }, - "thirdperson_lefthand": { - "rotation": [1, 0, 0], - "translation": [0, 4, -2.5], - "scale": [0.8, 0.8, 0.8] - }, - "firstperson_righthand": { - "rotation": [10, 0, 10], - "translation": [1, 4, 1] - }, - "firstperson_lefthand": { - "rotation": [10, 0, 10], - "translation": [1, 4, 1] - }, - "ground": { - "rotation": [0, 0, 90], - "translation": [-2.25, -1, -0.75], - "scale": [0.75, 0.75, 0.75] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [-0.5, 3.5, 0] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [-1.25, 4.25, -1] - } - }, - "groups": [ - { - "name": "accelerator", - "origin": [8, 8, 8], - "children": [0, 1, 2, 3] - } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/handheld_worldshaper/core.json b/src/main/resources/assets/create/models/item/handheld_worldshaper/core.json index 607686e1f..bb6b259fc 100644 --- a/src/main/resources/assets/create/models/item/handheld_worldshaper/core.json +++ b/src/main/resources/assets/create/models/item/handheld_worldshaper/core.json @@ -2,9 +2,7 @@ "credit": "Made with Blockbench", "parent": "create:item/handheld_blockzapper/item", "textures": { - "2": "block/white_concrete_powder", - "3": "block/white_stained_glass", - "particle": "block/obsidian" + "2": "block/white_concrete_powder" }, "elements": [ { @@ -18,20 +16,6 @@ "west": {"uv": [3, 7, 13, 8], "texture": "#2"} } }, - { - "name": "Core Glow", - "from": [6.6, 4.6, 0.5], - "to": [9.4, 6.4, 10.4], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8, 8]}, - "faces": { - "north": {"uv": [6, 7, 8.8, 8.8], "texture": "#3"}, - "east": {"uv": [3, 7, 12.9, 8.8], "texture": "#3"}, - "south": {"uv": [5, 7, 7.8, 8.8], "texture": "#3"}, - "west": {"uv": [4, 7, 13.9, 8.8], "texture": "#3"}, - "up": {"uv": [7, 3, 9.8, 12.9], "texture": "#3"}, - "down": {"uv": [7, 4, 9.8, 13.9], "texture": "#3"} - } - }, { "name": "Amplifier Core", "from": [6.8, 3, 2.7], @@ -45,70 +29,6 @@ "up": {"uv": [0, 0, 2.4, 5], "texture": "#2"}, "down": {"uv": [0, 0, 2.4, 5], "texture": "#2"} } - }, - { - "name": "Amplifier Core Glow", - "from": [6.6, 2.6, 2.5], - "to": [9.4, 4.4, 7.4], - "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8, 8]}, - "faces": { - "north": {"uv": [6, 7, 8.8, 8.8], "texture": "#3"}, - "east": {"uv": [3, 7, 7.9, 8.8], "texture": "#3"}, - "south": {"uv": [5, 7, 7.8, 8.8], "texture": "#3"}, - "west": {"uv": [4, 7, 8.9, 8.8], "texture": "#3"}, - "up": {"uv": [7, 3, 9.8, 7.9], "texture": "#3"}, - "down": {"uv": [7, 4, 9.8, 8.9], "texture": "#3"} - } - } - ], - "display": { - "thirdperson_righthand": { - "rotation": [1, 0, 0], - "translation": [0, 4, -2.5], - "scale": [0.8, 0.8, 0.8] - }, - "thirdperson_lefthand": { - "rotation": [1, 0, 0], - "translation": [0, 4, -2.5], - "scale": [0.8, 0.8, 0.8] - }, - "firstperson_righthand": { - "rotation": [10, 0, 10], - "translation": [1, 4, 1] - }, - "firstperson_lefthand": { - "rotation": [10, 0, 10], - "translation": [1, 4, 1] - }, - "ground": { - "rotation": [0, 0, 90], - "translation": [-2.25, -1, -0.75], - "scale": [0.75, 0.75, 0.75] - }, - "gui": { - "rotation": [30, 45, 0], - "translation": [-0.5, 3.5, 0] - }, - "fixed": { - "rotation": [0, 90, 0], - "translation": [-1.25, 4.25, -1] - } - }, - "groups": [ - { - "name": "core", - "origin": [8, 8, 8], - "children": [0, 1] - }, - { - "name": "core", - "origin": [8, 8, 8], - "children": [] - }, - { - "name": "amplifier_core", - "origin": [8, 8, 8], - "children": [2, 3] } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/handheld_worldshaper/core_glow.json b/src/main/resources/assets/create/models/item/handheld_worldshaper/core_glow.json new file mode 100644 index 000000000..079cff84f --- /dev/null +++ b/src/main/resources/assets/create/models/item/handheld_worldshaper/core_glow.json @@ -0,0 +1,37 @@ +{ + "credit": "Made with Blockbench", + "parent": "create:item/handheld_blockzapper/item", + "textures": { + "3": "block/white_stained_glass" + }, + "elements": [ + { + "name": "Core Glow", + "from": [6.6, 4.6, 0.5], + "to": [9.4, 6.4, 10.4], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8, 8]}, + "faces": { + "north": {"uv": [6, 7, 8.8, 8.8], "texture": "#3"}, + "east": {"uv": [3, 7, 12.9, 8.8], "texture": "#3"}, + "south": {"uv": [5, 7, 7.8, 8.8], "texture": "#3"}, + "west": {"uv": [4, 7, 13.9, 8.8], "texture": "#3"}, + "up": {"uv": [7, 3, 9.8, 12.9], "texture": "#3"}, + "down": {"uv": [7, 4, 9.8, 13.9], "texture": "#3"} + } + }, + { + "name": "Amplifier Core Glow", + "from": [6.6, 2.6, 2.5], + "to": [9.4, 4.4, 7.4], + "rotation": {"angle": 0, "axis": "y", "origin": [8.5, 8, 8]}, + "faces": { + "north": {"uv": [6, 7, 8.8, 8.8], "texture": "#3"}, + "east": {"uv": [3, 7, 7.9, 8.8], "texture": "#3"}, + "south": {"uv": [5, 7, 7.8, 8.8], "texture": "#3"}, + "west": {"uv": [4, 7, 8.9, 8.8], "texture": "#3"}, + "up": {"uv": [7, 3, 9.8, 7.9], "texture": "#3"}, + "down": {"uv": [7, 4, 9.8, 8.9], "texture": "#3"} + } + } + ] +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/wand_of_symmetry/core.json b/src/main/resources/assets/create/models/item/wand_of_symmetry/core.json index 99840bb2c..840559d9f 100644 --- a/src/main/resources/assets/create/models/item/wand_of_symmetry/core.json +++ b/src/main/resources/assets/create/models/item/wand_of_symmetry/core.json @@ -1,13 +1,7 @@ { - "__comment": "Model generated using MrCrayfish's Model Creator (http://mrcrayfish.com/modelcreator/)", "ambientocclusion": false, "parent": "create:item/wand_of_symmetry/item", "textures": { - "0": "block/obsidian", - "1": "block/light_blue_concrete_powder", - "2": "block/dark_oak_log", - "3": "block/white_stained_glass", - "4": "block/light_blue_stained_glass", "5": "block/white_concrete_powder" }, "elements": [ @@ -23,19 +17,6 @@ "up": { "texture": "#5", "uv": [ 14.0, 0.0, 16.0, 2.0 ] }, "down": { "texture": "#5", "uv": [ 14.0, 6.0, 16.0, 8.0 ] } } - }, - { - "name": "Cube", - "from": [ 6.5, 17.5, 6.5 ], - "to": [ 9.5, 26.5, 9.5 ], - "faces": { - "north": { "texture": "#3", "uv": [ 10.0, 5.0, 13.0, 13.0 ] }, - "east": { "texture": "#3", "uv": [ 5.0, 3.0, 8.0, 12.0 ] }, - "south": { "texture": "#3", "uv": [ 7.0, 6.0, 10.0, 14.0 ] }, - "west": { "texture": "#3", "uv": [ 7.0, 4.0, 4.0, 12.0 ] }, - "up": { "texture": "#3", "uv": [ 7.0, 5.0, 10.0, 8.0 ] }, - "down": { "texture": "#3", "uv": [ 9.0, 3.0, 12.0, 6.0 ] } - } } ] } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/wand_of_symmetry/core_glow.json b/src/main/resources/assets/create/models/item/wand_of_symmetry/core_glow.json new file mode 100644 index 000000000..c251682f2 --- /dev/null +++ b/src/main/resources/assets/create/models/item/wand_of_symmetry/core_glow.json @@ -0,0 +1,22 @@ +{ + "ambientocclusion": false, + "parent": "create:item/wand_of_symmetry/item", + "textures": { + "3": "block/white_stained_glass" + }, + "elements": [ + { + "name": "Cube", + "from": [ 6.5, 17.5, 6.5 ], + "to": [ 9.5, 26.5, 9.5 ], + "faces": { + "north": { "texture": "#3", "uv": [ 10.0, 5.0, 13.0, 13.0 ] }, + "east": { "texture": "#3", "uv": [ 5.0, 3.0, 8.0, 12.0 ] }, + "south": { "texture": "#3", "uv": [ 7.0, 6.0, 10.0, 14.0 ] }, + "west": { "texture": "#3", "uv": [ 7.0, 4.0, 4.0, 12.0 ] }, + "up": { "texture": "#3", "uv": [ 7.0, 5.0, 10.0, 8.0 ] }, + "down": { "texture": "#3", "uv": [ 9.0, 3.0, 12.0, 6.0 ] } + } + } + ] +} \ No newline at end of file