remove block tinting

This commit is contained in:
Sen 2025-07-21 19:54:21 +02:00
parent 189d6883b9
commit 0525ba5d56
Signed by: sen
GPG key ID: 3AC50A6F47D1B722
241 changed files with 1162 additions and 1650 deletions

View file

@ -65,7 +65,6 @@ import client.renderer.blockmodel.ModelManager;
import client.renderer.chunk.RenderChunk;
import client.renderer.entity.RenderItem;
import client.renderer.entity.RenderManager;
import client.renderer.texture.ColormapLoader;
import client.renderer.texture.EntityTexManager;
import client.renderer.texture.TextureManager;
import client.renderer.texture.TextureMap;
@ -638,7 +637,6 @@ public class Client implements IThreadListener {
Font.unload();
Font.load(this.font);
this.textureManager.onReload();
ColormapLoader.reload();
this.modelManager.onReload();
this.renderItem.onReload();
this.blockRenderer.onReload();
@ -653,7 +651,6 @@ public class Client implements IThreadListener {
this.textureManager = new TextureManager();
this.textureManager.onReload();
this.soundManager = new SoundManager(this);
ColormapLoader.reload();
GlState.enableTexture2D();
GlState.shadeModel(GL11.GL_SMOOTH);
GL11.glClearDepth(1.0D);

View file

@ -111,27 +111,27 @@ public class GuiCreateDimension extends Gui {
addPreset("Chaotische Höhlen", "UpperLmtScale:2.0,LowerLmtScale:64.0,SeaLevel:6");
addPreset("Viel Glück", "LiquidBlock:lava,SeaLevel:40");
addFlatPreset("Klassisch", Biome.PLAINS, false, Blocks.dirt.getState(), Blocks.bedrock.getState(), 2, Blocks.dirt.getState(),
addFlatPreset("Klassisch", Biome.PLAIN, false, Blocks.dirt.getState(), Blocks.bedrock.getState(), 2, Blocks.dirt.getState(),
Blocks.grass.getState()).enableVillages();
addFlatPreset("Abbauwelt", Biome.EXTREMEHILLS, true, Blocks.stone.getState(), Blocks.bedrock.getState(), 230, Blocks.stone.getState(),
addFlatPreset("Abbauwelt", Biome.HILLS, true, Blocks.stone.getState(), Blocks.bedrock.getState(), 230, Blocks.stone.getState(),
5, Blocks.dirt.getState(), Blocks.grass.getState()).enableStrongholds().enableMineshafts().setDungeons(8);
addFlatPreset("Wasserwelt", Biome.SEA, false, Blocks.stone.getState(), Blocks.bedrock.getState(), 5, Blocks.stone.getState(),
52, Blocks.dirt.getState(), 5, Blocks.sand.getState(), 90, Blocks.water.getState());
addFlatPreset("Oberfläche", Biome.PLAINS, true, Blocks.stone.getState(), Blocks.bedrock.getState(), 59, Blocks.stone.getState(),
addFlatPreset("Oberfläche", Biome.PLAIN, true, Blocks.stone.getState(), Blocks.bedrock.getState(), 59, Blocks.stone.getState(),
3, Blocks.dirt.getState(), Blocks.grass.getState()).setBiomeReplacer(Blocks.gravel.getState()).enableVillages().enableStrongholds().enableMineshafts().setDungeons(8)
.addLake(Blocks.water.getState(), null, Blocks.grass.getState(), 4, 0, 255, false).addLake(Blocks.lava.getState(), Blocks.stone.getState(), null, 8, 8, 255, true);
addFlatPreset("Verschneites Königreich", Biome.ICEPLAINS, false, Blocks.stone.getState(), Blocks.bedrock.getState(), 59, Blocks.stone.getState(),
addFlatPreset("Verschneites Königreich", Biome.ICE, false, Blocks.stone.getState(), Blocks.bedrock.getState(), 59, Blocks.stone.getState(),
3, Blocks.dirt.getState(), Blocks.grass.getState(), Blocks.snow_layer.getState()).enableVillages();
addFlatPreset("Verschneites Königreich +", Biome.ICEPLAINS, true, Blocks.stone.getState(), Blocks.bedrock.getState(), 59, Blocks.stone.getState(),
addFlatPreset("Verschneites Königreich +", Biome.ICE, true, Blocks.stone.getState(), Blocks.bedrock.getState(), 59, Blocks.stone.getState(),
3, Blocks.dirt.getState(), Blocks.grass.getState(), Blocks.snow_layer.getState()).setBiomeReplacer(Blocks.gravel.getState()).enableVillages()
.addLake(Blocks.water.getState(), null, Blocks.grass.getState(), 4, 0, 255, false);
addFlatPreset("Unendliche Grube", Biome.PLAINS, false, Blocks.dirt.getState(), 2, Blocks.cobblestone.getState(), 3, Blocks.dirt.getState(), Blocks.grass.getState())
addFlatPreset("Unendliche Grube", Biome.PLAIN, false, Blocks.dirt.getState(), 2, Blocks.cobblestone.getState(), 3, Blocks.dirt.getState(), Blocks.grass.getState())
.setBiomeReplacer(Blocks.gravel.getState()).enableVillages();
addFlatPreset("Wüste", Biome.DESERT, false, Blocks.stone.getState(), Blocks.bedrock.getState(), 3, Blocks.stone.getState(), 52, Blocks.sandstone.getState())

View file

@ -54,15 +54,12 @@ import client.renderer.model.ModelPig;
import client.renderer.model.ModelRabbit;
import client.renderer.model.ModelSheep2;
import client.renderer.model.ModelWolf;
import client.renderer.texture.TextureTicked;
import client.renderer.ticked.TextureFlamesFX1;
import client.renderer.ticked.TextureFlamesFX2;
import client.renderer.ticked.TextureFlamesFXMono1;
import client.renderer.ticked.TextureFlamesFXMono2;
import client.renderer.ticked.TextureLavaFX;
import client.renderer.ticked.TextureLavaFlowFX;
import client.renderer.ticked.TextureWaterFX;
import client.renderer.ticked.TextureWaterFlowFX;
import client.renderer.texture.TextureTicked.TextureCreator;
import client.renderer.ticked.TextureFlame;
import client.renderer.ticked.TextureMagma;
import client.renderer.ticked.TextureMagmaFlow;
import client.renderer.ticked.TextureWater;
import client.renderer.ticked.TextureWaterFlow;
import common.entity.Entity;
import common.entity.animal.EntityBat;
import common.entity.animal.EntityChicken;
@ -161,14 +158,18 @@ public abstract class RenderRegistry {
}
}
public static void registerAnimations(Map<TextureAnimation, Class<? extends TextureTicked>> anim) {
anim.put(TextureAnimation.FIRE1, TextureFlamesFX1.class);
anim.put(TextureAnimation.FIRE2, TextureFlamesFX2.class);
anim.put(TextureAnimation.FLAME1, TextureFlamesFXMono1.class);
anim.put(TextureAnimation.FLAME2, TextureFlamesFXMono2.class);
anim.put(TextureAnimation.LAVAFLOW, TextureLavaFlowFX.class);
anim.put(TextureAnimation.LAVA, TextureLavaFX.class);
anim.put(TextureAnimation.WATERFLOW, TextureWaterFlowFX.class);
anim.put(TextureAnimation.WATER, TextureWaterFX.class);
public static void registerAnimations(Map<TextureAnimation, TextureCreator> anim) {
anim.put(TextureAnimation.FLAME_BASE, () -> new TextureFlame(0xffffffff, 0));
anim.put(TextureAnimation.FLAME_OFFSET, () -> new TextureFlame(0xffffffff, 160));
anim.put(TextureAnimation.BLACK_FLAME_BASE, () -> new TextureFlame(0xff202020, 0));
anim.put(TextureAnimation.BLACK_FLAME_OFFSET, () -> new TextureFlame(0xff202020, 160));
anim.put(TextureAnimation.BLUE_FLAME_BASE, () -> new TextureFlame(0xff4010ff, 0));
anim.put(TextureAnimation.BLUE_FLAME_OFFSET, () -> new TextureFlame(0xff4010ff, 160));
anim.put(TextureAnimation.MAGMA_FLOW, () -> new TextureMagmaFlow());
anim.put(TextureAnimation.MAGMA_STILL, () -> new TextureMagma());
anim.put(TextureAnimation.WATER_FLOW, () -> new TextureWaterFlow(0xffffffff));
anim.put(TextureAnimation.WATER_STILL, () -> new TextureWater(0xffffffff));
anim.put(TextureAnimation.SWAMP_WATER_FLOW, () -> new TextureWaterFlow(0xffe0ffae));
anim.put(TextureAnimation.SWAMP_WATER_STILL, () -> new TextureWater(0xffe0ffae));
}
}

View file

@ -297,82 +297,42 @@ public class BlockRenderer
worldRendererIn.addVertexData(bakedquad.getVertexData());
worldRendererIn.putBrightness4(brightnessIn, brightnessIn, brightnessIn, brightnessIn);
if (bakedquad.hasTintIndex())
{
int l = blockIn.colorMultiplier(blockAccessIn, blockPosIn, bakedquad.getTintIndex());
// if (EntityRenderer.anaglyphEnable)
// {
// l = TextureUtil.anaglyphColor(l);
// }
float f = (float)(l >> 16 & 255) / 255.0F;
float f1 = (float)(l >> 8 & 255) / 255.0F;
float f2 = (float)(l & 255) / 255.0F;
worldRendererIn.putColorMultiplier(f, f1, f2, 4);
worldRendererIn.putColorMultiplier(f, f1, f2, 3);
worldRendererIn.putColorMultiplier(f, f1, f2, 2);
worldRendererIn.putColorMultiplier(f, f1, f2, 1);
}
worldRendererIn.putPosition(d0, d1, d2);
}
}
public void renderModelBrightnessColor(IBakedModel bakedModel, float p_178262_2_, float red, float green, float blue)
private void renderModelBrightnessColor(IBakedModel bakedModel, float brightness)
{
for (Facing enumfacing : Facing.values())
{
this.renderModelBrightnessColorQuads(p_178262_2_, red, green, blue, bakedModel.getFace(enumfacing));
this.renderModelBrightnessColorQuads(brightness, bakedModel.getFace(enumfacing));
}
this.renderModelBrightnessColorQuads(p_178262_2_, red, green, blue, bakedModel.getQuads());
this.renderModelBrightnessColorQuads(brightness, bakedModel.getQuads());
}
private void renderModelBrightness(IBakedModel model, State p_178266_2_, float brightness, boolean p_178266_4_)
{
Block block = p_178266_2_.getBlock();
block.setItemBounds();
GL11.glRotatef(90.0F, 0.0F, 1.0F, 0.0F);
int i = block.getRenderColor(block.getEntityState(p_178266_2_));
// if (EntityRenderer.anaglyphEnable)
// {
// i = TextureUtil.anaglyphColor(i);
// }
float f = (float)(i >> 16 & 255) / 255.0F;
float f1 = (float)(i >> 8 & 255) / 255.0F;
float f2 = (float)(i & 255) / 255.0F;
if (!p_178266_4_)
{
GlState.color(brightness, brightness, brightness, 1.0F);
}
this.renderModelBrightnessColor(model, brightness, f, f1, f2);
this.renderModelBrightnessColor(model, brightness);
}
private void renderModelBrightnessColorQuads(float brightness, float red, float green, float blue, List<BakedQuad> listQuads)
private void renderModelBrightnessColorQuads(float brightness, List<BakedQuad> listQuads)
{
// Tessellator tessellator = Tessellator.getInstance();
RenderBuffer worldrenderer = Tessellator.getBuffer();
for (BakedQuad bakedquad : listQuads)
{
worldrenderer.begin(GL11.GL_QUADS, DefaultVertexFormats.ITEM);
worldrenderer.addVertexData(bakedquad.getVertexData());
if (bakedquad.hasTintIndex())
{
worldrenderer.putColorRGB_F4(red * brightness, green * brightness, blue * brightness);
}
else
{
worldrenderer.putColorRGB_F4(brightness, brightness, brightness);
}
worldrenderer.putColorRGB_F4(brightness, brightness, brightness);
Vec3i vec3i = bakedquad.getFace().getDirectionVec();
worldrenderer.putNormal((float)vec3i.getX(), (float)vec3i.getY(), (float)vec3i.getZ());
Tessellator.draw();
@ -395,10 +355,6 @@ public class BlockRenderer
BlockLiquid blockliquid = (BlockLiquid)blockStateIn.getBlock();
blockliquid.setBlockBounds(blockAccess, blockPosIn);
Sprite[] atextureatlassprite = this.fluids.get(blockliquid);
int i = blockliquid.colorMultiplier(blockAccess, blockPosIn, 0);
float f = (float)(i >> 16 & 255) / 255.0F;
float f1 = (float)(i >> 8 & 255) / 255.0F;
float f2 = (float)(i & 255) / 255.0F;
boolean flag = blockliquid.canRender(blockAccess, blockPosIn.up(), Facing.UP);
boolean flag1 = blockliquid.canRender(blockAccess, blockPosIn.down(), Facing.DOWN);
boolean[] aboolean = new boolean[] {blockliquid.canRender(blockAccess, blockPosIn.north(), Facing.NORTH), blockliquid.canRender(blockAccess, blockPosIn.south(), Facing.SOUTH), blockliquid.canRender(blockAccess, blockPosIn.west(), Facing.WEST), blockliquid.canRender(blockAccess, blockPosIn.east(), Facing.EAST)};
@ -414,11 +370,10 @@ public class BlockRenderer
float f4 = 1.0F;
float f5 = 0.8F;
float f6 = 0.6F;
Material material = blockliquid.getMaterial();
float f7 = this.getFluidHeight(blockAccess, blockPosIn, material);
float f8 = this.getFluidHeight(blockAccess, blockPosIn.south(), material);
float f9 = this.getFluidHeight(blockAccess, blockPosIn.east().south(), material);
float f10 = this.getFluidHeight(blockAccess, blockPosIn.east(), material);
float f7 = this.getFluidHeight(blockAccess, blockPosIn);
float f8 = this.getFluidHeight(blockAccess, blockPosIn.south());
float f9 = this.getFluidHeight(blockAccess, blockPosIn.east().south());
float f10 = this.getFluidHeight(blockAccess, blockPosIn.east());
double d0 = (double)blockPosIn.getX();
double d1 = (double)blockPosIn.getY();
double d2 = (double)blockPosIn.getZ();
@ -477,9 +432,9 @@ public class BlockRenderer
int k2 = blockliquid.getLightmapValue(blockAccess, blockPosIn);
int l2 = k2 >> 16 & 65535;
int i3 = k2 & 65535;
float f24 = f4 * f;
float f25 = f4 * f1;
float f26 = f4 * f2;
float f24 = f4;
float f25 = f4;
float f26 = f4;
worldRendererIn.pos(d0 + 0.0D, d1 + (double)f7, d2 + 0.0D).color(f24, f25, f26, 1.0F).tex((double)f13, (double)f17).lightmap(l2, i3).endVertex();
worldRendererIn.pos(d0 + 0.0D, d1 + (double)f8, d2 + 1.0D).color(f24, f25, f26, 1.0F).tex((double)f14, (double)f18).lightmap(l2, i3).endVertex();
worldRendererIn.pos(d0 + 1.0D, d1 + (double)f9, d2 + 1.0D).color(f24, f25, f26, 1.0F).tex((double)f15, (double)f19).lightmap(l2, i3).endVertex();
@ -594,9 +549,9 @@ public class BlockRenderer
int k = j >> 16 & 65535;
int l = j & 65535;
float f31 = i1 < 2 ? f5 : f6;
float f32 = f4 * f31 * f;
float f33 = f4 * f31 * f1;
float f34 = f4 * f31 * f2;
float f32 = f4 * f31;
float f33 = f4 * f31;
float f34 = f4 * f31;
worldRendererIn.pos(d3, d1 + (double)f39, d4).color(f32, f33, f34, 1.0F).tex((double)f41, (double)f28).lightmap(k, l).endVertex();
worldRendererIn.pos(d5, d1 + (double)f40, d6).color(f32, f33, f34, 1.0F).tex((double)f27, (double)f29).lightmap(k, l).endVertex();
worldRendererIn.pos(d5, d1 + 0.0D, d6).color(f32, f33, f34, 1.0F).tex((double)f27, (double)f30).lightmap(k, l).endVertex();
@ -612,7 +567,7 @@ public class BlockRenderer
}
}
private float getFluidHeight(IBlockAccess blockAccess, BlockPos blockPosIn, Material blockMaterial)
private float getFluidHeight(IBlockAccess blockAccess, BlockPos blockPosIn)
{
int i = 0;
float f = 0.0F;
@ -621,7 +576,7 @@ public class BlockRenderer
{
BlockPos blockpos = blockPosIn.add(-(j & 1), 0, -(j >> 1 & 1));
if (blockAccess.getState(blockpos.up()).getBlock().getMaterial() == blockMaterial)
if (blockAccess.getState(blockpos.up()).getBlock().getMaterial().isLiquid())
{
return 1.0F;
}
@ -629,7 +584,7 @@ public class BlockRenderer
State iblockstate = blockAccess.getState(blockpos);
Material material = iblockstate.getBlock().getMaterial();
if (material != blockMaterial)
if (!material.isLiquid())
{
if (!material.isSolid())
{

View file

@ -708,7 +708,7 @@ public class EffectRenderer {
this.offsetY = rng.floatv() * 3.0F;
}
protected Icon(double x, double y, double z, State state, BlockPos pos, boolean hit) {
protected Icon(double x, double y, double z, State state, boolean hit) {
this(x, y, z, hit ? 0.6f : 1.0f, Client.CLIENT.getBlockRendererDispatcher().getModelManager().getTexture(state));
this.gravity = 1.0F;
this.red = this.green = this.blue = 0.6F;
@ -717,13 +717,6 @@ public class EffectRenderer {
this.motionY = (this.motionY - 0.1) * 0.2 + 0.1;
this.motionZ *= 0.2;
}
Block block = state.getBlock();
if(block == Blocks.grass)
return;
int color = pos == null ? block.getRenderColor(state) : block.colorMultiplier(world, pos, 0);
this.red *= (float)(color >> 16 & 255) / 255.0F;
this.green *= (float)(color >> 8 & 255) / 255.0F;
this.blue *= (float)(color & 255) / 255.0F;
}
protected Icon(double x, double y, double z, Item item) {
@ -971,7 +964,7 @@ public class EffectRenderer {
});
this.register(ParticleType.BLOCK_CRACK, (x, y, z, id) -> {
State state = BlockRegistry.byId(id);
return state == null ? null : new Icon(x, y, z, state, null, false);
return state == null ? null : new Icon(x, y, z, state, false);
});
this.register(ParticleType.EXPLOSION_HUGE, (x, y, z, u) -> new ExplosionSpawner(x, y, z));
this.register(ParticleType.EXPLOSION_LARGE,
@ -1089,7 +1082,7 @@ public class EffectRenderer {
double d0 = (double)pos.getX() + ((double)j + 0.5D) / (double)i;
double d1 = (double)pos.getY() + ((double)k + 0.5D) / (double)i;
double d2 = (double)pos.getZ() + ((double)l + 0.5D) / (double)i;
this.add(new Icon(d0, d1, d2, state, pos, false));
this.add(new Icon(d0, d1, d2, state, false));
}
}
}
@ -1136,7 +1129,7 @@ public class EffectRenderer {
d0 = (double)i + block.getBlockBoundsMaxX() + (double)f;
}
this.add(new Icon(d0, d1, d2, iblockstate, pos, true));
this.add(new Icon(d0, d1, d2, iblockstate, true));
}
}

View file

@ -21,7 +21,7 @@ import common.item.Item;
import common.item.ItemAction;
import common.item.ItemStack;
import common.model.BlockLayer;
import common.model.Transform;
import common.model.GuiPosition;
import common.util.BlockPos;
import common.util.ExtMath;
import common.util.Vec3;

View file

@ -287,36 +287,6 @@ public class RenderBuffer
return ((this.vertexCount - p_78909_1_) * this.vertexFormat.getNextOffset() + this.vertexFormat.getColorOffset()) / 4;
}
public void putColorMultiplier(float red, float green, float blue, int p_178978_4_)
{
int i = this.getColorIndex(p_178978_4_);
int j = -1;
if (!this.noColor)
{
j = this.rawIntBuffer.get(i);
if (ByteOrder.nativeOrder() == ByteOrder.LITTLE_ENDIAN)
{
int k = (int)((float)(j & 255) * red);
int l = (int)((float)(j >> 8 & 255) * green);
int i1 = (int)((float)(j >> 16 & 255) * blue);
j = j & -16777216;
j = j | i1 << 16 | l << 8 | k;
}
else
{
int j1 = (int)((float)(j >> 24 & 255) * red);
int k1 = (int)((float)(j >> 16 & 255) * green);
int l1 = (int)((float)(j >> 8 & 255) * blue);
j = j & 255;
j = j | j1 << 24 | k1 << 16 | l1 << 8;
}
}
this.rawIntBuffer.put(i, j);
}
private void putColor(int argb, int p_178988_2_)
{
int i = this.getColorIndex(p_178988_2_);

View file

@ -5,10 +5,10 @@ import java.util.List;
import client.renderer.texture.Sprite;
import common.collect.Lists;
import common.model.Transform;
import common.model.GuiPosition;
import common.util.Facing;
public record BakedModel(List<BakedQuad> getQuads, List<List<BakedQuad>> getFace, boolean isGui3d, Sprite getBaseTexture, Transform getTransforms) implements IBakedModel {
public record BakedModel(List<BakedQuad> getQuads, List<List<BakedQuad>> getFace, boolean isGui3d, Sprite getBaseTexture, GuiPosition getTransforms) implements IBakedModel {
public List<BakedQuad> getFace(Facing face) {
return this.getFace.get(face.ordinal());
}
@ -22,7 +22,7 @@ public record BakedModel(List<BakedQuad> getQuads, List<List<BakedQuad>> getFace
private final List<List<BakedQuad>> faces;
private Sprite texture;
private boolean gui3d;
private Transform transforms;
private GuiPosition transforms;
public Builder(ModelBlock model) {
this(model.isGui3d(), model.getTransform());
@ -51,7 +51,7 @@ public record BakedModel(List<BakedQuad> getQuads, List<List<BakedQuad>> getFace
}
}
private Builder(boolean gui3d, Transform transforms) {
private Builder(boolean gui3d, GuiPosition transforms) {
this.quads = Lists.<BakedQuad>newArrayList();
this.faces = new ArrayList<List<BakedQuad>>(6);

View file

@ -3,10 +3,10 @@ package client.renderer.blockmodel;
import java.util.List;
import client.renderer.texture.Sprite;
import common.model.Transform;
import common.model.GuiPosition;
import common.util.Facing;
public record BuiltInModel(Transform getTransforms) implements IBakedModel {
public record BuiltInModel(GuiPosition getTransforms) implements IBakedModel {
public List<BakedQuad> getFace(Facing face) {
return null;
}

View file

@ -3,7 +3,7 @@ package client.renderer.blockmodel;
import java.util.List;
import client.renderer.texture.Sprite;
import common.model.Transform;
import common.model.GuiPosition;
import common.util.Facing;
public interface IBakedModel
@ -18,5 +18,5 @@ public interface IBakedModel
Sprite getBaseTexture();
Transform getTransforms();
GuiPosition getTransforms();
}

View file

@ -22,7 +22,7 @@ import common.item.Item;
import common.model.Model;
import common.model.ModelProvider;
import common.model.ModelRotation;
import common.model.Transform;
import common.model.GuiPosition;
import common.util.Facing;
import common.util.Pair;
import common.world.State;
@ -74,7 +74,7 @@ public abstract class ModelBakery
if(extra != null) {
for(String sprite : extra) {
loc = "item/" + sprite;
models.put(loc, new ModelBlock(Transform.IDENTITY, sprite));
models.put(loc, new ModelBlock(GuiPosition.NORMAL, sprite));
itemLocations.add(loc);
}
}
@ -211,16 +211,14 @@ public abstract class ModelBakery
private static final ModelBlock getModel(Item item, ModelProvider provider, String name) {
ModelBlock model = (ModelBlock)item.getCustomModel(provider, name);
if(model != null)
return new ModelBlock(model, item.getCustomTransform());
return new ModelBlock(model, item.getCustomPosition());
if(item.hasBuiltinModel())
return new ModelBlock(MODEL_ENTITY, Transform.IDENTITY);
return new ModelBlock(MODEL_ENTITY, GuiPosition.NORMAL);
Block block = item.getBlock();
if(block != null && block.getRenderType() != 3)
return new ModelBlock(MODEL_ENTITY, Transform.IDENTITY);
State state = block == null ? null : block.getItemState();
if(state != null)
return new ModelBlock((ModelBlock)state.getBlock().getModel(provider, BlockRegistry.getName(state.getBlock()), state), state.getBlock().getTransform());
return new ModelBlock(Transform.IDENTITY, item.getTextures(name));
return new ModelBlock((ModelBlock)state.getBlock().getModel(provider, BlockRegistry.getName(state.getBlock()), state), state.getBlock().getItemPosition());
return new ModelBlock(GuiPosition.NORMAL, item.getTextures(name));
}
private static IBakedModel bakeModel(Map<String, Sprite> sprites, FaceBakery faceBakery,

View file

@ -8,7 +8,7 @@ import common.collect.Maps;
import common.model.Model;
import common.model.ModelProvider;
import common.model.ModelRotation;
import common.model.Transform;
import common.model.GuiPosition;
import common.util.Facing;
import common.util.Vector3f;
@ -27,7 +27,7 @@ public class ModelBlock extends Model {
private ModelRotation rotation;
private boolean uvLock;
private Transform transform;
private GuiPosition transform;
private BlockPart lastPart;
private BlockPartFace[] last;
@ -79,13 +79,6 @@ public class ModelBlock extends Model {
return this;
}
public ModelBlock tint() {
for(BlockPartFace last : this.last) {
last.tint = 0;
}
return this;
}
public ModelBlock rot(int rot) {
for(BlockPartFace last : this.last) {
last.uv = new BlockFaceUV(last.uv.uvs, rot);
@ -106,29 +99,29 @@ public class ModelBlock extends Model {
public ModelBlock(String primary) {
this(null, Lists.newArrayList(), primary != null && primary.indexOf('/') == -1 ? "blocks/" + primary : primary, true, true, Transform.IDENTITY, null);
this(null, Lists.newArrayList(), primary != null && primary.indexOf('/') == -1 ? "blocks/" + primary : primary, true, true, GuiPosition.NORMAL, null);
}
public ModelBlock(Transform transform, String ... layers) {
public ModelBlock(GuiPosition transform, String ... layers) {
this(ModelBakery.MODEL_GENERATED, ModelBakery.MODEL_GENERATED.elements,
layers[0].indexOf('/') == -1 ? "items/" + layers[0] : layers[0], false, false, transform, layers);
}
public ModelBlock(ModelBlock parent, Transform transform) {
public ModelBlock(ModelBlock parent, GuiPosition transform) {
this(parent, Lists.newArrayList(), parent.getPrimary(), false, true, transform, null);
}
public ModelBlock(String primary, Transform transform, String ... layers) {
public ModelBlock(String primary, GuiPosition transform, String ... layers) {
this(ModelBakery.MODEL_GENERATED, ModelBakery.MODEL_GENERATED.elements,
primary.indexOf('/') == -1 ? "items/" + primary : primary, false, false, transform, layers);
}
public ModelBlock(String primary, List<BlockPart> elements, Transform transform, String ... layers) {
public ModelBlock(String primary, List<BlockPart> elements, GuiPosition transform, String ... layers) {
this(null, elements, primary, false, false, transform, layers);
}
private ModelBlock(ModelBlock parent, List<BlockPart> elements, String primary, boolean occlude, boolean gui3d,
Transform transform, String[] layers) {
GuiPosition transform, String[] layers) {
for(int z = 0; layers != null && z < layers.length; z++) {
layers[z] = layers[z].indexOf('/') == -1 ? "items/" + layers[z] : layers[z];
}
@ -166,7 +159,7 @@ public class ModelBlock extends Model {
return this.parent;
}
public Transform getTransform() {
public GuiPosition getTransform() {
return this.transform;
}

View file

@ -8,6 +8,8 @@ import java.util.Set;
import client.renderer.texture.Sprite;
import client.renderer.texture.TextureMap;
import common.block.Block;
import common.block.liquid.BlockDynamicLiquid;
import common.block.liquid.BlockLiquid;
import common.collect.Maps;
import common.init.BlockRegistry;
import common.properties.Property;
@ -74,11 +76,9 @@ public class ModelManager
Block block = state.getBlock();
IBakedModel model = this.getModelForState(state);
if (model == null || model == this.defaultModel)
if ((model == null || model == this.defaultModel) && block.getMaterial().isLiquid())
{
String tex = block.getFallbackTexture();
if(tex != null)
return this.texMap.getAtlasSprite("blocks/" + tex);
return this.texMap.getAtlasSprite("blocks/" + BlockRegistry.getName(block instanceof BlockDynamicLiquid liquid ? liquid.getStaticBlock() : block) + "_still");
}
if (model == null)

View file

@ -23,7 +23,7 @@ import common.item.ItemStack;
import common.item.WieldType;
import common.item.material.ItemArmor;
import common.item.material.ItemHorseArmor;
import common.model.Transform;
import common.model.GuiPosition;
import common.util.Facing;
import common.util.Vec3i;
@ -331,8 +331,8 @@ public class RenderItem
GlState.blendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GlState.color(1.0F, 1.0F, 1.0F, 1.0F);
this.setupGuiTransform(x, y, ibakedmodel.isGui3d());
Transform vec = ibakedmodel.getTransforms();
if(vec != Transform.IDENTITY) {
GuiPosition vec = ibakedmodel.getTransforms();
if(vec != GuiPosition.NORMAL) {
GL11.glTranslatef(vec.translationX(), vec.translationY(), vec.translationZ());
GL11.glRotatef(vec.rotationY(), 0.0F, 1.0F, 0.0F);
GL11.glRotatef(vec.rotationX(), 1.0F, 0.0F, 0.0F);

View file

@ -7,7 +7,7 @@ import client.renderer.texture.TextureMap;
import common.entity.Entity;
import common.item.Item;
import common.item.ItemStack;
import common.model.Transform;
import common.model.GuiPosition;
public class RenderItemEntity<T extends Entity> extends Render<T>

View file

@ -10,7 +10,7 @@ import common.entity.types.EntityLiving;
import common.init.Items;
import common.item.Item;
import common.item.ItemStack;
import common.model.Transform;
import common.model.GuiPosition;
public class LayerHeldItem implements LayerRenderer<EntityLiving>
{

View file

@ -1,27 +0,0 @@
package client.renderer.texture;
import java.awt.image.BufferedImage;
import client.util.FileUtils;
import common.color.Colorizer;
public abstract class ColormapLoader {
private static final String GRASS_TEX = "textures/world/grass.png";
private static final String FOLIAGE_TEX = "textures/world/foliage.png";
public static void reload() {
BufferedImage img;
try {
img = TextureUtil.readImage(FileUtils.getResource(GRASS_TEX));
img.getRGB(0, 0, 256, 256, Colorizer.getGrassMap(), 0, 256);
}
catch(Exception e) {
}
try {
img = TextureUtil.readImage(FileUtils.getResource(FOLIAGE_TEX));
img.getRGB(0, 0, 256, 256, Colorizer.getFoliageMap(), 0, 256);
}
catch(Exception e) {
}
}
}

View file

@ -4,6 +4,7 @@ import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.List;
import client.renderer.texture.TextureTicked.TextureCreator;
import common.collect.Lists;
public class Sprite
@ -197,15 +198,10 @@ public class Sprite
}
}
public void loadSprite(Class<? extends TextureTicked> tex)
public void loadSprite(TextureCreator tex)
{
this.resetSprite();
try {
this.tickedTexture = tex.getConstructor().newInstance();
}
catch(Exception e) {
throw new RuntimeException(e);
}
this.tickedTexture = tex.create();
this.height = this.width = this.tickedTexture.getSize();
int[] aint = new int[this.height * this.width];
this.framesTextureData.add(aint);

View file

@ -10,6 +10,7 @@ import java.util.Map.Entry;
import client.init.RenderRegistry;
import client.renderer.GlState;
import client.renderer.texture.TextureTicked.TextureCreator;
import client.util.FileUtils;
import common.block.Block;
import common.collect.Lists;
@ -26,7 +27,7 @@ public class TextureMap extends Texture
private final List<Sprite> listAnimatedSprites;
private final Map<String, Sprite> mapRegisteredSprites;
private final Map<String, Sprite> mapUploadedSprites;
private final Map<String, Class<? extends TextureTicked>> tickedTextures;
private final Map<String, TextureCreator> tickedTextures;
private final Map<String, Integer> animTextures;
private final Sprite missingImage;
@ -35,11 +36,11 @@ public class TextureMap extends Texture
this.listAnimatedSprites = Lists.<Sprite>newArrayList();
this.mapRegisteredSprites = Maps.<String, Sprite>newHashMap();
this.mapUploadedSprites = Maps.<String, Sprite>newHashMap();
this.tickedTextures = Maps.<String, Class<? extends TextureTicked>>newHashMap();
this.tickedTextures = Maps.<String, TextureCreator>newHashMap();
this.animTextures = Maps.<String, Integer>newHashMap();
this.missingImage = new Sprite(MISSING);
Map<String, Object> map = Maps.newHashMap();
Map<TextureAnimation, Class<? extends TextureTicked>> anim = Maps.newHashMap();
Map<TextureAnimation, TextureCreator> anim = Maps.newHashMap();
RenderRegistry.registerAnimations(anim);
for(Block block : BlockRegistry.blocks()) {
block.getAnimatedTextures(map);
@ -49,7 +50,7 @@ public class TextureMap extends Texture
this.animTextures.put("blocks/" + entry.getKey(), (Integer)entry.getValue());
}
else {
Class<? extends TextureTicked> clazz = anim.get((TextureAnimation)entry.getValue());
TextureCreator clazz = anim.get((TextureAnimation)entry.getValue());
if(clazz == null)
throw new RuntimeException("Animation '" + entry.getValue() + "' existiert nicht");
this.tickedTextures.put("blocks/" + entry.getKey(), clazz);
@ -97,7 +98,7 @@ public class TextureMap extends Texture
try
{
Class<? extends TextureTicked> animationmetadatasection = this.tickedTextures.get(textureatlassprite.getIconName());
TextureCreator animationmetadatasection = this.tickedTextures.get(textureatlassprite.getIconName());
if(animationmetadatasection != null) {
textureatlassprite.loadSprite(animationmetadatasection);

View file

@ -1,6 +1,10 @@
package client.renderer.texture;
public abstract class TextureTicked {
public static interface TextureCreator {
TextureTicked create();
}
public abstract void renderStep(int[] data);
public int getSize() {

View file

@ -3,20 +3,22 @@ package client.renderer.ticked;
import client.renderer.texture.TextureTicked;
public class TextureFlamesFX1 extends TextureTicked
public class TextureFlame extends TextureTicked
{
private final boolean mono;
private final int color;
public TextureFlamesFX1(boolean mono)
public TextureFlame(int color, int pre)
{
field_1133_g = new float[320];
field_1132_h = new float[320];
this.mono = mono;
this.color = color;
if(pre > 0) {
int[] tex = new int[256];
for(int z = 0; z < pre; z++) {
this.renderStep(tex);
}
}
}
public TextureFlamesFX1() {
this(false);
}
public void renderStep(int textureData[])
{
@ -65,13 +67,13 @@ public class TextureFlamesFX1 extends TextureTicked
f = 0.0F;
}
float f2 = f;
int j1 = (int)(f2 * 155F + 100F);
int l1 = (int)(f2 * f2 * 255F);
int j2 = (int)(f2 * f2 * f2 * f2 * f2 * f2 * f2 * f2 * f2 * f2 * 255F);
int c = 255;
int r = (int)(f2 * 155F + 100F);
int g = (int)(f2 * f2 * 255F);
int b = (int)(f2 * f2 * f2 * f2 * f2 * f2 * f2 * f2 * f2 * f2 * 255F);
int a = 255;
if(f2 < 0.5F)
{
c = 0;
a = 0;
}
f2 = (f2 - 0.5F) * 2.0F;
// if(flag)
@ -83,13 +85,14 @@ public class TextureFlamesFX1 extends TextureTicked
// l1 = i3;
// j2 = j3;
// }
if(this.mono) {
j2 = (j1 + l1 + j2) / 3;
textureData[k] = (c << 24) | (j2 << 16) | (j2 << 8) | j2;
if(this.color != 0xffffffff) {
b = (r + g + b) / 3;
r = (b * ((this.color >> 16) & 0xff)) / 255;
g = (b * ((this.color >> 8) & 0xff)) / 255;
b = (b * (this.color & 0xff)) / 255;
a = (a * ((this.color >> 24) & 0xff)) / 255;
}
else {
textureData[k] = (c << 24) | (j1 << 16) | (l1 << 8) | j2;
}
textureData[k] = (a << 24) | (r << 16) | (g << 8) | b;
}
}

View file

@ -1,17 +0,0 @@
package client.renderer.ticked;
public class TextureFlamesFX2 extends TextureFlamesFX1 {
public TextureFlamesFX2(boolean mono)
{
super(mono);
int[] tex = new int[256];
for(int z = 0; z < 160; z++) {
this.renderStep(tex);
}
}
public TextureFlamesFX2()
{
this(false);
}
}

View file

@ -1,7 +0,0 @@
package client.renderer.ticked;
public class TextureFlamesFXMono1 extends TextureFlamesFX1 {
public TextureFlamesFXMono1() {
super(true);
}
}

View file

@ -1,7 +0,0 @@
package client.renderer.ticked;
public class TextureFlamesFXMono2 extends TextureFlamesFX2 {
public TextureFlamesFXMono2() {
super(true);
}
}

View file

@ -3,10 +3,9 @@ package client.renderer.ticked;
import client.renderer.texture.TextureTicked;
import common.util.ExtMath;
public class TextureLavaFX extends TextureTicked
public class TextureMagma extends TextureTicked
{
public TextureLavaFX()
public TextureMagma()
{
field_1147_g = new float[256];
field_1146_h = new float[256];

View file

@ -3,10 +3,9 @@ package client.renderer.ticked;
import client.renderer.texture.TextureTicked;
import common.util.ExtMath;
public class TextureLavaFlowFX extends TextureTicked
public class TextureMagmaFlow extends TextureTicked
{
public TextureLavaFlowFX()
public TextureMagmaFlow()
{
field_1143_g = new float[256];
field_1142_h = new float[256];

View file

@ -3,11 +3,13 @@ package client.renderer.ticked;
import client.renderer.texture.TextureTicked;
public class TextureWaterFX extends TextureTicked
{
public class TextureWater extends TextureTicked
{
private final int color;
public TextureWaterFX()
{
public TextureWater(int color)
{
this.color = color;
field_1158_g = new float[256];
field_1157_h = new float[256];
field_1156_i = new float[256];
@ -72,15 +74,13 @@ public class TextureWaterFX extends TextureTicked
int g = (int)(50F + f2 * 64F);
int b = 255;
int a = (int)(146F + f2 * 50F);
// if(flag)
// {
// int i3 = (l1 * 30 + j2 * 59 + k2 * 11) / 100;
// int j3 = (l1 * 30 + j2 * 70) / 100;
// int k3 = (l1 * 30 + k2 * 70) / 100;
// l1 = i3;
// j2 = j3;
// k2 = k3;
// }
if(this.color != 0xffffffff)
{
r = (r * ((this.color >> 16) & 0xff)) / 255;
g = (g * ((this.color >> 8) & 0xff)) / 255;
b = (b * (this.color & 0xff)) / 255;
a = (a * ((this.color >> 24) & 0xff)) / 255;
}
textureData[i1] = (a << 24) | (r << 16) | (g << 8) | b;
}

View file

@ -3,11 +3,13 @@ package client.renderer.ticked;
import client.renderer.texture.TextureTicked;
public class TextureWaterFlowFX extends TextureTicked
{
public class TextureWaterFlow extends TextureTicked
{
private final int color;
public TextureWaterFlowFX()
{
public TextureWaterFlow(int color)
{
this.color = color;
field_1138_g = new float[256];
field_1137_h = new float[256];
field_1136_i = new float[256];
@ -71,16 +73,14 @@ public class TextureWaterFlowFX extends TextureTicked
int r = (int)(32F + v * 32F);
int g = (int)(50F + v * 64F);
int b = 255;
int a = (int)(146F + v * 50F);
// if(flag)
// {
// int i3 = (l1 * 30 + j2 * 59 + k2 * 11) / 100;
// int j3 = (l1 * 30 + j2 * 70) / 100;
// int k3 = (l1 * 30 + k2 * 70) / 100;
// l1 = i3;
// j2 = j3;
// k2 = k3;
// }
int a = (int)(146F + v * 50F);
if(this.color != 0xffffffff)
{
r = (r * ((this.color >> 16) & 0xff)) / 255;
g = (g * ((this.color >> 8) & 0xff)) / 255;
b = (b * (this.color & 0xff)) / 255;
a = (a * ((this.color >> 24) & 0xff)) / 255;
}
textureData[(i1 & 0x0f) | ((i1 & 0xf0) * 2)] = textureData[((i1 & 0x0f) + 16) | ((i1 & 0xf0) * 2)] =
textureData[(i1 & 0x0f) | (((i1 & 0xf0) + 256) * 2)] = textureData[((i1 & 0x0f) + 16) | (((i1 & 0xf0) + 256) * 2)] =
(a << 24) | (r << 16) | (g << 8) | b;

Binary file not shown.

Before

Width:  |  Height:  |  Size: 598 B

After

Width:  |  Height:  |  Size: 5.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 B

After

Width:  |  Height:  |  Size: 6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.3 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 B

After

Width:  |  Height:  |  Size: 5.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 270 B

After

Width:  |  Height:  |  Size: 5.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 740 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 157 B

After

Width:  |  Height:  |  Size: 4.7 KiB

Before After
Before After

BIN
client/src/main/resources/textures/blocks/grass_side.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 405 B

After

Width:  |  Height:  |  Size: 5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 219 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 268 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Before After
Before After

BIN
client/src/main/resources/textures/blocks/iron_block.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 333 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 341 B

After

Width:  |  Height:  |  Size: 5.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.8 KiB

After

Width:  |  Height:  |  Size: 5.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 706 B

After

Width:  |  Height:  |  Size: 5.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 670 B

After

Width:  |  Height:  |  Size: 5.6 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 715 B

After

Width:  |  Height:  |  Size: 5.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 717 B

After

Width:  |  Height:  |  Size: 5.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 B

After

Width:  |  Height:  |  Size: 4.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 441 B

After

Width:  |  Height:  |  Size: 5.7 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 499 B

After

Width:  |  Height:  |  Size: 5.9 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.1 KiB

After

Width:  |  Height:  |  Size: 6.2 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

View file

Before

Width:  |  Height:  |  Size: 823 B

After

Width:  |  Height:  |  Size: 823 B

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 189 B

After

Width:  |  Height:  |  Size: 4.8 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 186 B

After

Width:  |  Height:  |  Size: 5 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

View file

Before

Width:  |  Height:  |  Size: 14 KiB

After

Width:  |  Height:  |  Size: 14 KiB

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 18 KiB

After

Width:  |  Height:  |  Size: 18 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 263 B

After

Width:  |  Height:  |  Size: 5.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 5.6 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 6.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 584 B

After

Width:  |  Height:  |  Size: 5.5 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.7 KiB

After

Width:  |  Height:  |  Size: 6.1 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 235 B

After

Width:  |  Height:  |  Size: 5.3 KiB

Before After
Before After

Binary file not shown.

Before

Width:  |  Height:  |  Size: 185 B

After

Width:  |  Height:  |  Size: 4.9 KiB

Before After
Before After

BIN
client/src/main/resources/textures/items/iron_ingot.png Executable file → Normal file

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.7 KiB

After

Width:  |  Height:  |  Size: 191 B

Before After
Before After

View file

Before

Width:  |  Height:  |  Size: 4.9 KiB

After

Width:  |  Height:  |  Size: 4.9 KiB

Before After
Before After

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 18 KiB