aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/openmodularturrets
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/openmodularturrets')
-rw-r--r--src/main/java/openmodularturrets/blocks/turretbases/TurretBaseEM.java45
-rw-r--r--src/main/java/openmodularturrets/blocks/turretbases/TurretBaseItemEM.java33
-rw-r--r--src/main/java/openmodularturrets/blocks/turretheads/TurretHeadEM.java68
-rw-r--r--src/main/java/openmodularturrets/blocks/turretheads/TurretHeadItemEM.java44
-rw-r--r--src/main/java/openmodularturrets/blocks/turretheads/TurretHeadItemRenderEM.java37
-rw-r--r--src/main/java/openmodularturrets/blocks/turretheads/TurretHeadRenderEM.java11
-rw-r--r--src/main/java/openmodularturrets/entity/projectiles/projectileEM.java123
-rw-r--r--src/main/java/openmodularturrets/entity/projectiles/projectileRenderEM.java74
-rw-r--r--src/main/java/openmodularturrets/tileentity/turret/TileTurretHeadEM.java67
-rw-r--r--src/main/java/openmodularturrets/tileentity/turretbase/TileTurretBaseEM.java63
10 files changed, 565 insertions, 0 deletions
diff --git a/src/main/java/openmodularturrets/blocks/turretbases/TurretBaseEM.java b/src/main/java/openmodularturrets/blocks/turretbases/TurretBaseEM.java
new file mode 100644
index 0000000000..78733d0599
--- /dev/null
+++ b/src/main/java/openmodularturrets/blocks/turretbases/TurretBaseEM.java
@@ -0,0 +1,45 @@
+package openmodularturrets.blocks.turretbases;
+
+import com.github.technus.tectech.TecTech;
+import com.github.technus.tectech.auxiliary.Reference;
+import openmodularturrets.handler.ConfigHandler;
+import openmodularturrets.tileentity.turretbase.TileTurretBaseEM;
+import cpw.mods.fml.common.registry.GameRegistry;
+import net.minecraft.block.Block;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.World;
+
+/**
+ * Created by Bass on 27/07/2017.
+ */
+public class TurretBaseEM extends BlockAbstractTurretBase {
+ private final int MaxCharge = ConfigHandler.getBaseTierFiveMaxCharge();
+ private final int MaxIO = ConfigHandler.getBaseTierFiveMaxIo();
+ public static TurretBaseEM INSTANCE;
+
+ public TurretBaseEM(){
+ super();
+ setCreativeTab(TecTech.mainTab);
+ this.setResistance(16);
+ this.setBlockName("turretBaseEM");
+ this.setStepSound(Block.soundTypeMetal);
+ this.setBlockTextureName(Reference.MODID+":turretBaseEM");
+ }
+
+ @Override
+ public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
+ return new TileTurretBaseEM(MaxCharge,MaxIO);
+ }
+
+ public void registerBlockIcons(IIconRegister p_149651_1_) {
+ super.registerBlockIcons(p_149651_1_);
+ this.blockIcon = p_149651_1_.registerIcon(Reference.MODID+":turretBaseEM");
+ }
+
+ public static void run() {
+ INSTANCE = new TurretBaseEM();
+ GameRegistry.registerBlock(INSTANCE, TurretBaseItemEM.class, INSTANCE.getUnlocalizedName());
+ GameRegistry.registerTileEntity(TileTurretBaseEM.class,"TileTurretBaseEM");
+ }
+}
diff --git a/src/main/java/openmodularturrets/blocks/turretbases/TurretBaseItemEM.java b/src/main/java/openmodularturrets/blocks/turretbases/TurretBaseItemEM.java
new file mode 100644
index 0000000000..36437fa741
--- /dev/null
+++ b/src/main/java/openmodularturrets/blocks/turretbases/TurretBaseItemEM.java
@@ -0,0 +1,33 @@
+package openmodularturrets.blocks.turretbases;
+
+import com.github.technus.tectech.CommonValues;
+import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
+
+import java.util.List;
+
+/**
+ * Created by Bass on 28/07/2017.
+ */
+public class TurretBaseItemEM extends ItemBlock {
+ public TurretBaseItemEM(Block b) {
+ super(b);
+ }
+
+ public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List list, boolean p_77624_4_) {
+ list.add(CommonValues.tecMark);
+ list.add("");
+ list.add(EnumChatFormatting.AQUA + "--" + StatCollector.translateToLocal("tooptip.energy.label") + "--");
+ list.add(StatCollector.translateToLocal("tooltip.rf.max") + ": " + EnumChatFormatting.WHITE + 1000000000);
+ list.add(StatCollector.translateToLocal("tooltip.rf.io") + ": " + EnumChatFormatting.WHITE + 50000);
+ list.add("");
+ list.add(EnumChatFormatting.GREEN + "--" + StatCollector.translateToLocal("tooltip.extras.label") + "--");
+ list.add(StatCollector.translateToLocal("tooltip.extras.addons.0"));
+ list.add("");
+ list.add(EnumChatFormatting.DARK_GRAY + StatCollector.translateToLocal("flavour.base.0"));
+ }
+}
diff --git a/src/main/java/openmodularturrets/blocks/turretheads/TurretHeadEM.java b/src/main/java/openmodularturrets/blocks/turretheads/TurretHeadEM.java
new file mode 100644
index 0000000000..255a5a56d3
--- /dev/null
+++ b/src/main/java/openmodularturrets/blocks/turretheads/TurretHeadEM.java
@@ -0,0 +1,68 @@
+package openmodularturrets.blocks.turretheads;
+
+import com.github.technus.tectech.TecTech;
+import com.github.technus.tectech.auxiliary.Reference;
+import openmodularturrets.tileentity.turret.TileTurretHeadEM;
+import cpw.mods.fml.common.registry.GameRegistry;
+import net.minecraft.block.Block;
+import net.minecraft.block.ITileEntityProvider;
+import net.minecraft.block.material.Material;
+import net.minecraft.entity.EnumCreatureType;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+import openmodularturrets.tileentity.turretbase.TurretBase;
+
+/**
+ * Created by Bass on 27/07/2017.
+ */
+public class TurretHeadEM extends Block implements ITileEntityProvider {
+ public static TurretHeadEM INSTANCE;
+
+ public TurretHeadEM(){
+ super(Material.glass);
+ this.setCreativeTab(TecTech.mainTab);
+ this.setBlockUnbreakable();
+ this.setResistance(6000000.0F);
+ this.setStepSound(Block.soundTypeMetal);
+ this.setBlockBounds(0.2F, 0.0F, 0.2F, 0.8F, 1F, 0.8F);
+ this.setBlockName("turretHeadEM");
+ this.setBlockTextureName(Reference.MODID+":turretHeadEM");
+ }
+
+ @Override
+ public int getRenderType() {
+ return -1;
+ }
+
+ @Override
+ public boolean isOpaqueCube() {
+ return false;
+ }
+
+ @Override
+ public boolean canPlaceBlockAt(World worldIn, int x, int y, int z) {
+ return worldIn.getTileEntity(x + 1, y, z) instanceof TurretBase ||
+ worldIn.getTileEntity(x - 1, y, z) instanceof TurretBase ||
+ worldIn.getTileEntity(x,y + 1, z) instanceof TurretBase ||
+ worldIn.getTileEntity(x,y - 1, z) instanceof TurretBase ||
+ worldIn.getTileEntity(x,y, z + 1) instanceof TurretBase ||
+ worldIn.getTileEntity(x,y, z - 1) instanceof TurretBase;
+ }
+
+ @Override
+ public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) {
+ return false;
+ }
+
+ @Override
+ public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
+ return new TileTurretHeadEM();
+ }
+
+ public static void run() {
+ INSTANCE = new TurretHeadEM();
+ GameRegistry.registerBlock(INSTANCE, TurretHeadItemEM.class, INSTANCE.getUnlocalizedName());
+ GameRegistry.registerTileEntity(TileTurretHeadEM.class,"TileTurretHeadEM");
+ }
+}
diff --git a/src/main/java/openmodularturrets/blocks/turretheads/TurretHeadItemEM.java b/src/main/java/openmodularturrets/blocks/turretheads/TurretHeadItemEM.java
new file mode 100644
index 0000000000..db2e034710
--- /dev/null
+++ b/src/main/java/openmodularturrets/blocks/turretheads/TurretHeadItemEM.java
@@ -0,0 +1,44 @@
+package openmodularturrets.blocks.turretheads;
+
+import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.item.ItemBlock;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.StatCollector;
+import openmodularturrets.handler.ConfigHandler;
+
+import java.text.DecimalFormat;
+import java.util.List;
+
+import static com.github.technus.tectech.CommonValues.tecMark;
+
+/**
+ * Created by Bass on 28/07/2017.
+ */
+public class TurretHeadItemEM extends ItemBlock {
+ private static final DecimalFormat df = new DecimalFormat("0.0");
+
+ public TurretHeadItemEM(Block b) {
+ super(b);
+ }
+
+ public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List list, boolean p_77624_4_) {
+ list.add(tecMark);
+ list.add("");
+ list.add(EnumChatFormatting.GOLD + "--" + StatCollector.translateToLocal("tooltip.info") + "--");
+ list.add(StatCollector.translateToLocal("tooltip.tier") + ": " + EnumChatFormatting.WHITE + "5");
+ list.add(StatCollector.translateToLocal("tooltip.range") + ": " + EnumChatFormatting.WHITE + ConfigHandler.getLaserTurretSettings().getRange());
+ list.add(StatCollector.translateToLocal("tooltip.accuracy") + ": " + EnumChatFormatting.WHITE + StatCollector.translateToLocal("turret.accuracy.high"));
+ list.add(StatCollector.translateToLocal("tooltip.ammo") + ": " + EnumChatFormatting.WHITE + StatCollector.translateToLocal("turret.ammo.4"));
+ list.add(StatCollector.translateToLocal("tooltip.tierRequired") + ": " + EnumChatFormatting.WHITE + StatCollector.translateToLocal("base.tier.5"));
+ list.add("");
+ list.add(EnumChatFormatting.DARK_PURPLE + "--" + StatCollector.translateToLocal("tooltip.damage.label") + "--");
+ list.add(StatCollector.translateToLocal("tooltip.damage.stat") + ": " + EnumChatFormatting.WHITE + (float)ConfigHandler.getLaserTurretSettings().getDamage() / 2.0F + " " + StatCollector.translateToLocal("tooltip.health"));
+ list.add(StatCollector.translateToLocal("tooltip.aoe") + ": " + EnumChatFormatting.WHITE + "0");
+ list.add(StatCollector.translateToLocal("tooltip.firerate") + ": " + EnumChatFormatting.WHITE + df.format((double)(20.0F / (float)ConfigHandler.getLaserTurretSettings().getFireRate())));
+ list.add(StatCollector.translateToLocal("tooltip.energy.stat") + ": " + EnumChatFormatting.WHITE + ConfigHandler.getLaserTurretSettings().getPowerUsage() + " RF");
+ list.add("");
+ list.add(EnumChatFormatting.DARK_GRAY + StatCollector.translateToLocal("flavour.turret.4"));
+ }
+}
diff --git a/src/main/java/openmodularturrets/blocks/turretheads/TurretHeadItemRenderEM.java b/src/main/java/openmodularturrets/blocks/turretheads/TurretHeadItemRenderEM.java
new file mode 100644
index 0000000000..fbfda7c6ee
--- /dev/null
+++ b/src/main/java/openmodularturrets/blocks/turretheads/TurretHeadItemRenderEM.java
@@ -0,0 +1,37 @@
+package openmodularturrets.blocks.turretheads;
+
+import openmodularturrets.tileentity.turret.TileTurretHeadEM;
+import net.minecraft.item.ItemStack;
+import net.minecraftforge.client.IItemRenderer;
+import openmodularturrets.client.render.models.ModelLaserTurret;
+import org.lwjgl.opengl.GL11;
+
+/**
+ * Created by Tec on 30.07.2017.
+ */
+public class TurretHeadItemRenderEM implements IItemRenderer {
+ private final TurretHeadRenderEM turretRenderer;
+ private final TileTurretHeadEM turretTileEntity;
+ private final ModelLaserTurret model;
+
+ public TurretHeadItemRenderEM(TurretHeadRenderEM turretRenderer, TileTurretHeadEM turretTileEntity) {
+ this.turretRenderer = turretRenderer;
+ this.turretTileEntity = turretTileEntity;
+ this.model = new ModelLaserTurret();
+ }
+
+ public boolean handleRenderType(ItemStack item, ItemRenderType type) {
+ return true;
+ }
+
+ public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) {
+ return true;
+ }
+
+ public void renderItem(ItemRenderType type, ItemStack item, Object... data) {
+ GL11.glPushMatrix();
+ GL11.glTranslated(-0.5D, -0.5D, -0.5D);
+ this.turretRenderer.renderTileEntityAt(this.turretTileEntity, 0.0D, 0.0D, 0.0D, 0.0F);
+ GL11.glPopMatrix();
+ }
+}
diff --git a/src/main/java/openmodularturrets/blocks/turretheads/TurretHeadRenderEM.java b/src/main/java/openmodularturrets/blocks/turretheads/TurretHeadRenderEM.java
new file mode 100644
index 0000000000..f0aa331645
--- /dev/null
+++ b/src/main/java/openmodularturrets/blocks/turretheads/TurretHeadRenderEM.java
@@ -0,0 +1,11 @@
+package openmodularturrets.blocks.turretheads;
+
+import openmodularturrets.client.render.renderers.blockitem.LaserTurretRenderer;
+
+/**
+ * Created by Bass on 28/07/2017.
+ */
+public class TurretHeadRenderEM extends LaserTurretRenderer {
+ public TurretHeadRenderEM() {
+ }
+}
diff --git a/src/main/java/openmodularturrets/entity/projectiles/projectileEM.java b/src/main/java/openmodularturrets/entity/projectiles/projectileEM.java
new file mode 100644
index 0000000000..1d118964ca
--- /dev/null
+++ b/src/main/java/openmodularturrets/entity/projectiles/projectileEM.java
@@ -0,0 +1,123 @@
+package openmodularturrets.entity.projectiles;
+
+import com.github.technus.tectech.TecTech;
+import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStack;
+import com.github.technus.tectech.elementalMatter.classes.cElementalInstanceStackMap;
+import com.github.technus.tectech.elementalMatter.definitions.dHadronDefinition;
+import com.github.technus.tectech.elementalMatter.definitions.eQuarkDefinition;
+import gregtech.api.GregTech_API;
+import gregtech.api.util.GT_Utility;
+import net.minecraft.block.Block;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.util.MovingObjectPosition;
+import net.minecraft.world.World;
+import openmodularturrets.entity.projectiles.damagesources.NormalDamageSource;
+import openmodularturrets.handler.ConfigHandler;
+import openmodularturrets.tileentity.turretbase.TurretBase;
+
+
+/**
+ * Created by Bass on 27/07/2017.
+ */
+public class projectileEM extends TurretProjectile {
+ public float gravity=0;
+ private TurretBase turretBase;
+
+ private boolean exotic, antiMatter;
+
+ private float massFactor;
+
+ public projectileEM(World par1World) {
+ super(par1World);
+ }
+
+ public projectileEM(World par1World, TurretBase turretBase, cElementalInstanceStackMap avalableEM) {
+ super(par1World);
+ this.turretBase = turretBase;
+ boolean onlyQuarks=true;
+ if(avalableEM!=null && avalableEM.hasStacks()) {
+ for (cElementalInstanceStack stack : avalableEM.values()) {
+ if (!(stack.definition instanceof eQuarkDefinition)) {
+ onlyQuarks = false;
+ }
+ }
+ if (onlyQuarks) {
+ avalableEM.clear();
+ } else {
+ cElementalInstanceStack consumeFromThis=avalableEM.get(TecTech.Rnd.nextInt(avalableEM.size()));
+ massFactor =consumeFromThis.definition.getMass()/ dHadronDefinition.hadron_n_.getMass();
+
+ if(consumeFromThis.definition.getType()>1 || consumeFromThis.definition.getType()<-1) exotic = true;
+ if(consumeFromThis.definition.getType()<0) antiMatter = true;
+
+ if (consumeFromThis.definition.getCharge() == 0) this.gravity = massFactor/100f;
+ else this.gravity = Math.min(0.0025F/Math.abs(consumeFromThis.definition.getCharge()),massFactor/100f);
+
+ antiMatter=true;//todo remove
+
+ avalableEM.removeAmount(false,consumeFromThis.definition.getStackForm(1));
+ }
+ }
+ //todo add subspace pollution
+ }
+
+ protected void onImpact(MovingObjectPosition movingobjectposition) {
+ if(this.ticksExisted > 1) {
+ if(movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) {
+ Block hitBlock = this.worldObj.getBlock(movingobjectposition.blockX, movingobjectposition.blockY, movingobjectposition.blockZ);
+ if(hitBlock != null){
+ if (hitBlock.getMaterial().isSolid() && TecTech.ModConfig.ENABLE_TURRET_EXPLOSIONS && antiMatter) {
+ this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "openmodularturrets:laserHit", ConfigHandler.getTurretSoundVolume(), TecTech.Rnd.nextFloat() + 0.5F);
+ GT_Utility.sendSoundToPlayers(worldObj, GregTech_API.sSoundList.get(209), 1.0F, -1.0F,
+ movingobjectposition.blockX,
+ movingobjectposition.blockY,
+ movingobjectposition.blockZ);
+ worldObj.createExplosion(null,
+ movingobjectposition.blockX + 0.5D,
+ movingobjectposition.blockY + 0.5D,
+ movingobjectposition.blockZ + 0.5D, (exotic?10:1) * TecTech.ModConfig.TURRET_EXPLOSION_FACTOR * massFactor * (isAmped?(amp_level*.1f)+1:1) * (ticksExisted/250f), true);
+ } else {
+ return;
+ }
+ }
+ }
+
+ if(movingobjectposition.entityHit != null && !this.worldObj.isRemote) {
+ this.worldObj.playSoundEffect(this.posX, this.posY, this.posZ, "openmodularturrets:laserHit", ConfigHandler.getTurretSoundVolume(), TecTech.Rnd.nextFloat() + 0.5F);
+ if(movingobjectposition.entityHit != null && !this.worldObj.isRemote) {
+ float damage = (exotic?10:1) * TecTech.ModConfig.TURRET_DAMAGE_FACTOR * massFactor * (isAmped?(amp_level*.1f)+1:1);
+
+ if(movingobjectposition.entityHit instanceof EntityPlayer) {
+ if(this.canDamagePlayer((EntityPlayer)movingobjectposition.entityHit)) {
+ movingobjectposition.entityHit.setFire((exotic?10:1)*2);
+ movingobjectposition.entityHit.attackEntityFrom(new NormalDamageSource("laser"), damage);
+ if(antiMatter) movingobjectposition.entityHit.hurtResistantTime = 0;
+ }
+ } else {
+ movingobjectposition.entityHit.setFire((exotic?10:1)*2);
+ movingobjectposition.entityHit.attackEntityFrom(new NormalDamageSource("laser"), damage);
+ if(antiMatter) movingobjectposition.entityHit.hurtResistantTime = 0;
+ }
+
+ if (TecTech.ModConfig.ENABLE_TURRET_EXPLOSIONS && antiMatter) {
+ GT_Utility.sendSoundToPlayers(worldObj, GregTech_API.sSoundList.get(209), 1.0F, -1.0F,
+ (int)movingobjectposition.entityHit.posX,
+ (int)movingobjectposition.entityHit.posY,
+ (int)movingobjectposition.entityHit.posZ);
+ worldObj.createExplosion(null,
+ movingobjectposition.entityHit.posX,
+ movingobjectposition.entityHit.posY,
+ movingobjectposition.entityHit.posZ, (exotic?10:1) * TecTech.ModConfig.TURRET_EXPLOSION_FACTOR * massFactor * (isAmped?(amp_level*.1f)+1:1) * (ticksExisted/250f), true);
+ }
+ }
+ }
+ this.setDead();
+ }
+ }
+
+ public void onEntityUpdate() {
+ if(this.ticksExisted >= 250) {
+ this.setDead();
+ }
+ }
+}
diff --git a/src/main/java/openmodularturrets/entity/projectiles/projectileRenderEM.java b/src/main/java/openmodularturrets/entity/projectiles/projectileRenderEM.java
new file mode 100644
index 0000000000..4ce942958b
--- /dev/null
+++ b/src/main/java/openmodularturrets/entity/projectiles/projectileRenderEM.java
@@ -0,0 +1,74 @@
+package openmodularturrets.entity.projectiles;
+
+import com.github.technus.tectech.auxiliary.Reference;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import net.minecraft.client.renderer.OpenGlHelper;
+import net.minecraft.client.renderer.Tessellator;
+import net.minecraft.client.renderer.entity.Render;
+import net.minecraft.entity.Entity;
+import net.minecraft.util.MathHelper;
+import net.minecraft.util.ResourceLocation;
+import org.lwjgl.opengl.GL11;
+
+/**
+ * Created by Tec on 29.07.2017.
+ */
+@SideOnly(Side.CLIENT)
+public class projectileRenderEM extends Render {
+ private static final ResourceLocation textures = new ResourceLocation(Reference.MODID + ":textures/entity/projectileEM.png");
+
+ public projectileRenderEM() {
+ }
+
+ private void render(projectileEM entity, double par2, double par4, double par6, float par9) {
+ this.bindEntityTexture(entity);
+ GL11.glPushMatrix();
+ GL11.glTranslatef((float)par2, (float)par4 + 0.3F, (float)par6);
+ GL11.glRotatef(entity.prevRotationYaw + (entity.rotationYaw - entity.prevRotationYaw) * par9 - 90.0F, 0.0F, 1.0F, 0.0F);
+ GL11.glRotatef(entity.prevRotationPitch + (entity.rotationPitch - entity.prevRotationPitch) * par9, 0.0F, 0.0F, 1.0F);
+ Tessellator var18 = Tessellator.instance;
+ byte b0 = 0;
+ float f2 = 0.0F;
+ float f3 = 0.5F;
+ float f4 = (float)(b0 * 10) / 32.0F;
+ float f5 = (float)(5 + b0 * 10) / 32.0F;
+ float f10 = 0.05625F;
+ GL11.glEnable('耺');
+ float f11 = - par9;
+ if(f11 > 0.0F) {
+ float i = -MathHelper.sin(f11 * 3.0F) * f11;
+ GL11.glRotatef(i, 0.0F, 0.0F, 1.0F);
+ }
+
+ GL11.glDisable(2896);
+ OpenGlHelper.setLightmapTextureCoords(OpenGlHelper.lightmapTexUnit, 240.0F, 240.0F);
+ GL11.glRotatef(45.0F, 1.0F, 0.0F, 0.0F);
+ GL11.glScalef(f10, f10, f10);
+ GL11.glTranslatef(0.0F, 0.0F, 0.0F);
+ GL11.glNormal3f(f10, 0.0F, 0.0F);
+
+ for(int var19 = 0; var19 < 4; ++var19) {
+ GL11.glRotatef(90.0F, 1.0F, 0.0F, 0.0F);
+ GL11.glNormal3f(0.0F, 0.0F, f10);
+ var18.startDrawingQuads();
+ var18.addVertexWithUV(-16.0D, -2.0D, 0.0D, (double)f2, (double)f4);
+ var18.addVertexWithUV(16.0D, -2.0D, 0.0D, (double)f3, (double)f4);
+ var18.addVertexWithUV(16.0D, 2.0D, 0.0D, (double)f3, (double)f5);
+ var18.addVertexWithUV(-16.0D, 2.0D, 0.0D, (double)f2, (double)f5);
+ var18.draw();
+ }
+
+ GL11.glEnable(2896);
+ GL11.glDisable('耺');
+ GL11.glPopMatrix();
+ }
+
+ protected ResourceLocation getEntityTexture(Entity par1Entity) {
+ return textures;
+ }
+
+ public void doRender(Entity par1Entity, double par2, double par4, double par6, float par8, float par9) {
+ render((projectileEM)par1Entity, par2, par4, par6, par9);
+ }
+}
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();
+ }
+}