Sprites and CT

Swapping dev environment, this snapshot does not launch
This commit is contained in:
simibubi 2020-01-13 20:23:44 +01:00
parent e1a1ce46db
commit 7ff524f616
52 changed files with 587 additions and 117 deletions

View file

@ -8,6 +8,7 @@ import com.simibubi.create.foundation.block.RenderUtilityAxisBlock;
import com.simibubi.create.foundation.block.RenderUtilityBlock; import com.simibubi.create.foundation.block.RenderUtilityBlock;
import com.simibubi.create.foundation.block.RenderUtilityDirectionalBlock; import com.simibubi.create.foundation.block.RenderUtilityDirectionalBlock;
import com.simibubi.create.foundation.utility.Lang; 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.IModule;
import com.simibubi.create.modules.contraptions.components.actors.DrillBlock; import com.simibubi.create.modules.contraptions.components.actors.DrillBlock;
import com.simibubi.create.modules.contraptions.components.actors.DrillBlock.DrillHeadBlock; import com.simibubi.create.modules.contraptions.components.actors.DrillBlock.DrillHeadBlock;
@ -95,6 +96,10 @@ import net.minecraftforge.registries.IForgeRegistry;
public enum AllBlocks { public enum AllBlocks {
__MATERIALS__(),
COPPER_ORE(new CopperOreBlock()),
ZINC_ORE(new Block(Properties.from(Blocks.GOLD_ORE))),
__SCHEMATICS__(), __SCHEMATICS__(),
SCHEMATICANNON(new SchematicannonBlock()), SCHEMATICANNON(new SchematicannonBlock()),
SCHEMATICANNON_CONNECTOR(new RenderUtilityBlock()), SCHEMATICANNON_CONNECTOR(new RenderUtilityBlock()),

View file

@ -66,6 +66,9 @@ public enum AllItems {
CRUSHED_COPPER(ingredient()), CRUSHED_COPPER(ingredient()),
CRUSHED_ZINC(ingredient()), CRUSHED_ZINC(ingredient()),
CRUSHED_BRASS(ingredient()), CRUSHED_BRASS(ingredient()),
ELECTRON_TUBE(ingredient()),
CIRCUIT(ingredient()),
// BLAZING_PICKAXE(new BlazingToolItem(1, -2.8F, standardProperties(), PICKAXE)), // BLAZING_PICKAXE(new BlazingToolItem(1, -2.8F, standardProperties(), PICKAXE)),
// BLAZING_SHOVEL(new BlazingToolItem(1.5F, -3.0F, standardProperties(), SHOVEL)), // 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_1416(new CardboardBoxItem(standardItemProperties())),
CARDBOARD_BOX_1410(new CardboardBoxItem(standardItemProperties())), CARDBOARD_BOX_1410(new CardboardBoxItem(standardItemProperties())),
FILTER(new FilterItem(standardItemProperties())), FILTER(new FilterItem(standardItemProperties()), true),
LOGISTICAL_DIAL(new LogisticalDialItem(standardItemProperties())), LOGISTICAL_DIAL(new LogisticalDialItem(standardItemProperties())),
LOGISTICAL_CONTROLLER_SUPPLY(new LogisticalControllerItem(standardItemProperties(), Type.SUPPLY)), LOGISTICAL_CONTROLLER_SUPPLY(new LogisticalControllerItem(standardItemProperties(), Type.SUPPLY)),
LOGISTICAL_CONTROLLER_REQUEST(new LogisticalControllerItem(standardItemProperties(), Type.REQUEST)), LOGISTICAL_CONTROLLER_REQUEST(new LogisticalControllerItem(standardItemProperties(), Type.REQUEST)),

View file

@ -5,11 +5,11 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.function.Function; 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.IHaveColoredVertices;
import com.simibubi.create.foundation.block.IHaveConnectedTextures; import com.simibubi.create.foundation.block.connected.CTModel;
import com.simibubi.create.foundation.block.SpriteShifter.SpriteShiftEntry; 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.foundation.utility.SuperByteBufferCache;
import com.simibubi.create.modules.contraptions.WrenchModel; import com.simibubi.create.modules.contraptions.WrenchModel;
import com.simibubi.create.modules.contraptions.base.KineticTileEntityRenderer; import com.simibubi.create.modules.contraptions.base.KineticTileEntityRenderer;

View file

@ -1,6 +1,6 @@
package com.simibubi.create; 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.client.resources.ReloadListener;
import net.minecraft.profiler.IProfiler; import net.minecraft.profiler.IProfiler;

View file

@ -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<String, SpriteShiftEntry> 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);
}
}

View file

@ -1,11 +1,11 @@
package com.simibubi.create.foundation.block; package com.simibubi.create.foundation.block.connected;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Random; 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.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
@ -93,8 +93,8 @@ public class CTModel extends BakedModelWrapper<IBakedModel> {
float uShift = (index % 8) * textureSize; float uShift = (index % 8) * textureSize;
float vShift = (index / 8) * textureSize * 2; float vShift = (index / 8) * textureSize * 2;
uShift = texture.target.getInterpolatedU((index % 8) * 2) - texture.original.getMinU(); uShift = texture.getTarget().getInterpolatedU((index % 8) * 2) - texture.getOriginal().getMinU();
vShift = texture.target.getInterpolatedV((index / 8) * 2) - texture.original.getMinV(); vShift = texture.getTarget().getInterpolatedV((index / 8) * 2) - texture.getOriginal().getMinV();
BakedQuad newQuad = new BakedQuad(Arrays.copyOf(quad.getVertexData(), quad.getVertexData().length), BakedQuad newQuad = new BakedQuad(Arrays.copyOf(quad.getVertexData(), quad.getVertexData().length),
quad.getTintIndex(), quad.getFace(), quad.getSprite(), quad.shouldApplyDiffuseLighting(), quad.getTintIndex(), quad.getFace(), quad.getSprite(), quad.shouldApplyDiffuseLighting(),

View file

@ -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;
}
}
}

View file

@ -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;
}
}
}

View file

@ -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<Integer, Integer> 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;
}
}

View file

@ -1,9 +1,10 @@
package com.simibubi.create.foundation.block; package com.simibubi.create.foundation.block.connected;
import java.util.function.BiPredicate; import java.util.function.BiPredicate;
import com.google.common.collect.ImmutableList; 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.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;

View file

@ -0,0 +1,7 @@
package com.simibubi.create.foundation.block.connected;
public class StandardCTBehaviour extends ConnectedTextureBehaviour {
}

View file

@ -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.CreateClient;
import com.simibubi.create.foundation.utility.SuperByteBuffer; import com.simibubi.create.foundation.utility.SuperByteBuffer;

View file

@ -1,10 +1,12 @@
package com.simibubi.create.foundation.block; package com.simibubi.create.foundation.block.render;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;
import com.simibubi.create.foundation.block.IHaveColoredVertices;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;
import net.minecraft.client.renderer.model.BakedQuad; import net.minecraft.client.renderer.model.BakedQuad;
import net.minecraft.client.renderer.model.IBakedModel; import net.minecraft.client.renderer.model.IBakedModel;

View file

@ -1,4 +1,4 @@
package com.simibubi.create.foundation.block; package com.simibubi.create.foundation.block.render;
import com.simibubi.create.Create; import com.simibubi.create.Create;

View file

@ -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;
}
}

View file

@ -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<String, SpriteShiftEntry> 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);
}
}

View file

@ -1,4 +1,4 @@
package com.simibubi.create.foundation.block; package com.simibubi.create.foundation.block.render;
import java.util.List; import java.util.List;
import java.util.Random; import java.util.Random;

View file

@ -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);
}
}

View file

@ -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<Block, BlockState> 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;
}
}
}

View file

@ -3,7 +3,7 @@ package com.simibubi.create.modules.contraptions;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; 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.minecraft.client.renderer.model.IBakedModel;
import net.minecraftforge.client.event.ModelBakeEvent; import net.minecraftforge.client.event.ModelBakeEvent;

View file

@ -2,9 +2,9 @@ package com.simibubi.create.modules.contraptions.components.contraptions.chassis
import com.google.common.collect.ImmutableList; import com.google.common.collect.ImmutableList;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.foundation.block.IHaveConnectedTextures; import com.simibubi.create.foundation.block.connected.IHaveConnectedTextures;
import com.simibubi.create.foundation.block.SpriteShifter; import com.simibubi.create.foundation.block.render.SpriteShiftEntry;
import com.simibubi.create.foundation.block.SpriteShifter.SpriteShiftEntry; import com.simibubi.create.foundation.block.render.SpriteShifter;
import net.minecraft.block.Block; import net.minecraft.block.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;

View file

@ -7,8 +7,8 @@ import java.util.Random;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
import com.simibubi.create.AllBlocks; import com.simibubi.create.AllBlocks;
import com.simibubi.create.CreateClient; import com.simibubi.create.CreateClient;
import com.simibubi.create.foundation.block.SpriteShifter; import com.simibubi.create.foundation.block.render.SpriteShiftEntry;
import com.simibubi.create.foundation.block.SpriteShifter.SpriteShiftEntry; import com.simibubi.create.foundation.block.render.SpriteShifter;
import com.simibubi.create.foundation.utility.AnimationTickHolder; import com.simibubi.create.foundation.utility.AnimationTickHolder;
import com.simibubi.create.foundation.utility.IndependentShadowRenderer; import com.simibubi.create.foundation.utility.IndependentShadowRenderer;
import com.simibubi.create.foundation.utility.SuperByteBuffer; import com.simibubi.create.foundation.utility.SuperByteBuffer;

View file

