Added boat and bed models for their respective poses

This commit is contained in:
Sollace 2018-10-31 18:13:29 +02:00
parent 0ae50ed2a0
commit cb721408ad
2 changed files with 76 additions and 1 deletions

View file

@ -8,6 +8,7 @@ import net.minecraft.world.World;
import net.minecraft.world.WorldProviderSurface; import net.minecraft.world.WorldProviderSurface;
import net.minecraft.world.WorldSettings; import net.minecraft.world.WorldSettings;
import net.minecraft.world.WorldType; import net.minecraft.world.WorldType;
import net.minecraft.world.chunk.Chunk;
import net.minecraft.world.chunk.IChunkProvider; import net.minecraft.world.chunk.IChunkProvider;
import net.minecraft.world.storage.WorldInfo; import net.minecraft.world.storage.WorldInfo;
@ -15,6 +16,8 @@ public class DummyWorld extends World {
public static final World INSTANCE = new DummyWorld(); public static final World INSTANCE = new DummyWorld();
private final Chunk chunk = new Chunk(this, 0, 0);
private DummyWorld() { private DummyWorld() {
super(null, super(null,
new WorldInfo(new WorldSettings(0, GameType.NOT_SET, false, false, WorldType.DEFAULT), "MpServer"), new WorldInfo(new WorldSettings(0, GameType.NOT_SET, false, false, WorldType.DEFAULT), "MpServer"),
@ -33,6 +36,11 @@ public class DummyWorld extends World {
return true; return true;
} }
@Override
public Chunk getChunk(int chunkX, int chunkZ) {
return chunk;
}
@Override @Override
public IBlockState getBlockState(BlockPos pos) { public IBlockState getBlockState(BlockPos pos) {
return Blocks.AIR.getDefaultState(); return Blocks.AIR.getDefaultState();

View file

@ -1,18 +1,25 @@
package com.voxelmodpack.hdskins.gui; package com.voxelmodpack.hdskins.gui;
import net.minecraft.block.state.IBlockState;
import net.minecraft.client.Minecraft; import net.minecraft.client.Minecraft;
import net.minecraft.client.model.ModelBiped.ArmPose; import net.minecraft.client.model.ModelBiped.ArmPose;
import net.minecraft.client.model.ModelElytra; import net.minecraft.client.model.ModelElytra;
import net.minecraft.client.model.ModelPlayer; import net.minecraft.client.model.ModelPlayer;
import net.minecraft.client.renderer.GlStateManager; import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.entity.Render;
import net.minecraft.client.renderer.entity.RenderLivingBase; import net.minecraft.client.renderer.entity.RenderLivingBase;
import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.client.renderer.entity.RenderManager;
import net.minecraft.client.renderer.entity.layers.LayerRenderer; import net.minecraft.client.renderer.entity.layers.LayerRenderer;
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.item.EntityBoat;
import net.minecraft.entity.player.EnumPlayerModelParts; import net.minecraft.entity.player.EnumPlayerModelParts;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items; import net.minecraft.init.Items;
import net.minecraft.inventory.EntityEquipmentSlot; import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.ItemStack; import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntityBed;
import net.minecraft.util.ResourceLocation; import net.minecraft.util.ResourceLocation;
import org.lwjgl.opengl.GL11; import org.lwjgl.opengl.GL11;
@ -92,6 +99,14 @@ public class RenderPlayerModel<M extends EntityPlayerModel> extends RenderLiving
@Override @Override
public void doRender(M entity, double x, double y, double z, float entityYaw, float partialTicks) { public void doRender(M entity, double x, double y, double z, float entityYaw, float partialTicks) {
if (entity.isPlayerSleeping()) {
BedHead.instance.render(entity);
}
if (entity.isRiding()) {
MrBoaty.instance.render();
}
ModelPlayer player = getEntityModel(entity); ModelPlayer player = getEntityModel(entity);
mainModel = player; mainModel = player;
@ -147,7 +162,59 @@ public class RenderPlayerModel<M extends EntityPlayerModel> extends RenderLiving
super.doRender(entity, x, y, z, entityYaw, partialTicks); super.doRender(entity, x, y, z, entityYaw, partialTicks);
popMatrix(); popMatrix();
popAttrib();
}
static class BedHead extends TileEntityBed {
public static BedHead instance = new BedHead(Blocks.BED.getDefaultState());
public int metadata;
public BedHead(IBlockState state) {
state.getBlock().getMetaFromState(state);
}
@Override
public int getBlockMetadata() {
return metadata;
}
public void render(Entity entity) {
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
pushMatrix();
scale(-1, -1, -1);
TileEntityRendererDispatcher dispatcher = TileEntityRendererDispatcher.instance;
dispatcher.prepare(entity.getEntityWorld(), Minecraft.getMinecraft().getTextureManager(), Minecraft.getMinecraft().getRenderManager().getFontRenderer(), entity, null, 0);
dispatcher.getRenderer(this).render(BedHead.instance, -0.5F, 0, 0, 0, -1, 1);
popMatrix();
popAttrib(); popAttrib();
} }
} }
static class MrBoaty extends EntityBoat {
public static MrBoaty instance = new MrBoaty();
public MrBoaty() {
super(null);
}
public void render() {
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
pushMatrix();
scale(-1, -1, -1);
Render<EntityBoat> render = Minecraft.getMinecraft().getRenderManager().getEntityRenderObject(this);
render.doRender(this, 0, 0, 0, 0, 0);
popMatrix();
popAttrib();
}
}
}