diff options
Diffstat (limited to 'src/main/java/openmodularturrets/tileentity')
-rw-r--r-- | src/main/java/openmodularturrets/tileentity/turret/TileTurretHeadEM.java | 67 | ||||
-rw-r--r-- | src/main/java/openmodularturrets/tileentity/turretbase/TileTurretBaseEM.java | 63 |
2 files changed, 130 insertions, 0 deletions
diff --git a/src/main/java/openmodularturrets/tileentity/turret/TileTurretHeadEM.java b/src/main/java/openmodularturrets/tileentity/turret/TileTurretHeadEM.java new file mode 100644 index 0000000000..277d692f47 --- /dev/null +++ b/src/main/java/openmodularturrets/tileentity/turret/TileTurretHeadEM.java @@ -0,0 +1,67 @@ +package openmodularturrets.tileentity.turret; + +import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStackMap; +import com.github.technus.tectech.thing.item.DebugContainer_EM; +import net.minecraft.entity.Entity; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.world.World; +import openmodularturrets.entity.projectiles.TurretProjectile; +import openmodularturrets.entity.projectiles.projectileEM; +import openmodularturrets.handler.ConfigHandler; +import openmodularturrets.tileentity.turretbase.TileTurretBaseEM; +import openmodularturrets.tileentity.turrets.TurretHead; +import openmodularturrets.util.TurretHeadUtil; + +/** + * Created by Bass on 27/07/2017. + */ +public class TileTurretHeadEM extends TurretHead{ + private cElementalInstanceStackMap hatchContentPointer; + + public TileTurretHeadEM() { + } + + public int getTurretRange() { + return ConfigHandler.getLaserTurretSettings().getRange()<<1; + } + + public int getTurretPowerUsage() { + return ConfigHandler.getLaserTurretSettings().getPowerUsage()<<4; + } + + public int getTurretFireRate() { + return (int)Math.ceil(ConfigHandler.getLaserTurretSettings().getFireRate()/2f); + } + + public double getTurretAccuracy() { + return (int)Math.ceil(ConfigHandler.getLaserTurretSettings().getAccuracy() / 10.0F); + } + + @Override + public void updateEntity() { + if(!worldObj.isRemote && base instanceof TileTurretBaseEM) + hatchContentPointer =((TileTurretBaseEM) base).getContainerHandler(); + super.updateEntity(); + } + + public boolean requiresAmmo() { + return hatchContentPointer == null || !hatchContentPointer.hasStacks(); + } + + public boolean requiresSpecificAmmo() { + return true;//to enable failure in shooting when there is no EM to use + } + + public Item getAmmo() { + return DebugContainer_EM.INSTANCE;//Placeholder item that cannot be achieved, yet still usable for debug + } + + public final TurretProjectile createProjectile(World world, Entity target, ItemStack ammo) { + return new projectileEM(world, TurretHeadUtil.getTurretBase(worldObj, xCoord, yCoord, zCoord), hatchContentPointer); + } + + public String getLaunchSoundEffect() { + return "laser"; + } +} diff --git a/src/main/java/openmodularturrets/tileentity/turretbase/TileTurretBaseEM.java b/src/main/java/openmodularturrets/tileentity/turretbase/TileTurretBaseEM.java new file mode 100644 index 0000000000..84620a6e71 --- /dev/null +++ b/src/main/java/openmodularturrets/tileentity/turretbase/TileTurretBaseEM.java @@ -0,0 +1,63 @@ +package openmodularturrets.tileentity.turretbase; + +import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStackMap; +import com.github.technus.tectech.thing.metaTileEntity.hatch.GT_MetaTileEntity_Hatch_InputElemental; +import cpw.mods.fml.common.Optional; +import gregtech.api.interfaces.tileentity.IGregTechTileEntity; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import openmodularturrets.tileentity.turretbase.TurretBaseTierFiveTileEntity; + +import static com.github.technus.tectech.thing.casing.GT_Block_CasingsTT.textureOffset; + +/** + * Created by Bass on 27/07/2017. + */ + +public class TileTurretBaseEM extends TurretBaseTierFiveTileEntity { + public TileTurretBaseEM(int MaxEnergyStorage, int MaxIO) { + super(MaxEnergyStorage, MaxIO); + } + + @Optional.Method( + modid = "OpenComputers" + ) + public String getComponentName() { + return "turretBaseEM"; + } + + public final cElementalInstanceStackMap getContainerHandler() { + World worldIn = getWorldObj(); + TileEntity te; + if ((te = worldIn.getTileEntity(xCoord + 1, yCoord, zCoord)) instanceof IGregTechTileEntity && + ((IGregTechTileEntity) te).getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_InputElemental) + return getFromHatch((GT_MetaTileEntity_Hatch_InputElemental) ((IGregTechTileEntity) te).getMetaTileEntity()); + + if ((te = worldIn.getTileEntity(xCoord - 1, yCoord, zCoord)) instanceof IGregTechTileEntity && + ((IGregTechTileEntity) te).getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_InputElemental) + return getFromHatch((GT_MetaTileEntity_Hatch_InputElemental) ((IGregTechTileEntity) te).getMetaTileEntity()); + + if ((te = worldIn.getTileEntity(xCoord, yCoord + 1, zCoord)) instanceof IGregTechTileEntity && + ((IGregTechTileEntity) te).getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_InputElemental) + return getFromHatch((GT_MetaTileEntity_Hatch_InputElemental) ((IGregTechTileEntity) te).getMetaTileEntity()); + + if ((te = worldIn.getTileEntity(xCoord, yCoord - 1, zCoord)) instanceof IGregTechTileEntity && + ((IGregTechTileEntity) te).getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_InputElemental) + return getFromHatch((GT_MetaTileEntity_Hatch_InputElemental) ((IGregTechTileEntity) te).getMetaTileEntity()); + + if ((te = worldIn.getTileEntity(xCoord, yCoord, zCoord + 1)) instanceof IGregTechTileEntity && + ((IGregTechTileEntity) te).getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_InputElemental) + return getFromHatch((GT_MetaTileEntity_Hatch_InputElemental) ((IGregTechTileEntity) te).getMetaTileEntity()); + + if ((te = worldIn.getTileEntity(xCoord, yCoord, zCoord - 1)) instanceof IGregTechTileEntity && + ((IGregTechTileEntity) te).getMetaTileEntity() instanceof GT_MetaTileEntity_Hatch_InputElemental) + return getFromHatch((GT_MetaTileEntity_Hatch_InputElemental) ((IGregTechTileEntity) te).getMetaTileEntity()); + + return null; + } + + private cElementalInstanceStackMap getFromHatch(GT_MetaTileEntity_Hatch_InputElemental hatch) { + hatch.mMachineBlock = textureOffset + 4; + return hatch.getContainerHandler(); + } +} |