From aebcf90026391bfd6c387db995c6de26b9bfb6f0 Mon Sep 17 00:00:00 2001 From: Boblet Date: Wed, 22 Jun 2022 16:58:48 +0200 Subject: [PATCH] iron furnace fix, artillery shells --- .../projectile/EntityArtilleryShell.java | 39 +++++++++- .../com/hbm/items/weapon/ItemAmmoArty.java | 73 ++++++++++++++----- .../machine/TileEntityFurnaceIron.java | 1 + .../turret/TileEntityTurretArty.java | 3 + 4 files changed, 94 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java b/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java index 59c7cb984..aa3932408 100644 --- a/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java +++ b/src/main/java/com/hbm/entity/projectile/EntityArtilleryShell.java @@ -1,10 +1,12 @@ package com.hbm.entity.projectile; -import com.hbm.entity.effect.EntityNukeTorex; import com.hbm.entity.logic.IChunkLoader; +import com.hbm.items.weapon.ItemAmmoArty; +import com.hbm.items.weapon.ItemAmmoArty.ArtilleryShell; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.MathHelper; import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.Vec3; @@ -33,12 +35,18 @@ public class EntityArtilleryShell extends EntityThrowableNT implements IChunkLoa private double targetX; private double targetY; private double targetZ; + private boolean shouldWhistle = false; private boolean didWhistle = false; public EntityArtilleryShell(World world) { super(world); this.ignoreFrustumCheck = true; } + + @Override + protected void entityInit() { + this.dataWatcher.addObject(10, new Integer(0)); + } @Override @SideOnly(Side.CLIENT) @@ -46,19 +54,36 @@ public class EntityArtilleryShell extends EntityThrowableNT implements IChunkLoa return true; } + public EntityArtilleryShell setType(int type) { + this.dataWatcher.updateObject(10, type); + return this; + } + + public ArtilleryShell getType() { + try { + return ItemAmmoArty.types[this.dataWatcher.getWatchableObjectInt(10)]; + } catch(Exception ex) { + return ItemAmmoArty.types[0]; + } + } + public void setTarget(int x, int y, int z) { this.targetX = x; this.targetY = y; this.targetZ = z; } + public void setWhistle(boolean whistle) { + this.shouldWhistle = whistle; + } + @Override public void onUpdate() { if(!worldObj.isRemote) { super.onUpdate(); - if(!didWhistle) { + if(!didWhistle && this.shouldWhistle) { double speed = Math.sqrt(this.motionX * this.motionX + this.motionZ * this.motionZ); double deltaX = this.posX - this.targetX; double deltaZ = this.posZ - this.targetZ; @@ -128,6 +153,16 @@ public class EntityArtilleryShell extends EntityThrowableNT implements IChunkLoa } } + @Override + public void writeEntityToNBT(NBTTagCompound nbt) { + super.writeEntityToNBT(nbt); + } + + @Override + public void readEntityFromNBT(NBTTagCompound nbt) { + super.readEntityFromNBT(nbt); + } + @Override protected float getAirDrag() { return 1.0F; diff --git a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java index 7fd5cd5e3..ca959594c 100644 --- a/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java +++ b/src/main/java/com/hbm/items/weapon/ItemAmmoArty.java @@ -2,9 +2,9 @@ package com.hbm.items.weapon; import java.util.List; +import com.hbm.entity.projectile.EntityArtilleryShell; import com.hbm.lib.RefStrings; import com.hbm.main.MainRegistry; -import com.hbm.util.EnumUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; @@ -13,45 +13,40 @@ import net.minecraft.creativetab.CreativeTabs; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; public class ItemAmmoArty extends Item { - public static enum EnumArtyType { - NORMAL("ammo_arty"), - CLASSIC("ammo_arty_classic"), - EXPLOSIVE("ammo_arty_he"), - MINI_NUKE("ammo_arty_mini_nuke"), - NUKE("ammo_arty_nuke"); - - private String name; - - private EnumArtyType(String texture) { - this.name = texture; - } - } + public static ArtilleryShell[] types = new ArtilleryShell[5]; + public int NORMAL = 0; + public int CLASSIC = 1; + public int EXPLOSIVE = 2; + public int MINI_NUKE = 3; + public int NUKE = 4; public ItemAmmoArty() { this.setHasSubtypes(true); this.setCreativeTab(MainRegistry.weaponTab); + init(); } @Override @SideOnly(Side.CLIENT) public void getSubItems(Item item, CreativeTabs tab, List list) { - for(int i = 0; i < EnumArtyType.values().length; i++) { + for(int i = 0; i < types.length; i++) { list.add(new ItemStack(item, 1, i)); } } - private IIcon[] icons = new IIcon[EnumArtyType.values().length]; + private IIcon[] icons = new IIcon[types.length]; @SideOnly(Side.CLIENT) public void registerIcons(IIconRegister reg) { - this.icons = new IIcon[EnumArtyType.values().length]; + this.icons = new IIcon[types.length]; for(int i = 0; i < icons.length; i++) { - this.icons[i] = reg.registerIcon(RefStrings.MODID + ":" + EnumArtyType.values()[i].name); + this.icons[i] = reg.registerIcon(RefStrings.MODID + ":" + types[i].name); } } @@ -63,7 +58,45 @@ public class ItemAmmoArty extends Item { @Override public String getUnlocalizedName(ItemStack stack) { - EnumArtyType num = EnumUtil.grabEnumSafely(EnumArtyType.class, stack.getItemDamage()); - return "item." + num.name; + return "item." + types[Math.abs(stack.getItemDamage()) % types.length].name; + } + + public static abstract class ArtilleryShell { + + String name; + + public ArtilleryShell(String name) { + this.name = name; + } + + public abstract void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop); + } + + private void init() { + this.types[NORMAL] = new ArtilleryShell("ammo_arty") { + @Override public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { + shell.setDead(); + } + }; + this.types[CLASSIC] = new ArtilleryShell("ammo_arty") { + @Override public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { + shell.setDead(); + } + }; + this.types[EXPLOSIVE] = new ArtilleryShell("ammo_arty") { + @Override public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { + shell.setDead(); + } + }; + this.types[MINI_NUKE] = new ArtilleryShell("ammo_arty") { + @Override public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { + shell.setDead(); + } + }; + this.types[NUKE] = new ArtilleryShell("ammo_arty") { + @Override public void onImpact(EntityArtilleryShell shell, MovingObjectPosition mop) { + shell.setDead(); + } + }; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java index 889ceeb15..2b8fcab0b 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityFurnaceIron.java @@ -202,6 +202,7 @@ public class TileEntityFurnaceIron extends TileEntityMachineBase implements IGUI } @Override + @SideOnly(Side.CLIENT) public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUIFurnaceIron(player.inventory, this); } diff --git a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java index 7728a7e13..050a1f007 100644 --- a/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java +++ b/src/main/java/com/hbm/tileentity/turret/TileEntityTurretArty.java @@ -14,6 +14,8 @@ import com.hbm.packet.PacketDispatcher; import com.hbm.tileentity.IGUIProvider; import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.client.gui.GuiScreen; import net.minecraft.entity.Entity; import net.minecraft.entity.player.EntityPlayer; @@ -367,6 +369,7 @@ public class TileEntityTurretArty extends TileEntityTurretBaseNT implements IGUI } @Override + @SideOnly(Side.CLIENT) public GuiScreen provideGUI(int ID, EntityPlayer player, World world, int x, int y, int z) { return new GUITurretArty(player.inventory, this); }