mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-15 17:33:42 +01:00
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
This commit is contained in:
parent
77835c3a65
commit
82a2d128f1
38 changed files with 542 additions and 462 deletions
|
@ -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
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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",
|
||||
|
|
|
@ -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"
|
||||
]
|
||||
]
|
||||
}
|
|
@ -1,15 +0,0 @@
|
|||
{
|
||||
"type": "minecraft:crafting_shaped",
|
||||
"pattern": [
|
||||
"XX",
|
||||
"XX"
|
||||
],
|
||||
"key": {
|
||||
"X": {
|
||||
"tag": "forge:plates/copper"
|
||||
}
|
||||
},
|
||||
"result": {
|
||||
"item": "create:copper_shingles"
|
||||
}
|
||||
}
|
|
@ -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<WrenchModel> {
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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<SymmetryWandModel> {
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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<DeforesterModel> {
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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<M extends CustomRenderedItemModel> extends CustomRenderedItemModelRenderer<M> {
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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) {
|
||||
|
|
|
@ -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<BlockzapperModel> {
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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<WorldshaperModel> {
|
||||
|
||||
@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);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
}
|
||||
|
|
|
@ -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<M extends CustomRenderedItemModel> 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) {
|
||||
|
||||
}
|
||||
|
||||
}
|
|
@ -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"),
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
|
@ -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() {
|
||||
|
|
|
@ -68,6 +68,7 @@ public class SuperRenderTypeBuffer implements IRenderTypeBuffer {
|
|||
static final SortedMap<RenderType, BufferBuilder> 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()));
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
{
|
||||
"entity.create.contraption": "Moving Contraption",
|
||||
"entity.create.stationary_contraption": "Stationary Contraption",
|
||||
"entity.create.super_glue": "Superglue"
|
||||
}
|
|
@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
|
@ -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]},
|
|
@ -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 ] }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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 ] }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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 ] }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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 ] }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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]
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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"}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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 ] }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
|
@ -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 ] }
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
Loading…
Reference in a new issue