aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/openmodularturrets/tileentity
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/openmodularturrets/tileentity')
-rw-r--r--src/main/java/openmodularturrets/tileentity/turret/TileTurretHeadEM.java67
-rw-r--r--src/main/java/openmodularturrets/tileentity/turretbase/TileTurretBaseEM.java63
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();
+ }
+}