diff --git a/src/main/java/com/simibubi/create/AllBlocks.java b/src/main/java/com/simibubi/create/AllBlocks.java index 6acf27fc6..b8bb0d06c 100644 --- a/src/main/java/com/simibubi/create/AllBlocks.java +++ b/src/main/java/com/simibubi/create/AllBlocks.java @@ -8,6 +8,7 @@ import com.simibubi.create.foundation.block.RenderUtilityAxisBlock; import com.simibubi.create.foundation.block.RenderUtilityBlock; import com.simibubi.create.foundation.block.RenderUtilityDirectionalBlock; import com.simibubi.create.foundation.utility.Lang; +import com.simibubi.create.foundation.world.CopperOreBlock; import com.simibubi.create.modules.IModule; import com.simibubi.create.modules.contraptions.components.actors.DrillBlock; import com.simibubi.create.modules.contraptions.components.actors.DrillBlock.DrillHeadBlock; @@ -95,6 +96,10 @@ import net.minecraftforge.registries.IForgeRegistry; public enum AllBlocks { + __MATERIALS__(), + COPPER_ORE(new CopperOreBlock()), + ZINC_ORE(new Block(Properties.from(Blocks.GOLD_ORE))), + __SCHEMATICS__(), SCHEMATICANNON(new SchematicannonBlock()), SCHEMATICANNON_CONNECTOR(new RenderUtilityBlock()), diff --git a/src/main/java/com/simibubi/create/AllItems.java b/src/main/java/com/simibubi/create/AllItems.java index d4d1c93ab..fa7f61a4e 100644 --- a/src/main/java/com/simibubi/create/AllItems.java +++ b/src/main/java/com/simibubi/create/AllItems.java @@ -66,6 +66,9 @@ public enum AllItems { CRUSHED_COPPER(ingredient()), CRUSHED_ZINC(ingredient()), CRUSHED_BRASS(ingredient()), + + ELECTRON_TUBE(ingredient()), + CIRCUIT(ingredient()), // BLAZING_PICKAXE(new BlazingToolItem(1, -2.8F, standardProperties(), PICKAXE)), // BLAZING_SHOVEL(new BlazingToolItem(1.5F, -3.0F, standardProperties(), SHOVEL)), @@ -104,7 +107,7 @@ public enum AllItems { CARDBOARD_BOX_1416(new CardboardBoxItem(standardItemProperties())), CARDBOARD_BOX_1410(new CardboardBoxItem(standardItemProperties())), - FILTER(new FilterItem(standardItemProperties())), + FILTER(new FilterItem(standardItemProperties()), true), LOGISTICAL_DIAL(new LogisticalDialItem(standardItemProperties())), LOGISTICAL_CONTROLLER_SUPPLY(new LogisticalControllerItem(standardItemProperties(), Type.SUPPLY)), LOGISTICAL_CONTROLLER_REQUEST(new LogisticalControllerItem(standardItemProperties(), Type.REQUEST)), diff --git a/src/main/java/com/simibubi/create/CreateClient.java b/src/main/java/com/simibubi/create/CreateClient.java index 88d38b480..87cca5825 100644 --- a/src/main/java/com/simibubi/create/CreateClient.java +++ b/src/main/java/com/simibubi/create/CreateClient.java @@ -5,11 +5,11 @@ import java.util.List; import java.util.Map; import java.util.function.Function; -import com.simibubi.create.foundation.block.CTModel; -import com.simibubi.create.foundation.block.ColoredVertexModel; import com.simibubi.create.foundation.block.IHaveColoredVertices; -import com.simibubi.create.foundation.block.IHaveConnectedTextures; -import com.simibubi.create.foundation.block.SpriteShifter.SpriteShiftEntry; +import com.simibubi.create.foundation.block.connected.CTModel; +import com.simibubi.create.foundation.block.connected.IHaveConnectedTextures; +import com.simibubi.create.foundation.block.render.ColoredVertexModel; +import com.simibubi.create.foundation.block.render.SpriteShiftEntry; import com.simibubi.create.foundation.utility.SuperByteBufferCache; import com.simibubi.create.modules.contraptions.WrenchModel; import com.simibubi.create.modules.contraptions.base.KineticTileEntityRenderer; diff --git a/src/main/java/com/simibubi/create/ResourceReloadHandler.java b/src/main/java/com/simibubi/create/ResourceReloadHandler.java index 2823618d3..36cbd2010 100644 --- a/src/main/java/com/simibubi/create/ResourceReloadHandler.java +++ b/src/main/java/com/simibubi/create/ResourceReloadHandler.java @@ -1,6 +1,6 @@ package com.simibubi.create; -import com.simibubi.create.foundation.block.SpriteShifter; +import com.simibubi.create.foundation.block.render.SpriteShifter; import net.minecraft.client.resources.ReloadListener; import net.minecraft.profiler.IProfiler; diff --git a/src/main/java/com/simibubi/create/foundation/block/SpriteShifter.java b/src/main/java/com/simibubi/create/foundation/block/SpriteShifter.java deleted file mode 100644 index 180a51887..000000000 --- a/src/main/java/com/simibubi/create/foundation/block/SpriteShifter.java +++ /dev/null @@ -1,66 +0,0 @@ -package com.simibubi.create.foundation.block; - -import java.util.HashMap; -import java.util.Map; - -import com.simibubi.create.Create; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.texture.AtlasTexture; -import net.minecraft.client.renderer.texture.TextureAtlasSprite; -import net.minecraft.util.ResourceLocation; - -public class SpriteShifter { - - public static class SpriteShiftEntry { - ResourceLocation originalTextureLocation; - ResourceLocation targetTextureLocation; - TextureAtlasSprite original; - TextureAtlasSprite target; - - void loadTextures() { - AtlasTexture textureMap = Minecraft.getInstance().getTextureMap(); - original = textureMap.getSprite(originalTextureLocation); - target = textureMap.getSprite(targetTextureLocation); - } - - public ResourceLocation getTargetResourceLocation() { - return targetTextureLocation; - } - - public TextureAtlasSprite getTarget() { - if (target == null) - loadTextures(); - return target; - } - - public TextureAtlasSprite getOriginal() { - if (original == null) - loadTextures(); - return original; - } - } - - static Map textures = new HashMap<>(); - - public static SpriteShiftEntry getCT(String blockId) { - return get("block/" + blockId, "block/connected/" + blockId); - } - - public static SpriteShiftEntry get(String originalLocation, String targetLocation) { - String key = originalLocation + "->" + targetLocation; - if (textures.containsKey(key)) - return textures.get(key); - - SpriteShiftEntry entry = new SpriteShiftEntry(); - entry.originalTextureLocation = new ResourceLocation(Create.ID, originalLocation); - entry.targetTextureLocation = new ResourceLocation(Create.ID, targetLocation); - textures.put(key, entry); - return entry; - } - - public static void reloadUVs() { - textures.values().forEach(SpriteShiftEntry::loadTextures); - } - -} diff --git a/src/main/java/com/simibubi/create/foundation/block/CTModel.java b/src/main/java/com/simibubi/create/foundation/block/connected/CTModel.java similarity index 91% rename from src/main/java/com/simibubi/create/foundation/block/CTModel.java rename to src/main/java/com/simibubi/create/foundation/block/connected/CTModel.java index 9ea1a01c6..b78b197cb 100644 --- a/src/main/java/com/simibubi/create/foundation/block/CTModel.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/CTModel.java @@ -1,11 +1,11 @@ -package com.simibubi.create.foundation.block; +package com.simibubi.create.foundation.block.connected; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; -import com.simibubi.create.foundation.block.SpriteShifter.SpriteShiftEntry; +import com.simibubi.create.foundation.block.render.SpriteShiftEntry; import net.minecraft.block.Block; import net.minecraft.block.BlockState; @@ -93,8 +93,8 @@ public class CTModel extends BakedModelWrapper { float uShift = (index % 8) * textureSize; float vShift = (index / 8) * textureSize * 2; - uShift = texture.target.getInterpolatedU((index % 8) * 2) - texture.original.getMinU(); - vShift = texture.target.getInterpolatedV((index / 8) * 2) - texture.original.getMinV(); + uShift = texture.getTarget().getInterpolatedU((index % 8) * 2) - texture.getOriginal().getMinU(); + vShift = texture.getTarget().getInterpolatedV((index / 8) * 2) - texture.getOriginal().getMinV(); BakedQuad newQuad = new BakedQuad(Arrays.copyOf(quad.getVertexData(), quad.getVertexData().length), quad.getTintIndex(), quad.getFace(), quad.getSprite(), quad.shouldApplyDiffuseLighting(), diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/CTSpriteShiftEntry.java b/src/main/java/com/simibubi/create/foundation/block/connected/CTSpriteShiftEntry.java new file mode 100644 index 000000000..ed80e7987 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/block/connected/CTSpriteShiftEntry.java @@ -0,0 +1,112 @@ +package com.simibubi.create.foundation.block.connected; + +import com.simibubi.create.foundation.block.connected.ConnectedTextureBehaviour.CTContext; +import com.simibubi.create.foundation.block.render.SpriteShiftEntry; + +public abstract class CTSpriteShiftEntry extends SpriteShiftEntry { + + int textureSheetSize; + + public CTSpriteShiftEntry(int sheetSize) { + this.textureSheetSize = sheetSize; + } + + public abstract int getTextureIndex(CTContext context); + + public static class Horizontal extends CTSpriteShiftEntry { + + public Horizontal() { + super(2); + } + + @Override + public int getTextureIndex(CTContext context) { + return (context.left ? 1 : 0) + (context.right ? 2 : 0); + } + + } + + public static class Vertical extends CTSpriteShiftEntry { + + public Vertical() { + super(2); + } + + @Override + public int getTextureIndex(CTContext context) { + return (context.up ? 1 : 0) + (context.down ? 2 : 0); + } + + } + + public static class Omnidirectional extends CTSpriteShiftEntry { + + public Omnidirectional() { + super(8); + } + + @Override + public int getTextureIndex(CTContext context) { + CTContext c = context; + int tileX = 0, tileY = 0; + int borders = (!c.up ? 1 : 0) + (!c.down ? 1 : 0) + (!c.left ? 1 : 0) + (!c.right ? 1 : 0); + + if (c.up) + tileX++; + if (c.down) + tileX += 2; + if (c.left) + tileY++; + if (c.right) + tileY += 2; + + if (borders == 0) { + if (c.topRight) + tileX++; + if (c.topLeft) + tileX += 2; + if (c.bottomRight) + tileY += 2; + if (c.bottomLeft) + tileY++; + } + + if (borders == 1) { + if (!c.right) { + if (c.topLeft || c.bottomLeft) { + tileY = 4; + tileX = -1 + (c.bottomLeft ? 1 : 0) + (c.topLeft ? 1 : 0) * 2; + } + } + if (!c.left) { + if (c.topRight || c.bottomRight) { + tileY = 5; + tileX = -1 + (c.bottomRight ? 1 : 0) + (c.topRight ? 1 : 0) * 2; + } + } + if (!c.down) { + if (c.topLeft || c.topRight) { + tileY = 6; + tileX = -1 + (c.topLeft ? 1 : 0) + (c.topRight ? 1 : 0) * 2; + } + } + if (!c.up) { + if (c.bottomLeft || c.bottomRight) { + tileY = 7; + tileX = -1 + (c.bottomLeft ? 1 : 0) + (c.bottomRight ? 1 : 0) * 2; + } + } + } + + if (borders == 2) { + if ((c.up && c.left && c.topLeft) || (c.down && c.left && c.bottomLeft) + || (c.up && c.right && c.topRight) || (c.down && c.right && c.bottomRight)) + tileX += 3; + } + + return tileX + 8 * tileY; + } + + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/CTSpriteShifter.java b/src/main/java/com/simibubi/create/foundation/block/connected/CTSpriteShifter.java new file mode 100644 index 000000000..c46892cb4 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/block/connected/CTSpriteShifter.java @@ -0,0 +1,43 @@ +package com.simibubi.create.foundation.block.connected; + +import com.simibubi.create.Create; +import com.simibubi.create.foundation.block.render.SpriteShifter; + +import net.minecraft.util.ResourceLocation; + +public class CTSpriteShifter extends SpriteShifter { + + public enum CTType { + OMNIDIRECTIONAL, HORIZONTAL, VERTICAL; + } + + public static CTSpriteShiftEntry get(CTType type, String blockTextureName, String connectedTextureName) { + String originalLocation = "block/" + blockTextureName; + String targetLocation = "block/connected/" + blockTextureName; + String key = originalLocation + "->" + targetLocation; + if (textures.containsKey(key)) + return (CTSpriteShiftEntry) textures.get(key); + + CTSpriteShiftEntry entry = create(type); + ResourceLocation originalTextureLocation = new ResourceLocation(Create.ID, originalLocation); + ResourceLocation targetTextureLocation = new ResourceLocation(Create.ID, targetLocation); + entry.set(originalTextureLocation, targetTextureLocation); + + textures.put(key, entry); + return entry; + } + + private static CTSpriteShiftEntry create(CTType type) { + switch (type) { + case HORIZONTAL: + return new CTSpriteShiftEntry.Horizontal(); + case OMNIDIRECTIONAL: + return new CTSpriteShiftEntry.Omnidirectional(); + case VERTICAL: + return new CTSpriteShiftEntry.Vertical(); + default: + return null; + } + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java b/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java new file mode 100644 index 000000000..586aa017a --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/block/connected/ConnectedTextureBehaviour.java @@ -0,0 +1,89 @@ +package com.simibubi.create.foundation.block.connected; + +import java.util.Map; +import java.util.function.BiPredicate; + +import com.google.common.collect.ImmutableList; +import com.simibubi.create.foundation.block.render.SpriteShiftEntry; +import com.simibubi.create.foundation.block.render.SpriteShifter; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.client.renderer.model.BakedQuad; +import net.minecraft.util.Direction; +import net.minecraft.util.Direction.Axis; +import net.minecraft.util.Direction.AxisDirection; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.IEnviromentBlockReader; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; + +public abstract class ConnectedTextureBehaviour { + + class CTContext { + boolean up, down, left, right; + boolean topLeft, topRight, bottomLeft, bottomRight; + } + + public abstract CTSpriteShiftEntry get(BlockState state, Direction direction); + + boolean shouldFlipUVs(BlockState state, Direction face) { + return false; + } + + public boolean connectsTo(BlockState state, BlockState other, IEnviromentBlockReader reader, BlockPos pos, + BlockPos otherPos, Direction face) { + + BlockPos blockingPos = otherPos.offset(face); + if ((face.getAxis().getCoordinate(pos.getX(), pos.getY(), pos.getZ()) == face.getAxis() + .getCoordinate(otherPos.getX(), otherPos.getY(), otherPos.getZ())) + && connectsTo(state, reader.getBlockState(blockingPos), reader, pos, blockingPos, face)) + return false; + + return state.getBlock() == other.getBlock(); + } + + CTContext buildContext(IEnviromentBlockReader reader, BlockPos pos, BlockState state, Direction face) { + Axis axis = face.getAxis(); + boolean positive = face.getAxisDirection() == AxisDirection.POSITIVE; + Direction h = axis == Axis.X ? Direction.SOUTH : Direction.WEST; + Direction v = axis.isHorizontal() ? Direction.UP : Direction.NORTH; + h = positive ? h.getOpposite() : h; + if (face == Direction.DOWN) { + v = v.getOpposite(); + h = h.getOpposite(); + } + + final Direction horizontal = h; + final Direction vertical = v; + + BiPredicate connection = (x, y) -> { + BlockPos p = pos.offset(horizontal, x).offset(vertical, y); + return connectsTo(state, reader.getBlockState(p), reader, pos, p, face); + }; + + boolean up = connection.test(0, 1); + boolean down = connection.test(0, -1); + boolean left = connection.test(-1, 0); + boolean right = connection.test(1, 0); + boolean topLeft = connection.test(-1, 1); + boolean topRight = connection.test(1, 1); + boolean bottomLeft = connection.test(-1, -1); + boolean bottomRight = connection.test(1, -1); + + boolean flip = shouldFlipUVs(state, face); + CTContext context = new CTContext(); + + context.up = flip ? down : up; + context.down = flip ? up : down; + context.left = flip ? right : left; + context.right = flip ? left : right; + context.topLeft = flip ? bottomRight : topLeft; + context.topRight = flip ? bottomLeft : topRight; + context.bottomLeft = flip ? topRight : bottomLeft; + context.bottomRight = flip ? topLeft : bottomRight; + + return context; + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/block/IHaveConnectedTextures.java b/src/main/java/com/simibubi/create/foundation/block/connected/IHaveConnectedTextures.java similarity index 96% rename from src/main/java/com/simibubi/create/foundation/block/IHaveConnectedTextures.java rename to src/main/java/com/simibubi/create/foundation/block/connected/IHaveConnectedTextures.java index 300aec369..a2c22efa3 100644 --- a/src/main/java/com/simibubi/create/foundation/block/IHaveConnectedTextures.java +++ b/src/main/java/com/simibubi/create/foundation/block/connected/IHaveConnectedTextures.java @@ -1,9 +1,10 @@ -package com.simibubi.create.foundation.block; +package com.simibubi.create.foundation.block.connected; import java.util.function.BiPredicate; import com.google.common.collect.ImmutableList; -import com.simibubi.create.foundation.block.SpriteShifter.SpriteShiftEntry; +import com.simibubi.create.foundation.block.render.SpriteShiftEntry; +import com.simibubi.create.foundation.block.render.SpriteShifter; import net.minecraft.block.Block; import net.minecraft.block.BlockState; diff --git a/src/main/java/com/simibubi/create/foundation/block/connected/StandardCTBehaviour.java b/src/main/java/com/simibubi/create/foundation/block/connected/StandardCTBehaviour.java new file mode 100644 index 000000000..b6a3a1415 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/block/connected/StandardCTBehaviour.java @@ -0,0 +1,7 @@ +package com.simibubi.create.foundation.block.connected; + +public class StandardCTBehaviour extends ConnectedTextureBehaviour { + + + +} diff --git a/src/main/java/com/simibubi/create/foundation/block/ColoredOverlayTileEntityRenderer.java b/src/main/java/com/simibubi/create/foundation/block/render/ColoredOverlayTileEntityRenderer.java similarity index 95% rename from src/main/java/com/simibubi/create/foundation/block/ColoredOverlayTileEntityRenderer.java rename to src/main/java/com/simibubi/create/foundation/block/render/ColoredOverlayTileEntityRenderer.java index 3b02bd2cf..1dcf5d406 100644 --- a/src/main/java/com/simibubi/create/foundation/block/ColoredOverlayTileEntityRenderer.java +++ b/src/main/java/com/simibubi/create/foundation/block/render/ColoredOverlayTileEntityRenderer.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.block; +package com.simibubi.create.foundation.block.render; import com.simibubi.create.CreateClient; import com.simibubi.create.foundation.utility.SuperByteBuffer; diff --git a/src/main/java/com/simibubi/create/foundation/block/ColoredVertexModel.java b/src/main/java/com/simibubi/create/foundation/block/render/ColoredVertexModel.java similarity index 95% rename from src/main/java/com/simibubi/create/foundation/block/ColoredVertexModel.java rename to src/main/java/com/simibubi/create/foundation/block/render/ColoredVertexModel.java index a78379c27..964678f50 100644 --- a/src/main/java/com/simibubi/create/foundation/block/ColoredVertexModel.java +++ b/src/main/java/com/simibubi/create/foundation/block/render/ColoredVertexModel.java @@ -1,10 +1,12 @@ -package com.simibubi.create.foundation.block; +package com.simibubi.create.foundation.block.render; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import java.util.Random; +import com.simibubi.create.foundation.block.IHaveColoredVertices; + import net.minecraft.block.BlockState; import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.model.IBakedModel; diff --git a/src/main/java/com/simibubi/create/foundation/block/CustomRenderItemBakedModel.java b/src/main/java/com/simibubi/create/foundation/block/render/CustomRenderItemBakedModel.java similarity index 93% rename from src/main/java/com/simibubi/create/foundation/block/CustomRenderItemBakedModel.java rename to src/main/java/com/simibubi/create/foundation/block/render/CustomRenderItemBakedModel.java index 6e22c106a..b4b878a9e 100644 --- a/src/main/java/com/simibubi/create/foundation/block/CustomRenderItemBakedModel.java +++ b/src/main/java/com/simibubi/create/foundation/block/render/CustomRenderItemBakedModel.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.block; +package com.simibubi.create.foundation.block.render; import com.simibubi.create.Create; diff --git a/src/main/java/com/simibubi/create/foundation/block/render/SpriteShiftEntry.java b/src/main/java/com/simibubi/create/foundation/block/render/SpriteShiftEntry.java new file mode 100644 index 000000000..04fc86fc8 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/block/render/SpriteShiftEntry.java @@ -0,0 +1,40 @@ +package com.simibubi.create.foundation.block.render; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.texture.AtlasTexture; +import net.minecraft.client.renderer.texture.TextureAtlasSprite; +import net.minecraft.util.ResourceLocation; + +public class SpriteShiftEntry { + protected ResourceLocation originalTextureLocation; + protected ResourceLocation targetTextureLocation; + protected TextureAtlasSprite original; + protected TextureAtlasSprite target; + + public void set(ResourceLocation originalTextureLocation, ResourceLocation targetTextureLocation) { + this.originalTextureLocation = originalTextureLocation; + this.targetTextureLocation = targetTextureLocation; + } + + protected void loadTextures() { + AtlasTexture textureMap = Minecraft.getInstance().getTextureMap(); + original = textureMap.getSprite(originalTextureLocation); + target = textureMap.getSprite(targetTextureLocation); + } + + public ResourceLocation getTargetResourceLocation() { + return targetTextureLocation; + } + + public TextureAtlasSprite getTarget() { + if (target == null) + loadTextures(); + return target; + } + + public TextureAtlasSprite getOriginal() { + if (original == null) + loadTextures(); + return original; + } +} \ No newline at end of file diff --git a/src/main/java/com/simibubi/create/foundation/block/render/SpriteShifter.java b/src/main/java/com/simibubi/create/foundation/block/render/SpriteShifter.java new file mode 100644 index 000000000..51e101ac8 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/block/render/SpriteShifter.java @@ -0,0 +1,30 @@ +package com.simibubi.create.foundation.block.render; + +import java.util.HashMap; +import java.util.Map; + +import com.simibubi.create.Create; + +import net.minecraft.util.ResourceLocation; + +public class SpriteShifter { + + protected static Map textures = new HashMap<>(); + + public static SpriteShiftEntry get(String originalLocation, String targetLocation) { + String key = originalLocation + "->" + targetLocation; + if (textures.containsKey(key)) + return textures.get(key); + + SpriteShiftEntry entry = new SpriteShiftEntry(); + entry.originalTextureLocation = new ResourceLocation(Create.ID, originalLocation); + entry.targetTextureLocation = new ResourceLocation(Create.ID, targetLocation); + textures.put(key, entry); + return entry; + } + + public static void reloadUVs() { + textures.values().forEach(SpriteShiftEntry::loadTextures); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/block/WrappedBakedModel.java b/src/main/java/com/simibubi/create/foundation/block/render/WrappedBakedModel.java similarity index 97% rename from src/main/java/com/simibubi/create/foundation/block/WrappedBakedModel.java rename to src/main/java/com/simibubi/create/foundation/block/render/WrappedBakedModel.java index 4447141ac..9b4d02bd2 100644 --- a/src/main/java/com/simibubi/create/foundation/block/WrappedBakedModel.java +++ b/src/main/java/com/simibubi/create/foundation/block/render/WrappedBakedModel.java @@ -1,4 +1,4 @@ -package com.simibubi.create.foundation.block; +package com.simibubi.create.foundation.block.render; import java.util.List; import java.util.Random; diff --git a/src/main/java/com/simibubi/create/foundation/world/CopperOreBlock.java b/src/main/java/com/simibubi/create/foundation/world/CopperOreBlock.java new file mode 100644 index 000000000..3baa8f270 --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/world/CopperOreBlock.java @@ -0,0 +1,11 @@ +package com.simibubi.create.foundation.world; + +import net.minecraft.block.Blocks; + +public class CopperOreBlock extends OxidizingBlock { + + public CopperOreBlock() { + super(Properties.from(Blocks.IRON_ORE), 1); + } + +} diff --git a/src/main/java/com/simibubi/create/foundation/world/OxidizingBlock.java b/src/main/java/com/simibubi/create/foundation/world/OxidizingBlock.java new file mode 100644 index 000000000..a8ea4d7bc --- /dev/null +++ b/src/main/java/com/simibubi/create/foundation/world/OxidizingBlock.java @@ -0,0 +1,49 @@ +package com.simibubi.create.foundation.world; + +import java.util.Random; + +import net.minecraft.block.Block; +import net.minecraft.block.BlockState; +import net.minecraft.state.BooleanProperty; +import net.minecraft.state.StateContainer.Builder; +import net.minecraft.util.Direction; +import net.minecraft.util.math.BlockPos; +import net.minecraft.world.World; + +public class OxidizingBlock extends Block { + + public static final BooleanProperty OXIDIZED = BooleanProperty.create("oxidized"); + private float chance; + + public OxidizingBlock(Properties properties, float chance) { + super(properties); + this.chance = chance; + setDefaultState(getDefaultState().with(OXIDIZED, false)); + } + + @Override + protected void fillStateContainer(Builder builder) { + super.fillStateContainer(builder.add(OXIDIZED)); + } + + @Override + public boolean ticksRandomly(BlockState state) { + return super.ticksRandomly(state) || !state.get(OXIDIZED); + } + + @Override + public void randomTick(BlockState state, World worldIn, BlockPos pos, Random random) { + if (worldIn.getRandom().nextFloat() <= chance) + for (Direction facing : Direction.values()) { + BlockPos neighbourPos = pos.offset(facing); + if (!worldIn.isBlockPresent(neighbourPos)) + continue; + if (!Block.hasSolidSide(worldIn.getBlockState(neighbourPos), worldIn, neighbourPos, + facing.getOpposite())) + continue; + worldIn.setBlockState(pos, state.with(OXIDIZED, true)); + break; + } + } + +} diff --git a/src/main/java/com/simibubi/create/modules/contraptions/WrenchModel.java b/src/main/java/com/simibubi/create/modules/contraptions/WrenchModel.java index fbe12c8cb..ca63700b2 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/WrenchModel.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/WrenchModel.java @@ -3,7 +3,7 @@ package com.simibubi.create.modules.contraptions; import java.util.Arrays; import java.util.List; -import com.simibubi.create.foundation.block.CustomRenderItemBakedModel; +import com.simibubi.create.foundation.block.render.CustomRenderItemBakedModel; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraftforge.client.event.ModelBakeEvent; diff --git a/src/main/java/com/simibubi/create/modules/contraptions/components/contraptions/chassis/LinearChassisBlock.java b/src/main/java/com/simibubi/create/modules/contraptions/components/contraptions/chassis/LinearChassisBlock.java index 1ea0d1af6..dc1951c3a 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/components/contraptions/chassis/LinearChassisBlock.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/components/contraptions/chassis/LinearChassisBlock.java @@ -2,9 +2,9 @@ package com.simibubi.create.modules.contraptions.components.contraptions.chassis import com.google.common.collect.ImmutableList; import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.block.IHaveConnectedTextures; -import com.simibubi.create.foundation.block.SpriteShifter; -import com.simibubi.create.foundation.block.SpriteShifter.SpriteShiftEntry; +import com.simibubi.create.foundation.block.connected.IHaveConnectedTextures; +import com.simibubi.create.foundation.block.render.SpriteShiftEntry; +import com.simibubi.create.foundation.block.render.SpriteShifter; import net.minecraft.block.Block; import net.minecraft.block.BlockState; diff --git a/src/main/java/com/simibubi/create/modules/contraptions/relays/belt/BeltTileEntityRenderer.java b/src/main/java/com/simibubi/create/modules/contraptions/relays/belt/BeltTileEntityRenderer.java index d88a30227..4b97bf555 100644 --- a/src/main/java/com/simibubi/create/modules/contraptions/relays/belt/BeltTileEntityRenderer.java +++ b/src/main/java/com/simibubi/create/modules/contraptions/relays/belt/BeltTileEntityRenderer.java @@ -7,8 +7,8 @@ import java.util.Random; import com.mojang.blaze3d.platform.GlStateManager; import com.simibubi.create.AllBlocks; import com.simibubi.create.CreateClient; -import com.simibubi.create.foundation.block.SpriteShifter; -import com.simibubi.create.foundation.block.SpriteShifter.SpriteShiftEntry; +import com.simibubi.create.foundation.block.render.SpriteShiftEntry; +import com.simibubi.create.foundation.block.render.SpriteShifter; import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.IndependentShadowRenderer; import com.simibubi.create.foundation.utility.SuperByteBuffer; diff --git a/src/main/java/com/simibubi/create/modules/curiosities/deforester/DeforesterModel.java b/src/main/java/com/simibubi/create/modules/curiosities/deforester/DeforesterModel.java index e38eb1ec1..e774cda73 100644 --- a/src/main/java/com/simibubi/create/modules/curiosities/deforester/DeforesterModel.java +++ b/src/main/java/com/simibubi/create/modules/curiosities/deforester/DeforesterModel.java @@ -3,7 +3,7 @@ package com.simibubi.create.modules.curiosities.deforester; import java.util.Arrays; import java.util.List; -import com.simibubi.create.foundation.block.CustomRenderItemBakedModel; +import com.simibubi.create.foundation.block.render.CustomRenderItemBakedModel; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraftforge.client.event.ModelBakeEvent; diff --git a/src/main/java/com/simibubi/create/modules/curiosities/partialWindows/WindowInABlockModel.java b/src/main/java/com/simibubi/create/modules/curiosities/partialWindows/WindowInABlockModel.java index 7819c1b1b..bc0e65a5d 100644 --- a/src/main/java/com/simibubi/create/modules/curiosities/partialWindows/WindowInABlockModel.java +++ b/src/main/java/com/simibubi/create/modules/curiosities/partialWindows/WindowInABlockModel.java @@ -9,7 +9,7 @@ import java.util.List; import java.util.Random; import java.util.stream.Collectors; -import com.simibubi.create.foundation.block.WrappedBakedModel; +import com.simibubi.create.foundation.block.render.WrappedBakedModel; import net.minecraft.block.Block; import net.minecraft.block.BlockState; diff --git a/src/main/java/com/simibubi/create/modules/curiosities/placementHandgun/BuilderGunModel.java b/src/main/java/com/simibubi/create/modules/curiosities/placementHandgun/BuilderGunModel.java index 8a3f6a61d..a3a09bf6d 100644 --- a/src/main/java/com/simibubi/create/modules/curiosities/placementHandgun/BuilderGunModel.java +++ b/src/main/java/com/simibubi/create/modules/curiosities/placementHandgun/BuilderGunModel.java @@ -7,7 +7,7 @@ import javax.vecmath.Matrix4f; import org.apache.commons.lang3.tuple.Pair; -import com.simibubi.create.foundation.block.CustomRenderItemBakedModel; +import com.simibubi.create.foundation.block.render.CustomRenderItemBakedModel; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; diff --git a/src/main/java/com/simibubi/create/modules/curiosities/symmetry/client/SymmetryWandModel.java b/src/main/java/com/simibubi/create/modules/curiosities/symmetry/client/SymmetryWandModel.java index 2f9ed2609..ab8b5d9ad 100644 --- a/src/main/java/com/simibubi/create/modules/curiosities/symmetry/client/SymmetryWandModel.java +++ b/src/main/java/com/simibubi/create/modules/curiosities/symmetry/client/SymmetryWandModel.java @@ -3,7 +3,7 @@ package com.simibubi.create.modules.curiosities.symmetry.client; import java.util.Arrays; import java.util.List; -import com.simibubi.create.foundation.block.CustomRenderItemBakedModel; +import com.simibubi.create.foundation.block.render.CustomRenderItemBakedModel; import net.minecraft.client.renderer.model.IBakedModel; import net.minecraftforge.client.event.ModelBakeEvent; diff --git a/src/main/java/com/simibubi/create/modules/logistics/block/diodes/FlexpeaterTileEntityRenderer.java b/src/main/java/com/simibubi/create/modules/logistics/block/diodes/FlexpeaterTileEntityRenderer.java index 4f5529f56..d6437b3cd 100644 --- a/src/main/java/com/simibubi/create/modules/logistics/block/diodes/FlexpeaterTileEntityRenderer.java +++ b/src/main/java/com/simibubi/create/modules/logistics/block/diodes/FlexpeaterTileEntityRenderer.java @@ -1,7 +1,7 @@ package com.simibubi.create.modules.logistics.block.diodes; import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.block.ColoredOverlayTileEntityRenderer; +import com.simibubi.create.foundation.block.render.ColoredOverlayTileEntityRenderer; import com.simibubi.create.foundation.utility.ColorHelper; import net.minecraft.block.BlockState; diff --git a/src/main/java/com/simibubi/create/modules/logistics/item/FilterItem.java b/src/main/java/com/simibubi/create/modules/logistics/item/FilterItem.java index d1b462875..d10d2c612 100644 --- a/src/main/java/com/simibubi/create/modules/logistics/item/FilterItem.java +++ b/src/main/java/com/simibubi/create/modules/logistics/item/FilterItem.java @@ -1,24 +1,9 @@ package com.simibubi.create.modules.logistics.item; -import net.minecraft.client.renderer.color.IItemColor; import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; public class FilterItem extends Item { - public static class Color implements IItemColor { - @Override - public int getColor(ItemStack stack, int layer) { - if (layer == 0) - return 0xFFFFFF; - if (layer == 1) - return 0x6677AA; - if (layer == 2) - return 0x334477; - return 0; - } - } - public FilterItem(Properties properties) { super(properties); } diff --git a/src/main/java/com/simibubi/create/modules/logistics/management/base/LogisticalControllerTileEntityRenderer.java b/src/main/java/com/simibubi/create/modules/logistics/management/base/LogisticalControllerTileEntityRenderer.java index ffa4d194e..b26b2ecfe 100644 --- a/src/main/java/com/simibubi/create/modules/logistics/management/base/LogisticalControllerTileEntityRenderer.java +++ b/src/main/java/com/simibubi/create/modules/logistics/management/base/LogisticalControllerTileEntityRenderer.java @@ -4,7 +4,7 @@ import static com.simibubi.create.modules.logistics.management.base.LogisticalCo import static net.minecraft.state.properties.BlockStateProperties.FACING; import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.block.ColoredOverlayTileEntityRenderer; +import com.simibubi.create.foundation.block.render.ColoredOverlayTileEntityRenderer; import net.minecraft.block.BlockState; diff --git a/src/main/java/com/simibubi/create/modules/logistics/transport/villager/LogisticiansTableTileEntityRenderer.java b/src/main/java/com/simibubi/create/modules/logistics/transport/villager/LogisticiansTableTileEntityRenderer.java index 6cbf286fb..f78b46333 100644 --- a/src/main/java/com/simibubi/create/modules/logistics/transport/villager/LogisticiansTableTileEntityRenderer.java +++ b/src/main/java/com/simibubi/create/modules/logistics/transport/villager/LogisticiansTableTileEntityRenderer.java @@ -2,7 +2,7 @@ package com.simibubi.create.modules.logistics.transport.villager; import com.mojang.blaze3d.platform.GlStateManager; import com.simibubi.create.AllBlocks; -import com.simibubi.create.foundation.block.ColoredOverlayTileEntityRenderer; +import com.simibubi.create.foundation.block.render.ColoredOverlayTileEntityRenderer; import com.simibubi.create.foundation.utility.SuperByteBuffer; import com.simibubi.create.foundation.utility.TessellatorHelper; diff --git a/src/main/java/com/simibubi/create/modules/palettes/CTGlassBlock.java b/src/main/java/com/simibubi/create/modules/palettes/CTGlassBlock.java index ba0f535e2..e29cddbf3 100644 --- a/src/main/java/com/simibubi/create/modules/palettes/CTGlassBlock.java +++ b/src/main/java/com/simibubi/create/modules/palettes/CTGlassBlock.java @@ -1,6 +1,6 @@ package com.simibubi.create.modules.palettes; -import com.simibubi.create.foundation.block.IHaveConnectedTextures; +import com.simibubi.create.foundation.block.connected.IHaveConnectedTextures; import net.minecraft.block.Blocks; import net.minecraft.block.GlassBlock; diff --git a/src/main/resources/assets/create/blockstates/copper_ore.json b/src/main/resources/assets/create/blockstates/copper_ore.json new file mode 100644 index 000000000..4a2d71196 --- /dev/null +++ b/src/main/resources/assets/create/blockstates/copper_ore.json @@ -0,0 +1,6 @@ +{ + "variants": { + "oxidized=true": { "model": "create:block/copper_ore_oxidized" }, + "oxidized=false": { "model": "create:block/copper_ore" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/blockstates/zinc_ore.json b/src/main/resources/assets/create/blockstates/zinc_ore.json new file mode 100644 index 000000000..98d8893dd --- /dev/null +++ b/src/main/resources/assets/create/blockstates/zinc_ore.json @@ -0,0 +1,5 @@ +{ + "variants": { + "": { "model": "create:block/zinc_ore" } + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/lang/en_us.json b/src/main/resources/assets/create/lang/en_us.json index 563237d12..1022cb2d9 100644 --- a/src/main/resources/assets/create/lang/en_us.json +++ b/src/main/resources/assets/create/lang/en_us.json @@ -39,6 +39,9 @@ "item.create.copper_ingot": "Copper Ingot", "item.create.copper_nugget": "Copper Nugget", "item.create.crushed_copper": "Crushed Copper", + + "item.create.electron_tube": "Electron Tube", + "item.create.circuit": "Integrated Circuit", "item.create.logistical_controller_supply": "Item Supply", "item.create.logistical_controller_request": "Item Request", @@ -61,6 +64,9 @@ "item.create.rose_quartz_axe": "Gilded Quartz Axe", "item.create.rose_quartz_sword": "Gilded Quartz Blade", + "block.create.copper_ore": "Copper Ore", + "block.create.zinc_ore": "Zinc Ore", + "block.create.cogwheel": "Cogwheel", "block.create.large_cogwheel": "Large Cogwheel", "block.create.turntable": "Turntable", diff --git a/src/main/resources/assets/create/models/block/copper_ore.json b/src/main/resources/assets/create/models/block/copper_ore.json new file mode 100644 index 000000000..309c37c7e --- /dev/null +++ b/src/main/resources/assets/create/models/block/copper_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "create:block/copper_ore" + } +} diff --git a/src/main/resources/assets/create/models/block/copper_ore_oxidized.json b/src/main/resources/assets/create/models/block/copper_ore_oxidized.json new file mode 100644 index 000000000..a9507c578 --- /dev/null +++ b/src/main/resources/assets/create/models/block/copper_ore_oxidized.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "create:block/copper_ore_oxidized" + } +} diff --git a/src/main/resources/assets/create/models/block/zinc_ore.json b/src/main/resources/assets/create/models/block/zinc_ore.json new file mode 100644 index 000000000..0a48dffb3 --- /dev/null +++ b/src/main/resources/assets/create/models/block/zinc_ore.json @@ -0,0 +1,6 @@ +{ + "parent": "block/cube_all", + "textures": { + "all": "create:block/zinc_ore" + } +} diff --git a/src/main/resources/assets/create/models/item/circuit.json b/src/main/resources/assets/create/models/item/circuit.json new file mode 100644 index 000000000..de68d2775 --- /dev/null +++ b/src/main/resources/assets/create/models/item/circuit.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/circuit" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/copper_ore.json b/src/main/resources/assets/create/models/item/copper_ore.json new file mode 100644 index 000000000..0ed008141 --- /dev/null +++ b/src/main/resources/assets/create/models/item/copper_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/copper_ore" +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/electron_tube.json b/src/main/resources/assets/create/models/item/electron_tube.json new file mode 100644 index 000000000..6b15c27ac --- /dev/null +++ b/src/main/resources/assets/create/models/item/electron_tube.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/electron_tube" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/filter.json b/src/main/resources/assets/create/models/item/filter.json index 252c20bb5..3e13eb13e 100644 --- a/src/main/resources/assets/create/models/item/filter.json +++ b/src/main/resources/assets/create/models/item/filter.json @@ -1,8 +1,108 @@ { - "parent": "item/generated", - "textures": { - "layer0": "create:item/filter", - "layer1": "create:item/filter_1", - "layer2": "create:item/filter_2" - } + "credit": "Made with Blockbench", + "parent": "block/block", + "textures": { + "0": "create:block/net", + "1": "create:block/brass_casing", + "2": "create:block/clutch_off", + "particle": "create:block/net" + }, + "elements": [ + { + "name": "siderim", + "from": [13, 0, 3], + "to": [15, 2, 13], + "faces": { + "north": {"uv": [0, 6, 2, 8], "texture": "#1"}, + "east": {"uv": [3, 0, 13, 2], "texture": "#1"}, + "south": {"uv": [14, 6, 16, 8], "texture": "#1"}, + "west": {"uv": [3, 0, 13, 2], "texture": "#1"}, + "up": {"uv": [0, 3, 2, 13], "rotation": 180, "texture": "#1"}, + "down": {"uv": [14, 3, 16, 13], "texture": "#1"} + } + }, + { + "name": "siderim", + "from": [1, 0, 3], + "to": [3, 2, 13], + "faces": { + "north": {"uv": [2, 6, 0, 8], "texture": "#1"}, + "east": {"uv": [13, 0, 3, 2], "texture": "#1"}, + "south": {"uv": [16, 6, 14, 8], "texture": "#1"}, + "west": {"uv": [13, 0, 3, 2], "texture": "#1"}, + "up": {"uv": [2, 3, 0, 13], "rotation": 180, "texture": "#1"}, + "down": {"uv": [16, 3, 14, 13], "texture": "#1"} + } + }, + { + "name": "net", + "from": [3, 1, 4], + "to": [13, 1.1, 12], + "faces": { + "up": {"uv": [3.5, 4.5, 13.5, 12.5], "texture": "#0"}, + "down": {"uv": [3.5, 4.5, 13.5, 12.5], "texture": "#0"} + } + }, + { + "name": "toprim", + "from": [3, 0.5, 3], + "to": [13, 1.5, 4], + "faces": { + "north": {"uv": [2, 7, 12, 8], "texture": "#2"}, + "east": {"uv": [0, 0, 1, 1], "texture": "#missing"}, + "south": {"uv": [3, 7, 13, 8], "texture": "#2"}, + "west": {"uv": [0, 0, 1, 1], "texture": "#missing"}, + "up": {"uv": [3, 7, 13, 8], "texture": "#2"}, + "down": {"uv": [3, 7, 13, 8], "texture": "#2"} + } + }, + { + "name": "toprim", + "from": [3, 0.5, 12], + "to": [13, 1.5, 13], + "faces": { + "north": {"uv": [13, 7, 3, 8], "texture": "#2"}, + "east": {"uv": [1, 0, 0, 1], "texture": "#missing"}, + "south": {"uv": [14, 7, 4, 8], "texture": "#2"}, + "west": {"uv": [1, 0, 0, 1], "texture": "#missing"}, + "up": {"uv": [3, 8, 13, 7], "texture": "#2"}, + "down": {"uv": [3, 8, 13, 7], "texture": "#2"} + } + } + ], + "display": { + "thirdperson_righthand": { + "rotation": [75, -180, 0], + "translation": [-2.75, 3.25, 3.25], + "scale": [0.5, 0.5, 0.5] + }, + "thirdperson_lefthand": { + "rotation": [75, -180, 0], + "translation": [-2.75, 3.25, 3.25], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_righthand": { + "rotation": [75, -180, 0], + "translation": [-2.75, 3.25, 3.25], + "scale": [0.5, 0.5, 0.5] + }, + "firstperson_lefthand": { + "rotation": [75, -180, 0], + "translation": [-2.75, 3.25, 3.25], + "scale": [0.5, 0.5, 0.5] + }, + "ground": { + "translation": [0, 0.75, 0], + "scale": [0.5, 0.5, 0.5] + }, + "gui": { + "rotation": [30, 225, 0], + "translation": [0, 4.25, 0], + "scale": [0.75, 0.75, 0.75] + }, + "fixed": { + "rotation": [90, -180, 0], + "translation": [0, 0, 6.5] + } + } } \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/microchip.json b/src/main/resources/assets/create/models/item/microchip.json new file mode 100644 index 000000000..fc7097d26 --- /dev/null +++ b/src/main/resources/assets/create/models/item/microchip.json @@ -0,0 +1,6 @@ +{ + "parent": "item/generated", + "textures": { + "layer0": "create:item/microchip" + } +} \ No newline at end of file diff --git a/src/main/resources/assets/create/models/item/zinc_ore.json b/src/main/resources/assets/create/models/item/zinc_ore.json new file mode 100644 index 000000000..48433b644 --- /dev/null +++ b/src/main/resources/assets/create/models/item/zinc_ore.json @@ -0,0 +1,3 @@ +{ + "parent": "create:block/zinc_ore" +} \ No newline at end of file diff --git a/src/main/resources/assets/create/textures/block/copper_ore.png b/src/main/resources/assets/create/textures/block/copper_ore.png new file mode 100644 index 000000000..15ae2cda0 Binary files /dev/null and b/src/main/resources/assets/create/textures/block/copper_ore.png differ diff --git a/src/main/resources/assets/create/textures/block/copper_ore_oxidized.png b/src/main/resources/assets/create/textures/block/copper_ore_oxidized.png new file mode 100644 index 000000000..d89f76ea4 Binary files /dev/null and b/src/main/resources/assets/create/textures/block/copper_ore_oxidized.png differ diff --git a/src/main/resources/assets/create/textures/block/zinc_ore.png b/src/main/resources/assets/create/textures/block/zinc_ore.png new file mode 100644 index 000000000..026340327 Binary files /dev/null and b/src/main/resources/assets/create/textures/block/zinc_ore.png differ diff --git a/src/main/resources/assets/create/textures/item/circuit.png b/src/main/resources/assets/create/textures/item/circuit.png new file mode 100644 index 000000000..5840d47dc Binary files /dev/null and b/src/main/resources/assets/create/textures/item/circuit.png differ diff --git a/src/main/resources/assets/create/textures/item/electron_tube.png b/src/main/resources/assets/create/textures/item/electron_tube.png new file mode 100644 index 000000000..3dac82c2a Binary files /dev/null and b/src/main/resources/assets/create/textures/item/electron_tube.png differ diff --git a/src/main/resources/assets/create/textures/item/unused/Untitled.pdn b/src/main/resources/assets/create/textures/item/unused/Untitled.pdn new file mode 100644 index 000000000..2258e25a7 Binary files /dev/null and b/src/main/resources/assets/create/textures/item/unused/Untitled.pdn differ diff --git a/src/main/resources/assets/create/textures/item/unused/Untitled.png b/src/main/resources/assets/create/textures/item/unused/Untitled.png new file mode 100644 index 000000000..7402b7319 Binary files /dev/null and b/src/main/resources/assets/create/textures/item/unused/Untitled.png differ diff --git a/src/main/resources/assets/create/textures/item/unused/processor2.png b/src/main/resources/assets/create/textures/item/unused/processor2.png new file mode 100644 index 000000000..774cecbf1 Binary files /dev/null and b/src/main/resources/assets/create/textures/item/unused/processor2.png differ diff --git a/src/main/resources/assets/create/textures/item/unused/tube.pdn b/src/main/resources/assets/create/textures/item/unused/tube.pdn new file mode 100644 index 000000000..1c9b93852 Binary files /dev/null and b/src/main/resources/assets/create/textures/item/unused/tube.pdn differ