mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-01-25 10:32:49 +00:00
item rendering code is stored in the balls
This commit is contained in:
parent
32ab93f146
commit
77cb82b502
@ -15,4 +15,5 @@
|
||||
* Fixed hydroreactive items not exploding when submerged in water
|
||||
* Fixed fluid valves visually disconnecting when switching state
|
||||
* Fixed fluid valves no visually connecting when type is set
|
||||
* Fixed falling blocks spawned by nukes or impulse grenades dropping blocks that don't have drops
|
||||
* Fixed falling blocks spawned by nukes or impulse grenades dropping blocks that don't have drops
|
||||
* Added even more exception handling to CompStacks, hopefully fixing an incompatibility with Mana Metal
|
||||
@ -245,8 +245,9 @@ public class BossSpawnHandler {
|
||||
Vec3 vec;
|
||||
if(repell) {
|
||||
vec = Vec3.createVectorHelper(meteor.posX - player.posX, 0, meteor.posZ - player.posZ).normalize();
|
||||
vec.xCoord = vec.xCoord * meteorRand.nextDouble() - 0.5D;
|
||||
vec.zCoord = vec.zCoord * meteorRand.nextDouble() - 0.5D;
|
||||
double vel = meteorRand.nextDouble();
|
||||
vec.xCoord = vec.xCoord * vel;
|
||||
vec.zCoord = vec.zCoord * vel;
|
||||
meteor.safe = true;
|
||||
} else {
|
||||
vec = Vec3.createVectorHelper(meteorRand.nextDouble() - 0.5D, 0, 0);
|
||||
|
||||
@ -116,10 +116,17 @@ public class RecipesCommon {
|
||||
this.stacksize = 1;
|
||||
return;
|
||||
}
|
||||
this.item = stack.getItem();
|
||||
if(this.item == null) this.item = ModItems.nothing; //i'm going to bash some fuckard's head in
|
||||
this.stacksize = stack.stackSize;
|
||||
this.meta = stack.getItemDamage();
|
||||
try {
|
||||
this.item = stack.getItem();
|
||||
if(this.item == null) this.item = ModItems.nothing; //i'm going to bash some fuckard's head in
|
||||
this.stacksize = stack.stackSize;
|
||||
this.meta = stack.getItemDamage();
|
||||
} catch(Exception ex) {
|
||||
this.item = ModItems.nothing;
|
||||
if(!GeneralConfig.enableSilentCompStackErrors) {
|
||||
ex.printStackTrace();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public ComparableStack makeSingular() {
|
||||
|
||||
@ -7,12 +7,16 @@ public interface IMagazine {
|
||||
|
||||
/** What ammo is loaded currently */
|
||||
public Object getType(ItemStack stack);
|
||||
/** Sets the mag's ammo type */
|
||||
public void setType(ItemStack stack, Object type);
|
||||
/** How much ammo this mag can carry */
|
||||
public int getCapacity(ItemStack stack);
|
||||
/** How much ammo is currently loaded */
|
||||
public int getAmount(ItemStack stack);
|
||||
/** Sets the mag's ammo level */
|
||||
public void setAmount(ItemStack stack, int amount);
|
||||
/** If a reload can even be initiated, i.e. the player even has bullets to load */
|
||||
public boolean canReload(ItemStack stack, EntityPlayer player);
|
||||
/** The action done at the end of one reload cycle, either loading one shell or replacing the whole mag */
|
||||
public void reloadAction(ItemStack stack, EntityPlayer player);
|
||||
/** The stack that should be displayed for the ammo HUD */
|
||||
|
||||
@ -12,9 +12,63 @@ public class MagazineRevolverDrum extends MagazineStandardBase {
|
||||
super(index, capacity);
|
||||
}
|
||||
|
||||
/** Returns true if the player has the same ammo if partially loaded, or any valid ammo if not */
|
||||
@Override
|
||||
public boolean canReload(ItemStack stack, EntityPlayer player) {
|
||||
|
||||
for(ItemStack slot : player.inventory.mainInventory) {
|
||||
|
||||
if(slot != null) {
|
||||
if(this.getAmount(stack) == 0) {
|
||||
for(BulletConfig config : this.acceptedBullets) {
|
||||
if(config.ammo.matchesRecipe(slot, true)) return true;
|
||||
}
|
||||
} else {
|
||||
BulletConfig config = (BulletConfig) this.getType(stack);
|
||||
if(config == null) { config = this.acceptedBullets.get(0); this.setType(stack, config); }
|
||||
if(config.ammo.matchesRecipe(slot, true)) return true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/** Reloads all rounds at once. If the mag is empty, the mag's type will change to the first valid ammo type */
|
||||
@Override
|
||||
public void reloadAction(ItemStack stack, EntityPlayer player) {
|
||||
|
||||
for(int i = 0; i < player.inventory.mainInventory.length; i++) {
|
||||
ItemStack slot = player.inventory.mainInventory[i];
|
||||
|
||||
if(slot != null) {
|
||||
|
||||
//mag is empty, assume next best type
|
||||
if(this.getAmount(stack) == 0) {
|
||||
|
||||
for(BulletConfig config : this.acceptedBullets) {
|
||||
if(config.ammo.matchesRecipe(slot, true)) {
|
||||
this.setType(stack, config);
|
||||
int toLoad = Math.min(this.getCapacity(stack), slot.stackSize);
|
||||
this.setAmount(stack, toLoad);
|
||||
player.inventory.decrStackSize(i, toLoad);
|
||||
break;
|
||||
}
|
||||
}
|
||||
//mag has a type set, only load that
|
||||
} else {
|
||||
BulletConfig config = (BulletConfig) this.getType(stack);
|
||||
if(config == null) { config = this.acceptedBullets.get(0); this.setType(stack, config); } //fixing broken NBT
|
||||
|
||||
if(config.ammo.matchesRecipe(slot, true)) {
|
||||
int alreadyLoaded = this.getAmount(stack);
|
||||
int toLoad = Math.min(this.getCapacity(stack) - alreadyLoaded, slot.stackSize);
|
||||
this.setAmount(stack, toLoad + alreadyLoaded);
|
||||
player.inventory.decrStackSize(i, toLoad);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@ -9,7 +9,7 @@ import com.hbm.items.weapon.sedna.Receiver;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
/** Base class for typical magazines, i.e. ones that hold bullets, shells, grenades, etc, any ammo item */
|
||||
/** Base class for typical magazines, i.e. ones that hold bullets, shells, grenades, etc, any ammo item. Type methods deal with BulletConfigs */
|
||||
public abstract class MagazineStandardBase implements IMagazine {
|
||||
|
||||
public static final String KEY_MAG_COUNT = "magcount";
|
||||
@ -33,12 +33,19 @@ public abstract class MagazineStandardBase implements IMagazine {
|
||||
@Override
|
||||
public Object getType(ItemStack stack) {
|
||||
int type = getMagType(stack, index);
|
||||
if(type >= 0 && type < BulletConfig.configs.size()) {
|
||||
return BulletConfig.configs.get(type);
|
||||
if(type >= 0 && type < acceptedBullets.size()) {
|
||||
return acceptedBullets.get(type);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setType(ItemStack stack, Object type) {
|
||||
if(!(type instanceof BulletConfig)) return;
|
||||
int i = acceptedBullets.indexOf(type);
|
||||
if(i >= 0) setMagType(stack, index, i);
|
||||
}
|
||||
|
||||
@Override public int getCapacity(ItemStack stack) { return capacity; }
|
||||
@Override public int getAmount(ItemStack stack) { return getMagCount(stack, index); }
|
||||
@Override public void setAmount(ItemStack stack, int amount) { setMagCount(stack, index, amount); }
|
||||
|
||||
@ -104,6 +104,7 @@ import com.hbm.render.item.*;
|
||||
import com.hbm.render.item.ItemRenderMissileGeneric.RenderMissileType;
|
||||
import com.hbm.render.item.block.*;
|
||||
import com.hbm.render.item.weapon.*;
|
||||
import com.hbm.render.item.weapon.sedna.*;
|
||||
import com.hbm.render.loader.HmfModelLoader;
|
||||
import com.hbm.render.model.ModelPigeon;
|
||||
import com.hbm.render.tileentity.*;
|
||||
@ -602,6 +603,8 @@ public class ClientProxy extends ServerProxy {
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_coilgun, new ItemRenderWeaponCoilgun());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_cryocannon, new ItemRenderWeaponCryoCannon());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_congolake, new ItemRenderWeaponCongo());
|
||||
//SEDNA
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.gun_debug, new ItemRenderDebug());
|
||||
//multitool
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.multitool_dig, new ItemRenderMultitool());
|
||||
MinecraftForgeClient.registerItemRenderer(ModItems.multitool_silk, new ItemRenderMultitool());
|
||||
|
||||
@ -1071,8 +1071,8 @@ public class ModEventHandlerClient {
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SubscribeEvent
|
||||
public void onMouseClicked(InputEvent.KeyInputEvent event) {
|
||||
|
||||
public void onMouseClicked(InputEvent.MouseInputEvent event) {
|
||||
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
if(GeneralConfig.enableKeybindOverlap && (mc.currentScreen == null || mc.currentScreen.allowUserInput)) {
|
||||
boolean state = Mouse.getEventButtonState();
|
||||
@ -1083,7 +1083,7 @@ public class ModEventHandlerClient {
|
||||
KeyBinding key = (KeyBinding) o;
|
||||
|
||||
if(key.getKeyCode() == keyCode && KeyBinding.hash.lookup(key.getKeyCode()) != key) {
|
||||
|
||||
|
||||
key.pressed = state;
|
||||
if(state) {
|
||||
key.pressTime++;
|
||||
|
||||
@ -8,7 +8,9 @@ import com.hbm.config.RadiationConfig;
|
||||
import com.hbm.handler.pollution.PollutionHandler.PollutionType;
|
||||
import com.hbm.items.armor.IArmorDisableModel;
|
||||
import com.hbm.items.armor.IArmorDisableModel.EnumPlayerPart;
|
||||
import com.hbm.items.weapon.sedna.ItemGunBase;
|
||||
import com.hbm.packet.PermaSyncHandler;
|
||||
import com.hbm.render.item.weapon.sedna.ItemRenderWeaponBase;
|
||||
import com.hbm.render.model.ModelMan;
|
||||
import com.hbm.world.biome.BiomeGenCraterBase;
|
||||
|
||||
@ -33,11 +35,15 @@ import net.minecraft.util.MovingObjectPosition;
|
||||
import net.minecraft.util.Vec3;
|
||||
import net.minecraft.world.World;
|
||||
import net.minecraft.world.biome.BiomeGenBase;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
import net.minecraftforge.client.IItemRenderer.ItemRenderType;
|
||||
import net.minecraftforge.client.MinecraftForgeClient;
|
||||
import net.minecraftforge.client.event.DrawBlockHighlightEvent;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent;
|
||||
import net.minecraftforge.client.event.EntityViewRenderEvent.FogColors;
|
||||
import net.minecraftforge.client.event.EntityViewRenderEvent.FogDensity;
|
||||
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
|
||||
import net.minecraftforge.client.event.RenderHandEvent;
|
||||
import net.minecraftforge.client.event.RenderPlayerEvent;
|
||||
import net.minecraftforge.common.ForgeModContainer;
|
||||
|
||||
@ -409,6 +415,24 @@ public class ModEventHandlerRenderer {
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public void onRenderHand(RenderHandEvent event) {
|
||||
|
||||
EntityPlayer player = Minecraft.getMinecraft().thePlayer;
|
||||
ItemStack held = player.getHeldItem();
|
||||
|
||||
if(held != null) {
|
||||
IItemRenderer renderer = MinecraftForgeClient.getItemRenderer(held, ItemRenderType.EQUIPPED_FIRST_PERSON);
|
||||
|
||||
if(renderer instanceof ItemRenderWeaponBase) {
|
||||
renderer.renderItem(ItemRenderType.FIRST_PERSON_MAP, held, null /*RenderBlocks*/, player);
|
||||
//Minecraft.getMinecraft().entityRenderer.itemRenderer.renderItemInFirstPerson(event.partialTicks);
|
||||
|
||||
event.setCanceled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean fogInit = false;
|
||||
private static int fogX;
|
||||
private static int fogZ;
|
||||
|
||||
@ -951,6 +951,7 @@ public class ResourceManager {
|
||||
public static final ResourceLocation congolake_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/congolake.png");
|
||||
public static final ResourceLocation lilmac_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac.png");
|
||||
public static final ResourceLocation lilmac_scope_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lilmac_scope.png");
|
||||
public static final ResourceLocation debug_gun_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/debug_gun.png");
|
||||
|
||||
public static final ResourceLocation lance_tex = new ResourceLocation(RefStrings.MODID, "textures/models/weapons/lance.png");
|
||||
|
||||
|
||||
@ -0,0 +1,44 @@
|
||||
package com.hbm.render.item.weapon.sedna;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.hbm.main.ResourceManager;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
public class ItemRenderDebug extends ItemRenderWeaponBase {
|
||||
|
||||
@Override
|
||||
public void renderFirstPerson(ItemStack stack) {
|
||||
|
||||
double scale = 0.125D;
|
||||
GL11.glScaled(scale, scale, scale);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.debug_gun_tex);
|
||||
ResourceManager.lilmac.renderPart("Gun");
|
||||
ResourceManager.lilmac.renderPart("Cylinder");
|
||||
ResourceManager.lilmac.renderPart("Bullets");
|
||||
ResourceManager.lilmac.renderPart("Casings");
|
||||
ResourceManager.lilmac.renderPart("Pivot");
|
||||
ResourceManager.lilmac.renderPart("Hammer");
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void renderOther(ItemStack stack, ItemRenderType type) {
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
|
||||
GL11.glShadeModel(GL11.GL_SMOOTH);
|
||||
Minecraft.getMinecraft().renderEngine.bindTexture(ResourceManager.debug_gun_tex);
|
||||
ResourceManager.lilmac.renderPart("Gun");
|
||||
ResourceManager.lilmac.renderPart("Cylinder");
|
||||
ResourceManager.lilmac.renderPart("Bullets");
|
||||
ResourceManager.lilmac.renderPart("Casings");
|
||||
ResourceManager.lilmac.renderPart("Pivot");
|
||||
ResourceManager.lilmac.renderPart("Hammer");
|
||||
GL11.glShadeModel(GL11.GL_FLAT);
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,82 @@
|
||||
package com.hbm.render.item.weapon.sedna;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
import org.lwjgl.util.glu.Project;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.client.IItemRenderer;
|
||||
|
||||
public abstract class ItemRenderWeaponBase implements IItemRenderer {
|
||||
|
||||
@Override
|
||||
public boolean handleRenderType(ItemStack item, ItemRenderType type) {
|
||||
return type != ItemRenderType.FIRST_PERSON_MAP;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
|
||||
return helper == ItemRendererHelper.ENTITY_BOBBING || helper == ItemRendererHelper.ENTITY_ROTATION;
|
||||
}
|
||||
|
||||
@SuppressWarnings("incomplete-switch") //shut the fuck up
|
||||
@Override
|
||||
public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
|
||||
GL11.glPushMatrix();
|
||||
switch(type) {
|
||||
case EQUIPPED_FIRST_PERSON: setupFirstPerson(item); renderFirstPerson(item); break;
|
||||
case EQUIPPED: setupThirdPerson(item); renderOther(item, type); break;
|
||||
case INVENTORY: setupInv(item); renderOther(item, type); break;
|
||||
case ENTITY: setupEntity(item); renderOther(item, type); break;
|
||||
}
|
||||
GL11.glPopMatrix();
|
||||
}
|
||||
|
||||
public void setupFirstPerson(ItemStack stack) {
|
||||
GL11.glMatrixMode(GL11.GL_PROJECTION);
|
||||
GL11.glLoadIdentity();
|
||||
float f1 = 0.07F;
|
||||
Minecraft mc = Minecraft.getMinecraft();
|
||||
float farPlaneDistance = mc.gameSettings.renderDistanceChunks * 16;
|
||||
float interp = 0;
|
||||
|
||||
Project.gluPerspective(1, (float)mc.displayWidth / (float)mc.displayHeight, 0.05F, farPlaneDistance * 2.0F);
|
||||
|
||||
|
||||
GL11.glMatrixMode(GL11.GL_MODELVIEW);
|
||||
GL11.glLoadIdentity();
|
||||
|
||||
GL11.glPushMatrix();
|
||||
//this.hurtCameraEffect(interp);
|
||||
|
||||
if (mc.gameSettings.thirdPersonView == 0 && !mc.renderViewEntity.isPlayerSleeping() && !mc.gameSettings.hideGUI && !mc.playerController.enableEverythingIsScrewedUpMode())
|
||||
{
|
||||
//this.enableLightmap((double)p_78476_1_);
|
||||
this.renderItem(ItemRenderType.EQUIPPED_FIRST_PERSON, stack, null, mc.thePlayer);
|
||||
//this.disableLightmap((double)p_78476_1_);
|
||||
}
|
||||
|
||||
GL11.glPopMatrix();
|
||||
|
||||
//GL11.glRotated(90, 0, 1, 0);
|
||||
//GL11.glRotated(40, -1, 0, 0);
|
||||
}
|
||||
|
||||
public void setupThirdPerson(ItemStack stack) {
|
||||
|
||||
}
|
||||
|
||||
public void setupInv(ItemStack stack) {
|
||||
GL11.glScaled(1, 1, -1);
|
||||
GL11.glTranslated(8, 8, 0);
|
||||
GL11.glRotated(225, 0, 0, 1);
|
||||
GL11.glRotated(90, 0, 1, 0);
|
||||
}
|
||||
|
||||
public void setupEntity(ItemStack stack) {
|
||||
|
||||
}
|
||||
|
||||
public abstract void renderFirstPerson(ItemStack stack);
|
||||
public abstract void renderOther(ItemStack stack, ItemRenderType type);
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user