mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
Add support for shotgun reloading animations
Add support for alternate reload animations when loading from completely empty Add animations for Samuel The Big Fucking Shotgun
This commit is contained in:
parent
67c4273ebf
commit
d979fd2e09
@ -49,17 +49,18 @@ public class GunConfiguration implements Cloneable {
|
|||||||
//the target FOV/multiplied FOV modifier when sneaking
|
//the target FOV/multiplied FOV modifier when sneaking
|
||||||
public float zoomFOV = 0.0F;
|
public float zoomFOV = 0.0F;
|
||||||
|
|
||||||
//how long the reload animation will play
|
|
||||||
//MUST BE GREATER THAN ZERO ! ! !
|
|
||||||
public int reloadDuration;
|
|
||||||
//duration of every animation cycle, used also for how quickly a burst fire rifle can fire
|
//duration of every animation cycle, used also for how quickly a burst fire rifle can fire
|
||||||
public int firingDuration;
|
public int firingDuration;
|
||||||
//sound path to the reload sound
|
|
||||||
public String reloadSound = "";
|
|
||||||
//sound path to the shooting sound
|
//sound path to the shooting sound
|
||||||
public String firingSound = "";
|
public String firingSound = "";
|
||||||
public float firingVolume = 1.0F;
|
public float firingVolume = 1.0F;
|
||||||
public float firingPitch = 1.0F;
|
public float firingPitch = 1.0F;
|
||||||
|
//how long the reload animation will play
|
||||||
|
//MUST BE GREATER THAN ZERO ! ! !
|
||||||
|
public int reloadDuration;
|
||||||
|
public int emptyReloadAdditionalDuration;
|
||||||
|
//sound path to the reload sound
|
||||||
|
public String reloadSound = "";
|
||||||
//whether the reload sound should be played at the beginning or at the end of the reload
|
//whether the reload sound should be played at the beginning or at the end of the reload
|
||||||
public boolean reloadSoundEnd = true;
|
public boolean reloadSoundEnd = true;
|
||||||
public String equipSound = "";
|
public String equipSound = "";
|
||||||
@ -68,6 +69,8 @@ public class GunConfiguration implements Cloneable {
|
|||||||
public int ammoCap;
|
public int ammoCap;
|
||||||
//0 does not allow direct reload, 1 is full clip, 2 is single bullet
|
//0 does not allow direct reload, 1 is full clip, 2 is single bullet
|
||||||
public int reloadType;
|
public int reloadType;
|
||||||
|
// If the animations are designed to be sequential, the last frame will be held until the next anmiation starts
|
||||||
|
public boolean reloadAnimationsSequential = false;
|
||||||
//whether or not the infinity enchantment should work
|
//whether or not the infinity enchantment should work
|
||||||
public boolean allowsInfinity;
|
public boolean allowsInfinity;
|
||||||
//whether the ammo count should be displayed
|
//whether the ammo count should be displayed
|
||||||
|
|||||||
@ -17,6 +17,7 @@ import com.hbm.items.ModItems;
|
|||||||
import com.hbm.items.ItemAmmoEnums.Ammo4Gauge;
|
import com.hbm.items.ItemAmmoEnums.Ammo4Gauge;
|
||||||
import com.hbm.lib.HbmCollection;
|
import com.hbm.lib.HbmCollection;
|
||||||
import com.hbm.lib.HbmCollection.EnumGunManufacturer;
|
import com.hbm.lib.HbmCollection.EnumGunManufacturer;
|
||||||
|
import com.hbm.main.ResourceManager;
|
||||||
import com.hbm.lib.ModDamageSource;
|
import com.hbm.lib.ModDamageSource;
|
||||||
import com.hbm.packet.AuxParticlePacketNT;
|
import com.hbm.packet.AuxParticlePacketNT;
|
||||||
import com.hbm.packet.PacketDispatcher;
|
import com.hbm.packet.PacketDispatcher;
|
||||||
@ -24,7 +25,6 @@ import com.hbm.particle.SpentCasing;
|
|||||||
import com.hbm.particle.SpentCasing.CasingType;
|
import com.hbm.particle.SpentCasing.CasingType;
|
||||||
import com.hbm.potion.HbmPotion;
|
import com.hbm.potion.HbmPotion;
|
||||||
import com.hbm.render.anim.BusAnimation;
|
import com.hbm.render.anim.BusAnimation;
|
||||||
import com.hbm.render.anim.BusAnimationKeyframe;
|
|
||||||
import com.hbm.render.anim.BusAnimationSequence;
|
import com.hbm.render.anim.BusAnimationSequence;
|
||||||
import com.hbm.render.anim.HbmAnimations.AnimType;
|
import com.hbm.render.anim.HbmAnimations.AnimType;
|
||||||
import com.hbm.render.util.RenderScreenOverlay.Crosshair;
|
import com.hbm.render.util.RenderScreenOverlay.Crosshair;
|
||||||
@ -84,6 +84,18 @@ public class Gun4GaugeFactory {
|
|||||||
config.name = "ks23";
|
config.name = "ks23";
|
||||||
config.manufacturer = EnumGunManufacturer.TULSKY;
|
config.manufacturer = EnumGunManufacturer.TULSKY;
|
||||||
|
|
||||||
|
config.emptyReloadAdditionalDuration = 5;
|
||||||
|
|
||||||
|
config.reloadAnimationsSequential = true;
|
||||||
|
|
||||||
|
config.loadAnimations = i -> {
|
||||||
|
config.animations.put(AnimType.CYCLE, ResourceManager.ks23_anim.get("Fire"));
|
||||||
|
config.animations.put(AnimType.RELOAD, ResourceManager.ks23_anim.get("ReloadStart"));
|
||||||
|
config.animations.put(AnimType.RELOAD_EMPTY, ResourceManager.ks23_anim.get("ReloadEmptyStart"));
|
||||||
|
config.animations.put(AnimType.RELOAD_CYCLE, ResourceManager.ks23_anim.get("Reload"));
|
||||||
|
config.animations.put(AnimType.RELOAD_END, ResourceManager.ks23_anim.get("ReloadEnd"));
|
||||||
|
};
|
||||||
|
|
||||||
config.config = HbmCollection.g4;
|
config.config = HbmCollection.g4;
|
||||||
|
|
||||||
return config;
|
return config;
|
||||||
@ -203,7 +215,7 @@ public class Gun4GaugeFactory {
|
|||||||
|
|
||||||
PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true);
|
PotionEffect eff = new PotionEffect(HbmPotion.phosphorus.id, 20 * 20, 0, true);
|
||||||
eff.getCurativeItems().clear();
|
eff.getCurativeItems().clear();
|
||||||
bullet.effects = new ArrayList();
|
bullet.effects = new ArrayList<PotionEffect>();
|
||||||
bullet.effects.add(new PotionEffect(eff));
|
bullet.effects.add(new PotionEffect(eff));
|
||||||
|
|
||||||
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
bullet.bntImpact = (bulletnt, x, y, z, sideHit) -> {
|
||||||
@ -494,7 +506,7 @@ public class Gun4GaugeFactory {
|
|||||||
BulletConfigFactory.nuclearExplosion(creature, 0, 0, 0, ExplosionNukeSmall.PARAMS_TOTS);
|
BulletConfigFactory.nuclearExplosion(creature, 0, 0, 0, ExplosionNukeSmall.PARAMS_TOTS);
|
||||||
|
|
||||||
bulletnt.worldObj.removeEntity(creature);
|
bulletnt.worldObj.removeEntity(creature);
|
||||||
bulletnt.worldObj.unloadEntities(new ArrayList() {{ add(creature); }});
|
bulletnt.worldObj.unloadEntities(new ArrayList<EntityCreature>() {{ add(creature); }});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -376,10 +376,13 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu
|
|||||||
|
|
||||||
ammo.stacksize = toConsume;
|
ammo.stacksize = toConsume;
|
||||||
setMag(stack, getMag(stack) + toAdd);
|
setMag(stack, getMag(stack) + toAdd);
|
||||||
if (getMag(stack) >= mainConfig.ammoCap)
|
if (getMag(stack) >= mainConfig.ammoCap) {
|
||||||
setIsReloading(stack, false);
|
setIsReloading(stack, false);
|
||||||
else
|
PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.RELOAD_END.ordinal()), (EntityPlayerMP) player);
|
||||||
|
} else {
|
||||||
resetReloadCycle(player, stack);
|
resetReloadCycle(player, stack);
|
||||||
|
PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.RELOAD_CYCLE.ordinal()), (EntityPlayerMP) player);
|
||||||
|
}
|
||||||
|
|
||||||
if(hasLoaded && mainConfig.reloadSoundEnd)
|
if(hasLoaded && mainConfig.reloadSoundEnd)
|
||||||
world.playSoundAtEntity(player, mainConfig.reloadSound, 1.0F, 1.0F);
|
world.playSoundAtEntity(player, mainConfig.reloadSound, 1.0F, 1.0F);
|
||||||
@ -403,8 +406,8 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu
|
|||||||
|
|
||||||
if(player.isSneaking() && hasInfinity(stack, mainConfig)) {
|
if(player.isSneaking() && hasInfinity(stack, mainConfig)) {
|
||||||
|
|
||||||
if(this.getMag(stack) == mainConfig.ammoCap) {
|
if(getMag(stack) == mainConfig.ammoCap) {
|
||||||
this.setMag(stack, 0);
|
setMag(stack, 0);
|
||||||
this.resetAmmoType(stack, world, player);
|
this.resetAmmoType(stack, world, player);
|
||||||
world.playSoundAtEntity(player, "tile.piston.out", 1.0F, 1.0F);
|
world.playSoundAtEntity(player, "tile.piston.out", 1.0F, 1.0F);
|
||||||
}
|
}
|
||||||
@ -412,7 +415,7 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(this.getMag(stack) == mainConfig.ammoCap)
|
if(getMag(stack) == mainConfig.ammoCap)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
if(getIsReloading(stack))
|
if(getIsReloading(stack))
|
||||||
@ -421,8 +424,10 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu
|
|||||||
if(!mainConfig.reloadSoundEnd)
|
if(!mainConfig.reloadSoundEnd)
|
||||||
world.playSoundAtEntity(player, mainConfig.reloadSound, 1.0F, 1.0F);
|
world.playSoundAtEntity(player, mainConfig.reloadSound, 1.0F, 1.0F);
|
||||||
|
|
||||||
if(!world.isRemote)
|
if(!world.isRemote) {
|
||||||
PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(AnimType.RELOAD.ordinal()), (EntityPlayerMP) player);
|
AnimType reloadType = getMag(stack) == 0 ? AnimType.RELOAD_EMPTY : AnimType.RELOAD;
|
||||||
|
PacketDispatcher.wrapper.sendTo(new GunAnimationPacket(reloadType.ordinal()), (EntityPlayerMP) player);
|
||||||
|
}
|
||||||
|
|
||||||
setIsReloading(stack, true);
|
setIsReloading(stack, true);
|
||||||
resetReloadCycle(player, stack);
|
resetReloadCycle(player, stack);
|
||||||
@ -829,7 +834,9 @@ public class ItemGunBase extends Item implements IHoldableWeapon, IItemHUD, IEqu
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static int getReloadDuration(EntityPlayer player, ItemStack stack) {
|
public static int getReloadDuration(EntityPlayer player, ItemStack stack) {
|
||||||
int cycle = ((ItemGunBase) stack.getItem()).mainConfig.reloadDuration;
|
GunConfiguration config = ((ItemGunBase) stack.getItem()).mainConfig;
|
||||||
|
int cycle = config.reloadDuration;
|
||||||
|
if (getMag(stack) == 0) cycle += config.emptyReloadAdditionalDuration;
|
||||||
if(isTrenchMaster(player)) return Math.max(1, cycle / 2);
|
if(isTrenchMaster(player)) return Math.max(1, cycle / 2);
|
||||||
return cycle;
|
return cycle;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -542,7 +542,7 @@ public class ClientProxy extends ServerProxy {
|
|||||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_bio_revolver, new ItemRenderBioRevolver());
|
MinecraftForgeClient.registerItemRenderer(ModItems.gun_bio_revolver, new ItemRenderBioRevolver());
|
||||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_deagle, new ItemRenderWeaponObj());
|
MinecraftForgeClient.registerItemRenderer(ModItems.gun_deagle, new ItemRenderWeaponObj());
|
||||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_supershotgun, new ItemRenderWeaponShotty());
|
MinecraftForgeClient.registerItemRenderer(ModItems.gun_supershotgun, new ItemRenderWeaponShotty());
|
||||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_ks23, new ItemRenderWeaponObj());
|
MinecraftForgeClient.registerItemRenderer(ModItems.gun_ks23, new ItemRenderWeaponKS23());
|
||||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderWeaponObj());
|
MinecraftForgeClient.registerItemRenderer(ModItems.gun_flamer, new ItemRenderWeaponObj());
|
||||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_flechette, new ItemRenderWeaponObj());
|
MinecraftForgeClient.registerItemRenderer(ModItems.gun_flechette, new ItemRenderWeaponObj());
|
||||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_quadro, new ItemRenderWeaponQuadro());
|
MinecraftForgeClient.registerItemRenderer(ModItems.gun_quadro, new ItemRenderWeaponQuadro());
|
||||||
|
|||||||
@ -322,6 +322,9 @@ public class ModEventHandlerClient {
|
|||||||
if(animation == null)
|
if(animation == null)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
|
if(animation.holdLastFrame)
|
||||||
|
continue;
|
||||||
|
|
||||||
long time = System.currentTimeMillis() - animation.startMillis;
|
long time = System.currentTimeMillis() - animation.startMillis;
|
||||||
|
|
||||||
if(time > animation.animation.getDuration())
|
if(time > animation.animation.getDuration())
|
||||||
|
|||||||
@ -847,6 +847,7 @@ public class ResourceManager {
|
|||||||
public static final HashMap<String, BusAnimation> python_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/python.json"));
|
public static final HashMap<String, BusAnimation> python_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/python.json"));
|
||||||
public static final HashMap<String, BusAnimation> cursed_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/cursed.json"));
|
public static final HashMap<String, BusAnimation> cursed_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/cursed.json"));
|
||||||
public static final HashMap<String, BusAnimation> novac_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/novac.json"));
|
public static final HashMap<String, BusAnimation> novac_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/novac.json"));
|
||||||
|
public static final HashMap<String, BusAnimation> ks23_anim = AnimationLoader.load(new ResourceLocation(RefStrings.MODID, "models/weapons/animations/ks23.json"));
|
||||||
|
|
||||||
public static final IModelCustom lance = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lance.obj"));
|
public static final IModelCustom lance = new HFRWavefrontObject(new ResourceLocation(RefStrings.MODID, "models/weapons/lance.obj"));
|
||||||
|
|
||||||
|
|||||||
@ -58,10 +58,18 @@ public class GunAnimationPacket implements IMessage {
|
|||||||
return null;
|
return null;
|
||||||
|
|
||||||
AnimType type = AnimType.values()[m.type];
|
AnimType type = AnimType.values()[m.type];
|
||||||
BusAnimation animation = ((ItemGunBase) stack.getItem()).getAnimation(stack, type);
|
ItemGunBase base = (ItemGunBase) stack.getItem();
|
||||||
|
|
||||||
|
BusAnimation animation = base.getAnimation(stack, type);
|
||||||
|
|
||||||
|
// Fallback to regular reload if no empty reload animation
|
||||||
|
if(animation == null && type == AnimType.RELOAD_EMPTY) {
|
||||||
|
animation = base.getAnimation(stack, AnimType.RELOAD);
|
||||||
|
}
|
||||||
|
|
||||||
if(animation != null) {
|
if(animation != null) {
|
||||||
HbmAnimations.hotbar[slot] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation);
|
boolean isReloadAnimation = type == AnimType.RELOAD || type == AnimType.RELOAD_CYCLE || type == AnimType.RELOAD_EMPTY;
|
||||||
|
HbmAnimations.hotbar[slot] = new Animation(stack.getItem().getUnlocalizedName(), System.currentTimeMillis(), animation, isReloadAnimation && base.mainConfig.reloadAnimationsSequential);
|
||||||
}
|
}
|
||||||
|
|
||||||
} catch(Exception x) { }
|
} catch(Exception x) { }
|
||||||
|
|||||||
@ -18,14 +18,20 @@ public class HbmAnimations {
|
|||||||
public static final Animation[] hotbar = new Animation[9];
|
public static final Animation[] hotbar = new Animation[9];
|
||||||
|
|
||||||
public static enum AnimType {
|
public static enum AnimType {
|
||||||
RELOAD, //animation for every reload cycle
|
RELOAD, //animation for reloading the weapon
|
||||||
CYCLE, //animation for every firing cycle
|
RELOAD_EMPTY, //animation for reloading from empty
|
||||||
ALT_CYCLE, //animation for alt fire cycles
|
RELOAD_CYCLE, //animation that plays for every individual round (for shotguns and similar single round loading weapons)
|
||||||
SPINUP, //animation for actionstart
|
RELOAD_END, //animation for transitioning from our RELOAD_CYCLE to idle
|
||||||
SPINDOWN, //animation for actionend
|
CYCLE, //animation for every firing cycle
|
||||||
EQUIP //animation for drawing the weapon
|
ALT_CYCLE, //animation for alt fire cycles
|
||||||
|
SPINUP, //animation for actionstart
|
||||||
|
SPINDOWN, //animation for actionend
|
||||||
|
EQUIP //animation for drawing the weapon
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// A NOTE ON SHOTGUN STYLE RELOADS
|
||||||
|
// Make sure the RELOAD and RELOAD_EMPTY adds shells, not just RELOAD_CYCLE, they all proc once for each loaded shell
|
||||||
|
|
||||||
public static class Animation {
|
public static class Animation {
|
||||||
|
|
||||||
//the "name" of the animation slot. if the item has a different key than
|
//the "name" of the animation slot. if the item has a different key than
|
||||||
@ -35,12 +41,21 @@ public class HbmAnimations {
|
|||||||
public long startMillis;
|
public long startMillis;
|
||||||
//the animation bus
|
//the animation bus
|
||||||
public BusAnimation animation;
|
public BusAnimation animation;
|
||||||
|
// If set, don't cancel this animation when the timer ends, instead wait for the next to start
|
||||||
|
public boolean holdLastFrame = false;
|
||||||
|
|
||||||
public Animation(String key, long startMillis, BusAnimation animation) {
|
public Animation(String key, long startMillis, BusAnimation animation) {
|
||||||
this.key = key;
|
this.key = key;
|
||||||
this.startMillis = startMillis;
|
this.startMillis = startMillis;
|
||||||
this.animation = animation;
|
this.animation = animation;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Animation(String key, long startMillis, BusAnimation animation, boolean holdLastFrame) {
|
||||||
|
this.key = key;
|
||||||
|
this.startMillis = startMillis;
|
||||||
|
this.animation = animation;
|
||||||
|
this.holdLastFrame = holdLastFrame;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Animation getRelevantAnim() {
|
public static Animation getRelevantAnim() {
|
||||||
|
|||||||
@ -0,0 +1,144 @@
|
|||||||
|
package com.hbm.render.item.weapon;
|
||||||
|
|
||||||
|
import java.awt.Color;
|
||||||
|
|
||||||
|
import org.lwjgl.opengl.GL11;
|
||||||
|
|
||||||
|
import com.hbm.main.ResourceManager;
|
||||||
|
import com.hbm.particle.SpentCasing;
|
||||||
|
import com.hbm.render.anim.HbmAnimations;
|
||||||
|
|
||||||
|
import net.minecraft.client.Minecraft;
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraftforge.client.IItemRenderer;
|
||||||
|
|
||||||
|
public class ItemRenderWeaponKS23 implements IItemRenderer {
|
||||||
|
|
||||||
|
public ItemRenderWeaponKS23() { }
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
|
||||||
|
switch(type) {
|
||||||
|
case EQUIPPED:
|
||||||
|
case EQUIPPED_FIRST_PERSON:
|
||||||
|
case ENTITY:
|
||||||
|
case INVENTORY:
|
||||||
|
return true;
|
||||||
|
default: return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
|
||||||
|
|
||||||
|
return type == ItemRenderType.ENTITY && (helper == ItemRendererHelper.ENTITY_ROTATION || helper == ItemRendererHelper.ENTITY_BOBBING);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
GL11.glDisable(GL11.GL_CULL_FACE);
|
||||||
|
|
||||||
|
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
|
||||||
|
|
||||||
|
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ks23_tex);
|
||||||
|
|
||||||
|
switch(type) {
|
||||||
|
|
||||||
|
case EQUIPPED_FIRST_PERSON:
|
||||||
|
|
||||||
|
GL11.glTranslatef(1.0F, 0.5F, -0.25F);
|
||||||
|
GL11.glRotatef(25F, 0.0F, 0.0F, 1.0F);
|
||||||
|
GL11.glRotatef(-100, 0.0F, 1.0F, 0.0F);
|
||||||
|
GL11.glScaled(0.75, 0.75, 0.75);
|
||||||
|
|
||||||
|
if(player.isSneaking()) {
|
||||||
|
GL11.glRotatef(4.5F, 0.0F, 1.0F, 0.0F);
|
||||||
|
GL11.glRotatef(-2F, 0.0F, 0.0F, 1.0F);
|
||||||
|
GL11.glTranslatef(-0.9F, 0.2F, 0.325F);
|
||||||
|
}
|
||||||
|
|
||||||
|
HbmAnimations.applyRelevantTransformation("Body");
|
||||||
|
|
||||||
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||||
|
|
||||||
|
ResourceManager.ks23.renderPart("Body");
|
||||||
|
ResourceManager.ks23.renderPart("Trigger");
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
HbmAnimations.applyRelevantTransformation("Bolt");
|
||||||
|
ResourceManager.ks23.renderPart("Bolt");
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
HbmAnimations.applyRelevantTransformation("Guard");
|
||||||
|
ResourceManager.ks23.renderPart("Guard");
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
|
||||||
|
GL11.glPushMatrix();
|
||||||
|
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.casings_tex);
|
||||||
|
|
||||||
|
HbmAnimations.applyRelevantTransformation("Shell");
|
||||||
|
|
||||||
|
// TODO: Fetch the correct colors to render on the shells
|
||||||
|
Color shellColor = new Color(SpentCasing.COLOR_CASE_4GA);
|
||||||
|
GL11.glColor3f(shellColor.getRed() / 255F, shellColor.getGreen() / 255F, shellColor.getBlue() / 255F);
|
||||||
|
ResourceManager.ks23.renderPart("Shell");
|
||||||
|
|
||||||
|
Color shellForeColor = new Color(0xFFD800);
|
||||||
|
GL11.glColor3f(shellForeColor.getRed() / 255F, shellForeColor.getGreen() / 255F, shellForeColor.getBlue() / 255F);
|
||||||
|
ResourceManager.ks23.renderPart("ShellFore");
|
||||||
|
|
||||||
|
GL11.glColor3f(1F, 1F, 1F);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
|
||||||
|
GL11.glShadeModel(GL11.GL_FLAT);
|
||||||
|
|
||||||
|
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
|
||||||
|
return;
|
||||||
|
|
||||||
|
case EQUIPPED:
|
||||||
|
|
||||||
|
GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F);
|
||||||
|
GL11.glRotatef(-170F, 0.0F, 1.0F, 0.0F);
|
||||||
|
GL11.glTranslatef(-0.5F, 0.0F, -0.9F);
|
||||||
|
GL11.glScaled(0.5, 0.5, 0.5);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case ENTITY:
|
||||||
|
|
||||||
|
GL11.glTranslatef(0.3F, 0.2F, 0.0F);
|
||||||
|
GL11.glScaled(0.5, 0.5, 0.5);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
case INVENTORY:
|
||||||
|
|
||||||
|
GL11.glEnable(GL11.GL_LIGHTING);
|
||||||
|
|
||||||
|
GL11.glTranslatef(7F, 8F, 0.0F);
|
||||||
|
GL11.glScaled(4, 4, -4);
|
||||||
|
GL11.glRotatef(-90, 0, 1, 0);
|
||||||
|
GL11.glRotatef(-135F, 1.0F, 0.0F, 0.0F);
|
||||||
|
|
||||||
|
break;
|
||||||
|
|
||||||
|
default: break;
|
||||||
|
}
|
||||||
|
|
||||||
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||||
|
ResourceManager.ks23.renderAll();
|
||||||
|
GL11.glShadeModel(GL11.GL_FLAT);
|
||||||
|
|
||||||
|
GL11.glEnable(GL11.GL_CULL_FACE);
|
||||||
|
GL11.glPopMatrix();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@ -23,7 +23,7 @@ public class ItemRenderWeaponObj implements IItemRenderer {
|
|||||||
case ENTITY:
|
case ENTITY:
|
||||||
return true;
|
return true;
|
||||||
case INVENTORY:
|
case INVENTORY:
|
||||||
return item.getItem() == ModItems.gun_ks23 || item.getItem() == ModItems.gun_hk69
|
return item.getItem() == ModItems.gun_hk69
|
||||||
|| item.getItem() == ModItems.gun_flamer || item.getItem() == ModItems.gun_deagle
|
|| item.getItem() == ModItems.gun_flamer || item.getItem() == ModItems.gun_deagle
|
||||||
|| item.getItem() == ModItems.gun_flechette || item.getItem() == ModItems.gun_quadro;
|
|| item.getItem() == ModItems.gun_flechette || item.getItem() == ModItems.gun_quadro;
|
||||||
default: return false;
|
default: return false;
|
||||||
@ -50,9 +50,6 @@ public class ItemRenderWeaponObj implements IItemRenderer {
|
|||||||
if(item.getItem() == ModItems.gun_deagle)
|
if(item.getItem() == ModItems.gun_deagle)
|
||||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.universal_bright);
|
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.universal_bright);
|
||||||
|
|
||||||
if(item.getItem() == ModItems.gun_ks23)
|
|
||||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.ks23_tex);
|
|
||||||
|
|
||||||
if(item.getItem() == ModItems.gun_flamer)
|
if(item.getItem() == ModItems.gun_flamer)
|
||||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flamer_tex);
|
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.flamer_tex);
|
||||||
|
|
||||||
@ -90,19 +87,6 @@ public class ItemRenderWeaponObj implements IItemRenderer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if(item.getItem() == ModItems.gun_ks23) {
|
|
||||||
GL11.glTranslatef(1.0F, 0.5F, -0.25F);
|
|
||||||
GL11.glRotatef(25F, 0.0F, 0.0F, 1.0F);
|
|
||||||
GL11.glRotatef(-10F, 0.0F, 1.0F, 0.0F);
|
|
||||||
GL11.glScaled(0.75, 0.75, 0.75);
|
|
||||||
|
|
||||||
if(player.isSneaking()) {
|
|
||||||
GL11.glRotatef(4.5F, 0.0F, 1.0F, 0.0F);
|
|
||||||
GL11.glRotatef(-2.5F, 0.0F, 0.0F, 1.0F);
|
|
||||||
GL11.glTranslatef(0.3F, 0.2F, -0.875F);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(item.getItem() == ModItems.gun_flamer) {
|
if(item.getItem() == ModItems.gun_flamer) {
|
||||||
GL11.glTranslatef(1.0F, 0.0F, -0.15F);
|
GL11.glTranslatef(1.0F, 0.0F, -0.15F);
|
||||||
GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F);
|
GL11.glRotatef(90F, 0.0F, 1.0F, 0.0F);
|
||||||
@ -169,13 +153,6 @@ public class ItemRenderWeaponObj implements IItemRenderer {
|
|||||||
GL11.glScaled(0.15, 0.15, 0.15);
|
GL11.glScaled(0.15, 0.15, 0.15);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(item.getItem() == ModItems.gun_ks23) {
|
|
||||||
GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F);
|
|
||||||
GL11.glRotatef(-80F, 0.0F, 1.0F, 0.0F);
|
|
||||||
GL11.glTranslatef(0.9F, 0.0F, -0.5F);
|
|
||||||
GL11.glScaled(0.5, 0.5, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(item.getItem() == ModItems.gun_flamer) {
|
if(item.getItem() == ModItems.gun_flamer) {
|
||||||
GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F);
|
GL11.glRotatef(20F, 1.0F, 0.0F, 1.0F);
|
||||||
GL11.glRotatef(10F, 0.0F, 1.0F, 0.0F);
|
GL11.glRotatef(10F, 0.0F, 1.0F, 0.0F);
|
||||||
@ -213,11 +190,6 @@ public class ItemRenderWeaponObj implements IItemRenderer {
|
|||||||
GL11.glScaled(0.25, 0.25, 0.25);
|
GL11.glScaled(0.25, 0.25, 0.25);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(item.getItem() == ModItems.gun_ks23) {
|
|
||||||
GL11.glTranslatef(0.3F, 0.2F, 0.0F);
|
|
||||||
GL11.glScaled(0.5, 0.5, 0.5);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(item.getItem() == ModItems.gun_flamer) {
|
if(item.getItem() == ModItems.gun_flamer) {
|
||||||
GL11.glTranslatef(0.25F, 0.2F, 0.0F);
|
GL11.glTranslatef(0.25F, 0.2F, 0.0F);
|
||||||
GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F);
|
GL11.glRotatef(-90F, 0.0F, 1.0F, 0.0F);
|
||||||
@ -257,12 +229,6 @@ public class ItemRenderWeaponObj implements IItemRenderer {
|
|||||||
GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F);
|
GL11.glRotatef(-45F, 1.0F, 0.0F, 0.0F);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(item.getItem() == ModItems.gun_ks23) {
|
|
||||||
GL11.glTranslatef(7F, 8F, 0.0F);
|
|
||||||
GL11.glScaled(4, 4, -4);
|
|
||||||
GL11.glRotatef(-135F, 0.0F, 0.0F, 1.0F);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(item.getItem() == ModItems.gun_flamer) {
|
if(item.getItem() == ModItems.gun_flamer) {
|
||||||
GL11.glScaled(2.0, 2.0, -2.0);
|
GL11.glScaled(2.0, 2.0, -2.0);
|
||||||
GL11.glTranslatef(4.0F, 5.0F, 0.0F);
|
GL11.glTranslatef(4.0F, 5.0F, 0.0F);
|
||||||
@ -303,12 +269,6 @@ public class ItemRenderWeaponObj implements IItemRenderer {
|
|||||||
GL11.glShadeModel(GL11.GL_FLAT);
|
GL11.glShadeModel(GL11.GL_FLAT);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(item.getItem() == ModItems.gun_ks23) {
|
|
||||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
|
||||||
ResourceManager.ks23.renderAll();
|
|
||||||
GL11.glShadeModel(GL11.GL_FLAT);
|
|
||||||
}
|
|
||||||
|
|
||||||
if(item.getItem() == ModItems.gun_flamer) {
|
if(item.getItem() == ModItems.gun_flamer) {
|
||||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||||
ResourceManager.flamer.renderAll();
|
ResourceManager.flamer.renderAll();
|
||||||
|
|||||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
Loading…
x
Reference in New Issue
Block a user