diff options
author | Tec <daniel112092@gmail.com> | 2018-05-06 14:58:02 +0200 |
---|---|---|
committer | Tec <daniel112092@gmail.com> | 2018-05-06 14:58:02 +0200 |
commit | eb760a8d0984709c22918180e8c5f9fa2f561914 (patch) | |
tree | 2d35ee1a0e96db761c173f0cf080483d4f710673 /src/main/java/com | |
parent | 26e5342ae016978a9b5cb83c7e9ebdf886e59add (diff) | |
download | GT5-Unofficial-eb760a8d0984709c22918180e8c5f9fa2f561914.tar.gz GT5-Unofficial-eb760a8d0984709c22918180e8c5f9fa2f561914.tar.bz2 GT5-Unofficial-eb760a8d0984709c22918180e8c5f9fa2f561914.zip |
Fix security exception by refactoring package
Diffstat (limited to 'src/main/java/com')
14 files changed, 643 insertions, 4 deletions
diff --git a/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/TT_turret_loader.java b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/TT_turret_loader.java new file mode 100644 index 0000000000..2ab7a37ecd --- /dev/null +++ b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/TT_turret_loader.java @@ -0,0 +1,23 @@ +package com.github.technus.tectech.compatibility.openmodularturrets; + +import com.github.technus.tectech.compatibility.openmodularturrets.blocks.turretheads.TurretHeadEM; +import com.github.technus.tectech.compatibility.openmodularturrets.blocks.turretheads.TurretHeadItemRenderEM; +import com.github.technus.tectech.compatibility.openmodularturrets.blocks.turretheads.TurretHeadRenderEM; +import com.github.technus.tectech.compatibility.openmodularturrets.entity.projectiles.projectileEM; +import com.github.technus.tectech.compatibility.openmodularturrets.entity.projectiles.projectileRenderEM; +import cpw.mods.fml.client.registry.ClientRegistry; +import cpw.mods.fml.client.registry.RenderingRegistry; +import net.minecraft.item.Item; +import net.minecraftforge.client.MinecraftForgeClient; +import com.github.technus.tectech.compatibility.openmodularturrets.tileentity.turret.TileTurretHeadEM; + +public class TT_turret_loader implements Runnable { + @Override + public void run() { + TurretHeadRenderEM turretHeadRenderEM=new TurretHeadRenderEM(); + ClientRegistry.bindTileEntitySpecialRenderer(TileTurretHeadEM.class, turretHeadRenderEM); + MinecraftForgeClient.registerItemRenderer(Item.getItemFromBlock(TurretHeadEM.INSTANCE), new TurretHeadItemRenderEM(turretHeadRenderEM, new TileTurretHeadEM())); + + RenderingRegistry.registerEntityRenderingHandler(projectileEM.class, new projectileRenderEM()); + } +} diff --git a/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretbases/TurretBaseEM.java b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretbases/TurretBaseEM.java new file mode 100644 index 0000000000..10a5aba625 --- /dev/null +++ b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretbases/TurretBaseEM.java @@ -0,0 +1,47 @@ +package com.github.technus.tectech.compatibility.openmodularturrets.blocks.turretbases; + +import com.github.technus.tectech.Reference; +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; +import openmodularturrets.blocks.turretbases.BlockAbstractTurretBase; +import openmodularturrets.handler.ConfigHandler; +import com.github.technus.tectech.compatibility.openmodularturrets.tileentity.turretbase.TileTurretBaseEM; + +import static com.github.technus.tectech.loader.gui.CreativeTabTecTech.creativeTabTecTech; + +/** + * Created by Tec 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(){ + setCreativeTab(creativeTabTecTech); + setResistance(16); + setBlockName("turretBaseEM"); + setStepSound(Block.soundTypeMetal); + setBlockTextureName(Reference.MODID+":turretBaseEM"); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileTurretBaseEM(MaxCharge,MaxIO); + } + + @Override + public void registerBlockIcons(IIconRegister p_149651_1_) { + super.registerBlockIcons(p_149651_1_); + 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/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretbases/TurretBaseItemEM.java b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretbases/TurretBaseItemEM.java new file mode 100644 index 0000000000..af0be0e1f5 --- /dev/null +++ b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretbases/TurretBaseItemEM.java @@ -0,0 +1,34 @@ +package com.github.technus.tectech.compatibility.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 Tec on 28/07/2017. + */ +public class TurretBaseItemEM extends ItemBlock { + public TurretBaseItemEM(Block block) { + super(block); + } + + @Override + public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List list, boolean p_77624_4_) { + list.add(CommonValues.TEC_MARK_EM); + 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/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretheads/TurretHeadEM.java b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretheads/TurretHeadEM.java new file mode 100644 index 0000000000..1e34af422e --- /dev/null +++ b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretheads/TurretHeadEM.java @@ -0,0 +1,68 @@ +package com.github.technus.tectech.compatibility.openmodularturrets.blocks.turretheads; + +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 com.github.technus.tectech.compatibility.openmodularturrets.tileentity.turret.TileTurretHeadEM; +import openmodularturrets.tileentity.turretbase.TurretBase; + +import static com.github.technus.tectech.loader.gui.CreativeTabTecTech.creativeTabTecTech; + +/** + * Created by Tec on 27/07/2017. + */ +public class TurretHeadEM extends Block implements ITileEntityProvider { + public static TurretHeadEM INSTANCE; + + public TurretHeadEM(){ + super(Material.glass); + setCreativeTab(creativeTabTecTech); + setBlockUnbreakable(); + setResistance(6000000.0F); + setStepSound(Block.soundTypeMetal); + setBlockBounds(0.2F, 0.0F, 0.2F, 0.8F, 1F, 0.8F); + 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/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretheads/TurretHeadItemEM.java b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretheads/TurretHeadItemEM.java new file mode 100644 index 0000000000..8aa598c440 --- /dev/null +++ b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretheads/TurretHeadItemEM.java @@ -0,0 +1,45 @@ +package com.github.technus.tectech.compatibility.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.TEC_MARK_EM; + +/** + * Created by Tec on 28/07/2017. + */ +public class TurretHeadItemEM extends ItemBlock { + private static final DecimalFormat df = new DecimalFormat("0.0"); + + public TurretHeadItemEM(Block block) { + super(block); + } + + @Override + public void addInformation(ItemStack p_77624_1_, EntityPlayer p_77624_2_, List list, boolean p_77624_4_) { + list.add(TEC_MARK_EM); + 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/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretheads/TurretHeadItemRenderEM.java b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretheads/TurretHeadItemRenderEM.java new file mode 100644 index 0000000000..ceca057900 --- /dev/null +++ b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretheads/TurretHeadItemRenderEM.java @@ -0,0 +1,40 @@ +package com.github.technus.tectech.compatibility.openmodularturrets.blocks.turretheads; + +import net.minecraft.item.ItemStack; +import net.minecraftforge.client.IItemRenderer; +import openmodularturrets.client.render.models.ModelLaserTurret; +import com.github.technus.tectech.compatibility.openmodularturrets.tileentity.turret.TileTurretHeadEM; +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; + model = new ModelLaserTurret(); + } + + @Override + public boolean handleRenderType(ItemStack item, ItemRenderType type) { + return true; + } + + @Override + public boolean shouldUseRenderHelper(ItemRenderType type, ItemStack item, ItemRendererHelper helper) { + return true; + } + + @Override + public void renderItem(ItemRenderType type, ItemStack item, Object... data) { + GL11.glPushMatrix(); + GL11.glTranslated(-0.5D, -0.5D, -0.5D); + turretRenderer.renderTileEntityAt(turretTileEntity, 0.0D, 0.0D, 0.0D, 0.0F); + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretheads/TurretHeadRenderEM.java b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretheads/TurretHeadRenderEM.java new file mode 100644 index 0000000000..f407257eab --- /dev/null +++ b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/blocks/turretheads/TurretHeadRenderEM.java @@ -0,0 +1,8 @@ +package com.github.technus.tectech.compatibility.openmodularturrets.blocks.turretheads; + +import openmodularturrets.client.render.renderers.blockitem.LaserTurretRenderer; + +/** + * Created by Tec on 28/07/2017. + */ +public class TurretHeadRenderEM extends LaserTurretRenderer {} diff --git a/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/entity/projectiles/projectileEM.java b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/entity/projectiles/projectileEM.java new file mode 100644 index 0000000000..c22c6c4b95 --- /dev/null +++ b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/entity/projectiles/projectileEM.java @@ -0,0 +1,159 @@ +package com.github.technus.tectech.compatibility.openmodularturrets.entity.projectiles; + +import com.github.technus.tectech.TecTech; +import com.github.technus.tectech.mechanics.elementalMatter.core.cElementalInstanceStackMap; +import com.github.technus.tectech.mechanics.elementalMatter.core.stacks.cElementalInstanceStack; +import com.github.technus.tectech.mechanics.elementalMatter.definitions.complex.hadron.dHadronDefinition; +import com.github.technus.tectech.mechanics.elementalMatter.definitions.primitive.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.LaserProjectile; +import openmodularturrets.entity.projectiles.damagesources.NormalDamageSource; +import openmodularturrets.handler.ConfigHandler; +import openmodularturrets.tileentity.turretbase.TurretBase; +import openmodularturrets.util.PlayerUtil; +import openmodularturrets.util.TurretHeadUtil; + + +/** + * Created by Bass on 27/07/2017. + */ +public class projectileEM extends LaserProjectile { + public float gravity=0; + private TurretBase turretBase; + + private boolean exotic, antiMatter,isAmped; + + private int ampLevel; + + private float massFactor; + + public projectileEM(World par1World) { + super(par1World); + } + + public projectileEM(World par1World, TurretBase turretBase) { + super(par1World, turretBase); + int amp=TurretHeadUtil.getAmpLevel(turretBase); + if (amp > 0) { + this.isAmped = true; + this.ampLevel = amp; + } + } + + public projectileEM(World par1World, TurretBase turretBase, cElementalInstanceStackMap avalableEM) { + super(par1World, turretBase); + 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.RANDOM.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) { + gravity = massFactor / 100f; + } else { + gravity = Math.min(0.0025F / Math.abs(consumeFromThis.definition.getCharge()), massFactor / 100f); + } + + avalableEM.removeAmount(false,consumeFromThis.definition.getStackForm(1)); + } + } + //todo make the recipe require some overflow hatches + + //todo add more subspace pollution + } + + @Override + protected void onImpact(MovingObjectPosition movingobjectposition) { + if(ticksExisted > 1) { + if(movingobjectposition.typeOfHit == MovingObjectPosition.MovingObjectType.BLOCK) { + Block hitBlock = worldObj.getBlock(movingobjectposition.blockX, movingobjectposition.blockY, movingobjectposition.blockZ); + if(hitBlock != null){ + if (hitBlock.getMaterial().isSolid() && TecTech.configTecTech.ENABLE_TURRET_EXPLOSIONS && antiMatter) { + worldObj.playSoundEffect(posX, posY, posZ, "openmodularturrets:laserHit", ConfigHandler.getTurretSoundVolume(), TecTech.RANDOM.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.configTecTech.TURRET_EXPLOSION_FACTOR * massFactor * (isAmped? ampLevel*.1f +1:1) * (ticksExisted/250f), true); + } else { + return; + } + } + } + + if(movingobjectposition.entityHit != null && !worldObj.isRemote) { + worldObj.playSoundEffect(posX, posY, posZ, "openmodularturrets:laserHit", ConfigHandler.getTurretSoundVolume(), TecTech.RANDOM.nextFloat() + 0.5F); + if(movingobjectposition.entityHit != null && !worldObj.isRemote) { + float damage = (exotic?10:1) * TecTech.configTecTech.TURRET_DAMAGE_FACTOR * massFactor * (isAmped? ampLevel*.1f +1:1); + + if(movingobjectposition.entityHit instanceof EntityPlayer) { + if(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.configTecTech.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.configTecTech.TURRET_EXPLOSION_FACTOR * massFactor * (isAmped? ampLevel*.1f +1:1) * (ticksExisted/250f), true); + } + } + } + setDead(); + } + } + + public boolean canDamagePlayer(EntityPlayer entityPlayer) { + return ConfigHandler.turretDamageTrustedPlayers || this.turretBase.getTrustedPlayer(entityPlayer.getUniqueID()) == null && !PlayerUtil.getPlayerUIDUnstable(this.turretBase.getOwner()).equals(entityPlayer.getUniqueID()); + } + + @Override + public void onEntityUpdate() { + if(ticksExisted >= 75) { + setDead(); + } + } + + @Override + protected float getGravityVelocity() { + return gravity; + } +} diff --git a/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/entity/projectiles/projectileRenderEM.java b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/entity/projectiles/projectileRenderEM.java new file mode 100644 index 0000000000..812a752562 --- /dev/null +++ b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/entity/projectiles/projectileRenderEM.java @@ -0,0 +1,73 @@ +package com.github.technus.tectech.compatibility.openmodularturrets.entity.projectiles; + +import com.github.technus.tectech.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"); + + private void render(projectileEM entity, double par2, double par4, double par6, float par9) { + 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('\u803a'); + float f11 = - par9; + if(f11 > 0.0F) { + float f = -MathHelper.sin(f11 * 3.0F) * f11; + GL11.glRotatef(f, 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('\u803a'); + GL11.glPopMatrix(); + } + + @Override + protected ResourceLocation getEntityTexture(Entity par1Entity) { + return textures; + } + + @Override + 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/com/github/technus/tectech/compatibility/openmodularturrets/tileentity/turret/TileTurretHeadEM.java b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/tileentity/turret/TileTurretHeadEM.java new file mode 100644 index 0000000000..2de6b39c4c --- /dev/null +++ b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/tileentity/turret/TileTurretHeadEM.java @@ -0,0 +1,74 @@ +package com.github.technus.tectech.compatibility.openmodularturrets.tileentity.turret; + +import com.github.technus.tectech.compatibility.openmodularturrets.entity.projectiles.projectileEM; +import com.github.technus.tectech.compatibility.openmodularturrets.tileentity.turretbase.TileTurretBaseEM; +import com.github.technus.tectech.mechanics.elementalMatter.core.cElementalInstanceStackMap; +import com.github.technus.tectech.thing.item.DebugElementalInstanceContainer_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.handler.ConfigHandler; +import openmodularturrets.tileentity.turrets.TurretHead; +import openmodularturrets.util.TurretHeadUtil; + +/** + * Created by Bass on 27/07/2017. + */ +public class TileTurretHeadEM extends TurretHead{ + private cElementalInstanceStackMap hatchContentPointer; + + @Override + public int getTurretRange() { + return ConfigHandler.getLaserTurretSettings().getRange()<<1; + } + + @Override + public int getTurretPowerUsage() { + return ConfigHandler.getLaserTurretSettings().getPowerUsage()<<4; + } + + @Override + public int getTurretFireRate() { + return (int)Math.ceil(ConfigHandler.getLaserTurretSettings().getFireRate()/2f); + } + + @Override + 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(); + } + + @Override + public boolean requiresAmmo() { + return hatchContentPointer == null || !hatchContentPointer.hasStacks(); + } + + @Override + public boolean requiresSpecificAmmo() { + return true;//to enable failure in shooting when there is no EM to use + } + + @Override + public Item getAmmo() { + return DebugElementalInstanceContainer_EM.INSTANCE;//Placeholder item that cannot be achieved, yet still usable for debug + } + + @Override + public final TurretProjectile createProjectile(World world, Entity target, ItemStack ammo) { + return new projectileEM(world, TurretHeadUtil.getTurretBase(worldObj, xCoord, yCoord, zCoord), hatchContentPointer); + } + + @Override + public String getLaunchSoundEffect() { + return "laser"; + } +} diff --git a/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/tileentity/turretbase/TileTurretBaseEM.java b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/tileentity/turretbase/TileTurretBaseEM.java new file mode 100644 index 0000000000..a31ba4ef2c --- /dev/null +++ b/src/main/java/com/github/technus/tectech/compatibility/openmodularturrets/tileentity/turretbase/TileTurretBaseEM.java @@ -0,0 +1,68 @@ +package com.github.technus.tectech.compatibility.openmodularturrets.tileentity.turretbase; + +import com.github.technus.tectech.mechanics.elementalMatter.core.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; + +/** + * Created by Bass on 27/07/2017. + */ + +public class TileTurretBaseEM extends TurretBaseTierFiveTileEntity { + public TileTurretBaseEM(int MaxEnergyStorage, int MaxIO) { + super(MaxEnergyStorage, MaxIO); + } + + @Override + @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.updateTexture((byte) 8,(byte) 4); + return hatch.getContainerHandler(); + } +} diff --git a/src/main/java/com/github/technus/tectech/loader/entity/EntityLoader.java b/src/main/java/com/github/technus/tectech/loader/entity/EntityLoader.java index d2d6332ef3..db352adce3 100644 --- a/src/main/java/com/github/technus/tectech/loader/entity/EntityLoader.java +++ b/src/main/java/com/github/technus/tectech/loader/entity/EntityLoader.java @@ -3,7 +3,7 @@ package com.github.technus.tectech.loader.entity; import com.github.technus.tectech.TecTech; import cpw.mods.fml.common.Loader; import cpw.mods.fml.common.registry.EntityRegistry; -import openmodularturrets.entity.projectiles.projectileEM; +import com.github.technus.tectech.compatibility.openmodularturrets.entity.projectiles.projectileEM; /** * Created by Tec on 30.07.2017. diff --git a/src/main/java/com/github/technus/tectech/loader/thing/ThingsLoader.java b/src/main/java/com/github/technus/tectech/loader/thing/ThingsLoader.java index c5406a2206..6293d70ae1 100644 --- a/src/main/java/com/github/technus/tectech/loader/thing/ThingsLoader.java +++ b/src/main/java/com/github/technus/tectech/loader/thing/ThingsLoader.java @@ -13,8 +13,8 @@ import com.github.technus.tectech.thing.item.*; import cpw.mods.fml.common.Loader; import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; -import openmodularturrets.blocks.turretbases.TurretBaseEM; -import openmodularturrets.blocks.turretheads.TurretHeadEM; +import com.github.technus.tectech.compatibility.openmodularturrets.blocks.turretbases.TurretBaseEM; +import com.github.technus.tectech.compatibility.openmodularturrets.blocks.turretheads.TurretHeadEM; import static com.github.technus.tectech.TecTech.tectechTexturePage1; diff --git a/src/main/java/com/github/technus/tectech/proxy/ClientProxy.java b/src/main/java/com/github/technus/tectech/proxy/ClientProxy.java index 1eea24edae..b936de00fc 100644 --- a/src/main/java/com/github/technus/tectech/proxy/ClientProxy.java +++ b/src/main/java/com/github/technus/tectech/proxy/ClientProxy.java @@ -22,7 +22,7 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChatComponentText; import net.minecraft.world.World; import net.minecraftforge.common.util.ForgeDirection; -import openmodularturrets.TT_turret_loader; +import com.github.technus.tectech.compatibility.openmodularturrets.TT_turret_loader; import org.lwjgl.opengl.GL11; public class ClientProxy extends CommonProxy { |