@ -3,7 +3,7 @@ package com.simibubi.create.modules.curiosities.deforester;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; 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.minecraft.client.renderer.model.IBakedModel;
import net.minecraftforge.client.event.ModelBakeEvent; import net.minecraftforge.client.event.ModelBakeEvent;

View file

@ -9,7 +9,7 @@ import java.util.List;
import java.util.Random; import java.util.Random;
import java.util.stream.Collectors; 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.Block;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;

View file

@ -7,7 +7,7 @@ import javax.vecmath.Matrix4f;
import org.apache.commons.lang3.tuple.Pair; 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.IBakedModel;
import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType; import net.minecraft.client.renderer.model.ItemCameraTransforms.TransformType;

View file

@ -3,7 +3,7 @@ package com.simibubi.create.modules.curiosities.symmetry.client;
import java.util.Arrays; import java.util.Arrays;
import java.util.List; 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.minecraft.client.renderer.model.IBakedModel;
import net.minecraftforge.client.event.ModelBakeEvent; import net.minecraftforge.client.event.ModelBakeEvent;

View file

@ -1,7 +1,7 @@
package com.simibubi.create.modules.logistics.block.diodes; package com.simibubi.create.modules.logistics.block.diodes;
import com.simibubi.create.AllBlocks; 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 com.simibubi.create.foundation.utility.ColorHelper;
import net.minecraft.block.BlockState; import net.minecraft.block.BlockState;

View file

@ -1,24 +1,9 @@
package com.simibubi.create.modules.logistics.item; package com.simibubi.create.modules.logistics.item;
import net.minecraft.client.renderer.color.IItemColor;
import net.minecraft.item.Item; import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public class FilterItem extends Item { 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) { public FilterItem(Properties properties) {
super(properties); super(properties);
} }

View file

@ -4,7 +4,7 @@ import static com.simibubi.create.modules.logistics.management.base.LogisticalCo
import static net.minecraft.state.properties.BlockStateProperties.FACING; import static net.minecraft.state.properties.BlockStateProperties.FACING;
import com.simibubi.create.AllBlocks; 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; import net.minecraft.block.BlockState;

View file

@ -2,7 +2,7 @@ package com.simibubi.create.modules.logistics.transport.villager;
import com.mojang.blaze3d.platform.GlStateManager; import com.mojang.blaze3d.platform.GlStateManager;
import com.simibubi.create.AllBlocks; 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.SuperByteBuffer;
import com.simibubi.create.foundation.utility.TessellatorHelper; import com.simibubi.create.foundation.utility.TessellatorHelper;

View file

@ -1,6 +1,6 @@
package com.simibubi.create.modules.palettes; 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.Blocks;
import net.minecraft.block.GlassBlock; import net.minecraft.block.GlassBlock;

View file

@ -0,0 +1,6 @@
{
"variants": {
"oxidized=true": { "model": "create:block/copper_ore_oxidized" },
"oxidized=false": { "model": "create:block/copper_ore" }
}
}

View file

@ -0,0 +1,5 @@
{
"variants": {
"": { "model": "create:block/zinc_ore" }
}
}

View file

@ -39,6 +39,9 @@
"item.create.copper_ingot": "Copper Ingot", "item.create.copper_ingot": "Copper Ingot",
"item.create.copper_nugget": "Copper Nugget", "item.create.copper_nugget": "Copper Nugget",
"item.create.crushed_copper": "Crushed Copper", "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_supply": "Item Supply",
"item.create.logistical_controller_request": "Item Request", "item.create.logistical_controller_request": "Item Request",
@ -61,6 +64,9 @@
"item.create.rose_quartz_axe": "Gilded Quartz Axe", "item.create.rose_quartz_axe": "Gilded Quartz Axe",
"item.create.rose_quartz_sword": "Gilded Quartz Blade", "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.cogwheel": "Cogwheel",
"block.create.large_cogwheel": "Large Cogwheel", "block.create.large_cogwheel": "Large Cogwheel",
"block.create.turntable": "Turntable", "block.create.turntable": "Turntable",

View file

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "create:block/copper_ore"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "create:block/copper_ore_oxidized"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "block/cube_all",
"textures": {
"all": "create:block/zinc_ore"
}
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "create:item/circuit"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "create:block/copper_ore"
}

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "create:item/electron_tube"
}
}

View file

@ -1,8 +1,108 @@
{ {
"parent": "item/generated", "credit": "Made with Blockbench",
"textures": { "parent": "block/block",
"layer0": "create:item/filter", "textures": {
"layer1": "create:item/filter_1", "0": "create:block/net",
"layer2": "create:item/filter_2" "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]
}
}
} }

View file

@ -0,0 +1,6 @@
{
"parent": "item/generated",
"textures": {
"layer0": "create:item/microchip"
}
}

View file

@ -0,0 +1,3 @@
{
"parent": "create:block/zinc_ore"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 809 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 823 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 813 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 504 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 543 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 560 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 604 B