summaryrefslogtreecommitdiff
path: root/src/main/java/ihl/explosion/ExplosiveTileEntity.java
diff options
context:
space:
mode:
authorFoghrye4 <foghrye4@gmail.com>2017-08-10 18:52:45 +0300
committerFoghrye4 <foghrye4@gmail.com>2017-08-10 18:52:45 +0300
commit0427ab89f1753a44b30cbc35ce021cbbdc845109 (patch)
treeabe418ff5ec174e712fe8dedd434548a945b15a3 /src/main/java/ihl/explosion/ExplosiveTileEntity.java
parent877312184c472d9845e5ef1008bc538f4634059f (diff)
fix missing source folder
Diffstat (limited to 'src/main/java/ihl/explosion/ExplosiveTileEntity.java')
-rw-r--r--src/main/java/ihl/explosion/ExplosiveTileEntity.java78
1 files changed, 78 insertions, 0 deletions
diff --git a/src/main/java/ihl/explosion/ExplosiveTileEntity.java b/src/main/java/ihl/explosion/ExplosiveTileEntity.java
new file mode 100644
index 0000000..b211d3b
--- /dev/null
+++ b/src/main/java/ihl/explosion/ExplosiveTileEntity.java
@@ -0,0 +1,78 @@
+package ihl.explosion;
+
+import ic2.core.IC2;
+import ihl.IHLMod;
+import ihl.utils.IHLMathUtils;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.nbt.NBTTagCompound;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraftforge.oredict.OreDictionary;
+
+public class ExplosiveTileEntity extends TileEntity {
+
+ public int explosionPower = 10000;
+ private int explosionType = 1;
+ private int detonator_delay = 1;
+ private int burn_time = 0;
+ public boolean is_detonator_burning = false;
+
+ public void createExplosion(EntityPlayer player) {
+ this.invalidate();
+ int power = this.explosionPower;
+ this.explosionPower = 0;
+ IHLMod.explosionHandler.doExplosion(worldObj, xCoord, yCoord, zCoord, IHLMod.explosionHandler.startVectors,
+ power);
+ IHLMod.proxy.createExplosionEffectFromServer(worldObj, xCoord, yCoord, zCoord,
+ 32f * IHLMathUtils.sqrt(power / 16384f));
+ }
+
+ @Override
+ public boolean canUpdate() {
+ return IC2.platform.isSimulating();
+ }
+
+ @Override
+ public void updateEntity() {
+ if (is_detonator_burning) {
+ IHLMod.proxy.spawnParticleFromServer(4, worldObj, xCoord + 0.5d, yCoord + 1d, zCoord + 0.5d, 0d, 0.2d, 0d,
+ 1f);
+ if (this.burn_time++ > detonator_delay * 20) {
+ this.createExplosion(null);
+ }
+ }
+ }
+
+ @Override
+ public void readFromNBT(NBTTagCompound nbt) {
+ if (nbt != null) {
+ explosionPower = nbt.getInteger("explosionPower");
+ explosionType = nbt.getInteger("explosionType");
+ detonator_delay = nbt.getInteger("detonator_delay");
+ }
+ }
+
+ @Override
+ public void writeToNBT(NBTTagCompound nbt) {
+ nbt.setInteger("explosionPower", explosionPower);
+ nbt.setInteger("explosionType", explosionType);
+ nbt.setInteger("detonator_delay", detonator_delay);
+ }
+
+ public boolean ignite(EntityPlayer player) {
+ if (player != null && player.getCurrentEquippedItem() != null) {
+ for (int oid : OreDictionary.getOreIDs(player.getCurrentEquippedItem())) {
+ if (OreDictionary.getOreName(oid).matches("toolLighter")) {
+ ignite();
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+
+ public void ignite() {
+ IHLMod.proxy.playSoundEffectFromServer(0, this.worldObj, this.xCoord + 0.5D, this.yCoord + 0.5D,
+ this.zCoord + 0.5D, 10.0F, 1.0F);
+ this.is_detonator_burning = true;
+ }
+}