From 5fde39ebcd5f2b734c2453902653f4757558f27d Mon Sep 17 00:00:00 2001 From: modmuss50 Date: Sun, 20 Mar 2016 21:23:12 +0000 Subject: [PATCH] Some improvements to things --- src/main/java/techreborn/Core.java | 2 ++ src/main/java/techreborn/init/ModSounds.java | 24 +++++++++++++++ .../java/techreborn/parts/CableMultipart.java | 29 ++++++++++++------- .../java/techreborn/power/TRPowerNet.java | 26 +++++++++++++++++ .../resources/assets/techreborn/sounds.json | 6 ++-- 5 files changed, 74 insertions(+), 13 deletions(-) create mode 100644 src/main/java/techreborn/init/ModSounds.java diff --git a/src/main/java/techreborn/Core.java b/src/main/java/techreborn/Core.java index 6bed74aaf..99cf0ccc7 100644 --- a/src/main/java/techreborn/Core.java +++ b/src/main/java/techreborn/Core.java @@ -106,6 +106,8 @@ public class Core { ModLoot.init(); // Multiparts ModParts.init(); + //Sounds + ModSounds.init(); // Compat for (ICompatModule compatModule : CompatManager.INSTANCE.compatModules) { compatModule.init(event); diff --git a/src/main/java/techreborn/init/ModSounds.java b/src/main/java/techreborn/init/ModSounds.java new file mode 100644 index 000000000..2b859a697 --- /dev/null +++ b/src/main/java/techreborn/init/ModSounds.java @@ -0,0 +1,24 @@ +package techreborn.init; + +import net.minecraft.client.audio.Sound; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.SoundEvent; + +/** + * Created by Mark on 20/03/2016. + */ +public class ModSounds { + + public static SoundEvent shock; + + public static void init() { + shock = getSound("cable_shock"); + } + + private static SoundEvent getSound(String str){ + SoundEvent soundEvent = SoundEvent.soundEventRegistry.getObject(new ResourceLocation("techreborn" + str)); + return soundEvent; + } + + +} diff --git a/src/main/java/techreborn/parts/CableMultipart.java b/src/main/java/techreborn/parts/CableMultipart.java index 0ded97b36..7c2bc1011 100644 --- a/src/main/java/techreborn/parts/CableMultipart.java +++ b/src/main/java/techreborn/parts/CableMultipart.java @@ -28,6 +28,7 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.EnumParticleTypes; import net.minecraft.util.ITickable; import net.minecraft.util.ResourceLocation; +import net.minecraft.util.SoundCategory; import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; @@ -40,6 +41,7 @@ import reborncore.common.misc.Functions; import reborncore.common.misc.vecmath.Vecs3dCube; import reborncore.common.util.WorldUtils; import techreborn.config.ConfigTechReborn; +import techreborn.init.ModSounds; import techreborn.power.TRPowerNet; import techreborn.utils.damageSources.ElectrialShockSource; @@ -339,16 +341,23 @@ public abstract class CableMultipart extends Multipart implements INormallyOcclu @Override public void onEntityCollided(Entity entity) { if (getCableType().canKill && entity instanceof EntityLivingBase) { - if(ConfigTechReborn.UninsulatedElectocutionDamage){ - entity.attackEntityFrom(new ElectrialShockSource(), 1F); - } - if(ConfigTechReborn.UninsulatedElectocutionSound){ - //TODO 1.9 nope - // getWorld().playSoundAtEntity(entity, "techreborn:cable_shock", 0.6F, 1F); - } - if(ConfigTechReborn.UninsulatedElectocutionParticle){ - getWorld().spawnParticle(EnumParticleTypes.CRIT, entity.posX, entity.posY, entity.posZ, 0, 0, 0); - } + if(network != null){ + if(network.getEnergy() != 0){ + if(ConfigTechReborn.UninsulatedElectocutionDamage){ + if(getCableType() == EnumCableType.HV){ + entity.setFire(1); + } + network.setEnergy(-1); + entity.attackEntityFrom(new ElectrialShockSource(), 1F); + } + if(ConfigTechReborn.UninsulatedElectocutionSound){ + getWorld().playSound(entity.posX, entity.posY, entity.posZ, ModSounds.shock, SoundCategory.BLOCKS, 0.6F, 1F, false); + } + if(ConfigTechReborn.UninsulatedElectocutionParticle){ + getWorld().spawnParticle(EnumParticleTypes.CRIT, entity.posX, entity.posY, entity.posZ, 0, 0, 0); + } + } + } } } diff --git a/src/main/java/techreborn/power/TRPowerNet.java b/src/main/java/techreborn/power/TRPowerNet.java index 1bb1dc8ae..db109d836 100644 --- a/src/main/java/techreborn/power/TRPowerNet.java +++ b/src/main/java/techreborn/power/TRPowerNet.java @@ -48,6 +48,9 @@ public class TRPowerNet { } cables.removeAll(oldCables); } + if(tick % 20 == 0){ + checkAndRemoveOldEndpoints(); + } if (!cables.isEmpty()) { ArrayList collectibles = new ArrayList(); ArrayList insertibles = new ArrayList(); @@ -108,6 +111,18 @@ public class TRPowerNet { for(CableMultipart cableMultipart : partsToMerge){ cableMultipart.mergeWith = net; } + net.checkAndRemoveOldEndpoints(); + } + + public void checkAndRemoveOldEndpoints(){ + List deadHandlers = new ArrayList<>(); + for(EnergyHandler energyHandler : endpoints){ + TileEntity tile = (TileEntity) energyHandler.tile; + if(tile.getWorld().getTileEntity(tile.getPos()) == null){ + deadHandlers.add(energyHandler); + } + } + endpoints.removeAll(deadHandlers); } public void rebuild() { @@ -120,6 +135,17 @@ public class TRPowerNet { MinecraftForge.EVENT_BUS.unregister(this); } + public int getEnergy() { + return energy; + } + + public void setEnergy(int energy){ + energy += energy; + if(energy < 0){ + energy = 0; + } + } + public void addConnection(IEnergyInterfaceTile ih, EnumFacing dir) { if (ih instanceof CableMultipart) return; diff --git a/src/main/resources/assets/techreborn/sounds.json b/src/main/resources/assets/techreborn/sounds.json index 058d87ef0..c8cb35ae4 100644 --- a/src/main/resources/assets/techreborn/sounds.json +++ b/src/main/resources/assets/techreborn/sounds.json @@ -1,5 +1,5 @@ { - "sap_extract": { "category": "block", "sounds":["sap_extract"] }, - "block_dismantle": { "category": "block", "sounds":["block_dismantle"] }, - "cable_shock": { "category": "block", "sounds":["cable_shock"] } + "sap_extract": { "category": "block", "sounds":["techreborn:sap_extract"] }, + "block_dismantle": { "category": "block", "sounds":["techreborn:block_dismantle"] }, + "cable_shock": { "category": "block", "sounds":["techreborn:cable_shock"] } } \ No newline at end of file