Skip to content

Instantly share code, notes, and snippets.

@mlugg
Created June 14, 2019 16:06
Show Gist options
  • Save mlugg/45f01f5d055126ed6378d7dc94fee1b3 to your computer and use it in GitHub Desktop.
Save mlugg/45f01f5d055126ed6378d7dc94fee1b3 to your computer and use it in GitHub Desktop.
DummyGasItem rendering code
package uk.co.mlugg.addedcells.mekanism.item.render;
import java.util.Collections;
import java.util.List;
import java.util.Optional;
import mekanism.api.gas.Gas;
import mekanism.api.gas.GasStack;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ItemOverrideList;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import net.minecraftforge.client.model.ItemLayerModel;
import uk.co.mlugg.addedcells.mekanism.item.ItemDummyGas;
public class BakedModelDispatcherDummyGas implements IBakedModel {
private final VertexFormat format;
public BakedModelDispatcherDummyGas(VertexFormat format) {
this.format = format;
}
@Override
public List<BakedQuad> getQuads(IBlockState state, EnumFacing side, long rand) {
return Collections.emptyList();
}
@Override
public boolean isAmbientOcclusion() {
return false;
}
@Override
public boolean isGui3d() {
return false;
}
@Override
public boolean isBuiltInRenderer() {
return false;
}
@Override
public TextureAtlasSprite getParticleTexture() {
return null;
}
@Override
public ItemOverrideList getOverrides() {
return new ItemOverrideList(Collections.emptyList()) {
@Override
public IBakedModel handleItemState(IBakedModel m, ItemStack is, World w, EntityLivingBase e) {
if (!(is.getItem() instanceof ItemDummyGas)) return m;
ItemDummyGas itemGas = (ItemDummyGas)is.getItem();
GasStack gs = itemGas.getGasStack(is);
if (gs == null) return m;
Gas g = gs.getGas();
if (g == null) return m;
System.out.println("Gas name: " + g.getLocalizedName());
System.out.println("Gas sprite: " + g.getSprite().toString());
System.out.println("Gas tint: " + g.getTint());
TextureAtlasSprite s = g.getSprite();
// I've also tried this with a tint of g.getTint()
return new BakedModelDummyGas(ItemLayerModel.getQuadsForSprite(g.getTint(), s, BakedModelDispatcherDummyGas.this.format, Optional.empty()));
}
};
}
}
package uk.co.mlugg.addedcells.mekanism.item.render;
import java.util.List;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.block.model.ItemOverrideList;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.EnumFacing;
public class BakedModelDummyGas implements IBakedModel {
private List<BakedQuad> quads;
public BakedModelDummyGas(List<BakedQuad> quads) {
this.quads = quads;
}
@Override
public List<BakedQuad> getQuads(IBlockState state, EnumFacing side, long rand) {
return this.quads;
}
@Override
public boolean isAmbientOcclusion() {
return false;
}
@Override
public boolean isGui3d() {
return false;
}
@Override
public boolean isBuiltInRenderer() {
return false;
}
@Override
public TextureAtlasSprite getParticleTexture() {
return null;
}
@Override
public ItemOverrideList getOverrides() {
return null;
}
}
package uk.co.mlugg.addedcells.mekanism.item.render;
import java.util.function.Function;
import net.minecraft.client.renderer.block.model.IBakedModel;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.IModel;
import net.minecraftforge.common.model.IModelState;
public class ModelDummyGas implements IModel {
@Override
public IBakedModel bake(IModelState state, VertexFormat format,
Function<ResourceLocation, TextureAtlasSprite> bakedTextureGetter) {
return new BakedModelDispatcherDummyGas(format);
}
}
@mlugg
Copy link
Author

mlugg commented Jun 14, 2019

Console output from handleItemState:

[17:07:38] [main/INFO] [STDOUT]: [uk.co.mlugg.addedcells.mekanism.item.render.BakedModelDispatcherDummyGas$1:handleItemState:68]: Gas name: Oxygen
[17:07:38] [main/INFO] [STDOUT]: [uk.co.mlugg.addedcells.mekanism.item.render.BakedModelDispatcherDummyGas$1:handleItemState:69]: Gas sprite: TextureAtlasSprite{name='mekanism:blocks/liquid/liquid', frameCount=32, rotated=false, x=1392, y=240, height=16, width=16, u0=0.6796875, u1=0.6875, v0=0.234375, v1=0.25}
[17:07:38] [main/INFO] [STDOUT]: [uk.co.mlugg.addedcells.mekanism.item.render.BakedModelDispatcherDummyGas$1:handleItemState:70]: Gas tint: 7135999

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment