Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package combat.enhancer.item.render;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.gui.inventory.GuiContainerCreative;
- import net.minecraft.client.gui.inventory.GuiInventory;
- import net.minecraft.client.renderer.entity.RenderManager;
- import net.minecraft.entity.Entity;
- import net.minecraft.entity.player.EntityPlayer;
- import net.minecraft.item.ItemStack;
- import net.minecraft.util.ResourceLocation;
- import net.minecraftforge.client.ForgeHooksClient;
- import net.minecraftforge.client.IItemRenderer;
- import org.lwjgl.opengl.GL11;
- import cpw.mods.fml.client.FMLClientHandler;
- public class WeaponRenderer implements IItemRenderer {
- protected BaseWeaponModel baseWeaponModel;
- //WARNING!!!! INFO IS MOST LIKELY SHARED BETWEEN RENDERS, bugs happen when other entities are holding the sword too
- private double rotX = 0;
- private double rotY = 0;
- private double rotZ = 0;
- //lets try these used in here shall we
- //a client managed resetting tick that uses world time difference to tick itself, this ensures 20 ticks per second without the server potentially forcing a time update breaking animation flow, alternative is client tick handler somehow ticking this
- public int smoothGameTick = 0;
- public long lastWorldTime = 0;
- public ResourceLocation resWeapon = new ResourceLocation("hostileworlds:textures/blocks/stoneMoss");
- public WeaponRenderer() {
- this.baseWeaponModel = new BaseWeaponModel();
- }
- @Override
- public boolean handleRenderType(ItemStack item, ItemRenderType type) {
- switch(type) {
- case EQUIPPED: return true;
- default: return false;
- }
- }
- @Override
- public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item,
- ItemRendererHelper helper) {
- return false;
- }
- @Override
- public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
- int swingTimeMax = 10;
- Minecraft mc = Minecraft.getMinecraft();
- boolean swinging = item != null && item.stackTagCompound != null && item.stackTagCompound.getInteger("swingTimeCur") > 0 && smoothGameTick <= swingTimeMax;
- if (swinging) {
- if (mc.theWorld.getWorldTime() != lastWorldTime) {
- lastWorldTime = mc.theWorld.getWorldTime();
- smoothGameTick++;
- }
- } else {
- smoothGameTick = 0;
- }
- //System.out.println("swinging? " + swinging + " - " + smoothGameTick);
- //REMOVE ME - or only use for live sword model updates for testing
- //this.baseWeaponModel = new BaseWeaponModel();
- float rate = (float) Math.cos(smoothGameTick * 0.5);
- float range = 100;
- float swingFlow = -range + rate * range;
- if (mc.gameSettings.keyBindSneak.pressed) {
- rotX += mc.mouseHelper.deltaX;
- rotY += mc.mouseHelper.deltaY;
- } else {
- rotX = 0D;
- rotY = swingFlow;
- }
- switch(type){
- case EQUIPPED: {
- GL11.glPushMatrix();
- //ForgeHooksClient.onTextureLoadPre("/clubs/ClubModel.png");
- FMLClientHandler.instance().getClient().func_110434_K().func_110577_a(resWeapon);
- //FMLClientHandler.instance().getClient().renderEngine.bindTexture("/mods/HostileWorlds/textures/blocks/stoneMoss.png");
- boolean isFirstPerson = false;
- if(data[1] != null && data[1] instanceof EntityPlayer) {
- if(!((EntityPlayer)data[1] == Minecraft.getMinecraft().renderViewEntity &&
- Minecraft.getMinecraft().gameSettings.thirdPersonView == 0 &&
- !((Minecraft.getMinecraft().currentScreen instanceof GuiInventory ||
- Minecraft.getMinecraft().currentScreen instanceof GuiContainerCreative) &&
- RenderManager.instance.playerViewY == 180.0F))) {
- //GL11.glTranslatef(-0.5f, -1.0f, 0.0f);
- GL11.glTranslatef(0.7f, 0.25f, 0F + (float) (rotY * 0.007F));
- //GL11.glRotatef(-90, 0.0f, 1.0f, 0.0f);
- //GL11.glRotatef(-55, 0.0f, 0.0f, 1.0f);
- } else {
- isFirstPerson = true;
- GL11.glTranslatef(1F, 0F, 0F + (float) (rotY * 0.007F));
- //GL11.glTranslatef(2.3f, -4.0f, -1.0f);
- //GL11.glRotatef(-90, 0.0f, 0.8f, 0.0f);
- //GL11.glRotatef(5, 1.0f, 0.0f, 0.0f);
- }
- } else {
- //1st arg :up/down, 2nd arg :int/out, 3rd arg :left/right,
- GL11.glTranslatef(0.7f, 0.25f, 0F + (float) (rotY * 0.007F));
- //GL11.glRotatef(-90, 0.0f, 1.0f, 0.0f);
- //GL11.glRotatef(-55, 0.0f, 0.0f, 1.0f);
- }
- range = 0.5F;
- float moveAndRotateFlow = 0.5F - rate * range;
- //System.out.println(moveFlow);
- //shift model so it rotates centered
- GL11.glTranslatef(0.0F, 0.0F, 0.1F * moveAndRotateFlow);
- //rotate
- GL11.glRotatef(90F * moveAndRotateFlow, 0F, 1F, 0F);
- GL11.glRotatef(50F, 0F, 0F, 1F);
- GL11.glRotatef(90F * moveAndRotateFlow, 1F, 0F, 0F);
- GL11.glRotatef((float) (rotX * 0.3), 1F, 0F, 0F);
- GL11.glRotatef((float) (rotY * 0.3), 0F, 0F, 1F);
- //GL11.glTranslatef(1F, 1F, 1F);
- //GL11.glRotatef(180, 1, 0, 0);
- this.baseWeaponModel.render((Entity)data[1], 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0625f);
- GL11.glPopMatrix();
- }
- default:
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement