From ed14c30bd3926a88a948de5b588ef08128655b85 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Sun, 4 Mar 2018 15:02:15 +0100 Subject: [PATCH] Corrupted broadcaster --- assets/hbm/lang/de_DE.lang | 3 + assets/hbm/lang/en_US.lang | 3 + assets/hbm/sounds.json | 3 + assets/hbm/sounds/block/broadcast1.ogg | Bin 0 -> 10233 bytes assets/hbm/sounds/block/broadcast2.ogg | Bin 0 -> 8386 bytes assets/hbm/sounds/block/broadcast3.ogg | Bin 0 -> 15159 bytes assets/hbm/textures/blocks/broadcaster_pc.png | Bin 0 -> 386 bytes .../hbm/textures/models/ModelBroadcaster.png | Bin 0 -> 795 bytes com/hbm/blocks/ModBlocks.java | 7 ++ .../blocks/machine/PinkCloudBroadcaster.java | 114 ++++++++++++++++++ .../entity/logic/EntityNukeExplosionMK4.java | 2 +- com/hbm/explosion/ExplosionNukeRay.java | 4 +- com/hbm/lib/HbmWorldGen.java | 12 ++ com/hbm/lib/ModDamageSource.java | 1 + com/hbm/main/ClientProxy.java | 1 + com/hbm/main/MainRegistry.java | 6 + com/hbm/packet/LoopedSoundPacket.java | 16 +++ com/hbm/render/model/ModelBroadcaster.java | 76 ++++++++++++ .../render/tileentity/RenderDecoBlock.java | 21 ++++ com/hbm/sound/SoundLoopBroadcaster.java | 50 ++++++++ .../machine/TileEntityBroadcaster.java | 56 +++++++++ 21 files changed, 372 insertions(+), 3 deletions(-) create mode 100644 assets/hbm/sounds/block/broadcast1.ogg create mode 100644 assets/hbm/sounds/block/broadcast2.ogg create mode 100644 assets/hbm/sounds/block/broadcast3.ogg create mode 100644 assets/hbm/textures/blocks/broadcaster_pc.png create mode 100644 assets/hbm/textures/models/ModelBroadcaster.png create mode 100644 com/hbm/blocks/machine/PinkCloudBroadcaster.java create mode 100644 com/hbm/render/model/ModelBroadcaster.java create mode 100644 com/hbm/sound/SoundLoopBroadcaster.java create mode 100644 com/hbm/tileentity/machine/TileEntityBroadcaster.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index acf6e0d61..243bdfd92 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -133,6 +133,7 @@ death.attack.blackhole=%1$s wurde spaghettifiziert. death.attack.blender=%1$s wurde in kleine, mundgerechte Stücke geschnitten. death.attack.meteorite=%1$s wurde von einem fallenden Stein aus dem Weltall erschlagen. death.attack.boxcar=%1$s wurde von einem fallenden Güterwagon zermatscht. Autsch! +death.attack.broadcast=%1$s wurde das Gehirn geschmolzen. item.redstone_sword.name=Redstoneschwert item.big_sword.name=Großes Schwert @@ -303,6 +304,8 @@ container.siren=Sirene tile.machine_radgen.name=Strahlenbetriebener Generator [WIP] container.radGen=Strahlenbetriebener Generator [WIP] +tile.broadcaster_pc.name=Korrupter Sender + tile.red_pylon.name=Strommasten item.wiring_red_copper.name=Kabeltrommel diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index f9674fbe4..4ab5351de 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -133,6 +133,7 @@ death.attack.blackhole=%1$s was spaghettified. death.attack.blender=%1$s was chopped in small, bite-sized pieces. death.attack.meteorite=%1$s was hit by a falling rock from outer space. death.attack.boxcar=%1$s was smushed by a falling boxcar. Oh well. +death.attack.broadcast=%1$s got their brain melted. item.redstone_sword.name=Redstone Sword item.big_sword.name=Great Sword @@ -303,6 +304,8 @@ container.siren=Siren tile.machine_radgen.name=Radiation-Powered Engine [WIP] container.radGen=Radiation-Powered Engine [WIP] +tile.broadcaster_pc.name=Corrupted Broadcaster + tile.red_pylon.name=Electricity Pole item.wiring_red_copper.name=Cable Drum diff --git a/assets/hbm/sounds.json b/assets/hbm/sounds.json index 8386202df..10fc188ff 100644 --- a/assets/hbm/sounds.json +++ b/assets/hbm/sounds.json @@ -13,6 +13,9 @@ "block.igeneratorOperate": {"category": "block", "sounds": [{"name": "block/igeneratorOperate", "stream": false}]}, "block.turbofanOperate": {"category": "block", "sounds": [{"name": "block/turbofanOperate", "stream": false}]}, "block.pressOperate": {"category": "block", "sounds": [{"name": "block/pressOperate", "stream": false}]}, + "block.broadcast1": {"category": "block", "sounds": [{"name": "block/broadcast1", "stream": false}]}, + "block.broadcast2": {"category": "block", "sounds": [{"name": "block/broadcast2", "stream": false}]}, + "block.broadcast3": {"category": "block", "sounds": [{"name": "block/broadcast3", "stream": false}]}, "item.techBleep": {"category": "player", "sounds": [{"name": "tool/techBleep", "stream": false}]}, "item.techBoop": {"category": "player", "sounds": [{"name": "tool/techBoop", "stream": false}]}, diff --git a/assets/hbm/sounds/block/broadcast1.ogg b/assets/hbm/sounds/block/broadcast1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..29fc190d6c2e274f53148f20c69bd694c15d35cc GIT binary patch literal 10233 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 T;K3%5p^;6fk^IJon&AHcq)Bmy literal 0 HcmV?d00001 diff --git a/assets/hbm/sounds/block/broadcast2.ogg b/assets/hbm/sounds/block/broadcast2.ogg new file mode 100644 index 0000000000000000000000000000000000000000..c9117b9794a54da70fecb1dbc2030326222918db GIT binary patch literal 8386 zcmcI}cT^M47w?9SARzW{r6cMwFKS9h8<3kSiF&W0<0k|98|-|06>hgsfcd zI-fW4b`o@RvA6guSx`?yR8}Q9UqiB~a}KpC^YE$7)5dWgQ?g7HH`1kr!Omx+W^@MO+Rp6| zBiGUX#Z)q4Al{s!C!j_H`K$8@0C;cAtZfob0o3S#aDYSGi=)$vPd8DthwASmY5>KL zl5w9U6GikA9j#L^)+t3nDJ5?S7Y>Q%$;6E{5=&I{OB$dH0Jx)t9?j|X#+%0Li9^kM zl^ODOS(KMJ9EVUHsrE4@{qd&Ea

M1JH-8BZkU&W?=?Rc$QW2l|(Fv=9f(o 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 literal 0 HcmV?d00001 diff --git a/assets/hbm/sounds/block/broadcast3.ogg b/assets/hbm/sounds/block/broadcast3.ogg new file mode 100644 index 0000000000000000000000000000000000000000..b8671e80f5ddf9c3943c6b042a01ff948d5b489c GIT binary patch literal 15159 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 z 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 literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/blocks/broadcaster_pc.png b/assets/hbm/textures/blocks/broadcaster_pc.png new file mode 100644 index 0000000000000000000000000000000000000000..7a509657ed53e3f8236263b551639833c491a9ab GIT binary patch literal 386 zcmV-|0e$|7P)&x=>7euzidDoq4>a41i^#loENK|GK1i$?1(H?xhlapCL&yyk|_e{3ZZ^hr9OB`IlC=KuEo^Un|Wi*}9KYIPZR# z+=jk08E`ZvdhQ4s%d@YV^DB3ulr&yxLPxA!!ZPa!azQ*dYL1ONa407*qoM6N<$f+gptG5`Po literal 0 HcmV?d00001 diff --git a/assets/hbm/textures/models/ModelBroadcaster.png b/assets/hbm/textures/models/ModelBroadcaster.png new file mode 100644 index 0000000000000000000000000000000000000000..394ee68e0588c3769434c423ca50cdffed3751b7 GIT binary patch literal 795 zcmV+$1LXXPP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0((hBK~!i%?N`A{ zBS8?Iiy(NBNKUIB6!+l44R{E|g+UAm0m0MWyu{NUatwi-4CE35IfZ=3eu5t${(^pj ze^BxUUMM@$sWHqW^qyyF<{r z4SWRX!_apX2E7I?U|IDp0sPK7KdW8tXF!&Pr_-s7MkDF>`wJ~}@BzSYA3vqlYJDk% zEdIY^6NG@tWFo`iP`cgjLJJ)UXf~S?$MLraz*UOtb6JZkmL%m)z|HMnvBcUT%)hMP zr;6oUza{Xd&_Z3i-JZu7gn&w=BFh9IeP@700Cpds`Ksgti?2=SU_(E-6A<4#3PlI2 z#{nMo{ra|_5P`lX1hyam^^Y>pWVpVyU-Y@l%LqUQa9*JVxWVz;$^h7*1b7DMa`5@& zI5U7mq?G_{3L`+*w+>d1TLkbB!~xi7G!_m)pI^-5e+cX{fco0P4ngaHgC3{<-g_jq zTJ1}pW3cgMKoC&*9J}3A{KWuz$L`}E+U4YK3#w=A-)m`8g!nEuRTDEtc@pN?Q49S0Tu&W{bn=p z2`f--OXbjOH2?qr07*qoM6N<$f&c&jDRf0xbWLw$Wo!UcWn*Y=WiLW 0 && world.getBlock((int)x0, (int)y0, (int)z0) != Blocks.air) { lastPos = new FloatTriplet(x0, y0, z0); diff --git a/com/hbm/lib/HbmWorldGen.java b/com/hbm/lib/HbmWorldGen.java index c28ff3f51..24146ea03 100644 --- a/com/hbm/lib/HbmWorldGen.java +++ b/com/hbm/lib/HbmWorldGen.java @@ -340,6 +340,18 @@ public class HbmWorldGen implements IWorldGenerator { new Spaceship().generate(world, rand, x, y, z); } + + if (rand.nextInt(MainRegistry.broadcaster) == 0) { + int x = i + rand.nextInt(16); + int z = j + rand.nextInt(16); + int y = world.getHeightValue(x, z); + + if(world.getBlock(x, y - 1, z).isBlockNormalCube()) + world.setBlock(x, y, z, ModBlocks.broadcaster_pc, rand.nextInt(4) + 2, 2); + + if(MainRegistry.enableDebugMode) + MainRegistry.logger.info("[Debug] Successfully spawned corrupted broadcaster at " + x + " " + y +" " + z); + } } if (rand.nextInt(15) == 0) { diff --git a/com/hbm/lib/ModDamageSource.java b/com/hbm/lib/ModDamageSource.java index 3127e533c..1e01d3b98 100644 --- a/com/hbm/lib/ModDamageSource.java +++ b/com/hbm/lib/ModDamageSource.java @@ -35,6 +35,7 @@ public class ModDamageSource extends DamageSource { public static DamageSource taint = (new DamageSource("taint")).setDamageIsAbsolute().setDamageBypassesArmor(); public static DamageSource ams = (new DamageSource("ams")).setDamageIsAbsolute().setDamageBypassesArmor(); public static DamageSource amsCore = (new DamageSource("amsCore")).setDamageIsAbsolute().setDamageBypassesArmor(); + public static DamageSource broadcast = (new DamageSource("broadcast")).setDamageIsAbsolute().setDamageBypassesArmor(); public ModDamageSource(String p_i1566_1_) { super(p_i1566_1_); diff --git a/com/hbm/main/ClientProxy.java b/com/hbm/main/ClientProxy.java index 1756c228a..dd867bd66 100644 --- a/com/hbm/main/ClientProxy.java +++ b/com/hbm/main/ClientProxy.java @@ -270,6 +270,7 @@ public class ClientProxy extends ServerProxy RenderingRegistry.registerEntityRenderingHandler(EntityMissileExo.class, new RenderMissileThermo()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlock.class, new RenderDecoBlock()); + ClientRegistry.bindTileEntitySpecialRenderer(TileEntityBroadcaster.class, new RenderDecoBlock()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAlt.class, new RenderDecoBlockAlt()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltG.class, new RenderDecoBlockAlt()); ClientRegistry.bindTileEntitySpecialRenderer(TileEntityDecoBlockAltW.class, new RenderDecoBlockAlt()); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index 90fb77f8e..6f231c1ef 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -202,6 +202,7 @@ import com.hbm.tileentity.deco.TileEntityYellowBarrel; import com.hbm.tileentity.machine.TileEntityAMSBase; import com.hbm.tileentity.machine.TileEntityAMSEmitter; import com.hbm.tileentity.machine.TileEntityAMSLimiter; +import com.hbm.tileentity.machine.TileEntityBroadcaster; import com.hbm.tileentity.machine.TileEntityConverterHeRf; import com.hbm.tileentity.machine.TileEntityConverterRfHe; import com.hbm.tileentity.machine.TileEntityCoreAdvanced; @@ -414,6 +415,7 @@ public class MainRegistry public static int factoryStructure = 1000; public static int dudStructure = 500; public static int spaceshipStructure = 1000; + public static int broadcaster = 5000; public static int meteorStrikeChance = 20 * 60 * 90; public static int meteorShowerChance = 20 * 60 * 3; public static int meteorShowerDuration = 6000; @@ -574,6 +576,7 @@ public class MainRegistry GameRegistry.registerTileEntity(TileEntityMachineTransformer.class, "tileentity_transformer"); GameRegistry.registerTileEntity(TileEntityTurretCWIS.class, "tileentity_turret_cwis"); GameRegistry.registerTileEntity(TileEntityMachineRadar.class, "tileentity_radar"); + GameRegistry.registerTileEntity(TileEntityBroadcaster.class, "tileentity_pink_cloud_broadcaster"); EntityRegistry.registerModEntity(EntityRocket.class, "entity_rocket", 0, this, 250, 1, true); EntityRegistry.registerModEntity(EntityNukeExplosion.class, "entity_nuke_explosion", 1, this, 250, 1, true); @@ -1314,6 +1317,9 @@ public class MainRegistry Property propSpaceship = config.get(Configuration.CATEGORY_GENERAL, "4.11_spaceshipSpawn", 1000); propSpaceship.comment = "Spawn spaceship on every nTH chunk"; spaceshipStructure = propSpaceship.getInt(); + Property propBroadcaster = config.get(Configuration.CATEGORY_GENERAL, "4.12_broadcasterSpawn", 5000); + propBroadcaster.comment = "Spawn spaceship on every nTH chunk"; + broadcaster = propBroadcaster.getInt(); Property propMeteorStrikeChance = config.get(Configuration.CATEGORY_GENERAL, "5.00_meteorStrikeChance", 50000); propMeteorStrikeChance.comment = "The probability of a meteor spawning (an average of once every nTH ticks)"; diff --git a/com/hbm/packet/LoopedSoundPacket.java b/com/hbm/packet/LoopedSoundPacket.java index 9691bafb1..6e60ba730 100644 --- a/com/hbm/packet/LoopedSoundPacket.java +++ b/com/hbm/packet/LoopedSoundPacket.java @@ -1,10 +1,12 @@ package com.hbm.packet; import com.hbm.sound.SoundLoopAssembler; +import com.hbm.sound.SoundLoopBroadcaster; import com.hbm.sound.SoundLoopChemplant; import com.hbm.sound.SoundLoopIGen; import com.hbm.sound.SoundLoopMiner; import com.hbm.sound.SoundLoopTurbofan; +import com.hbm.tileentity.machine.TileEntityBroadcaster; import com.hbm.tileentity.machine.TileEntityMachineAssembler; import com.hbm.tileentity.machine.TileEntityMachineChemplant; import com.hbm.tileentity.machine.TileEntityMachineIGenerator; @@ -120,6 +122,20 @@ public class LoopedSoundPacket implements IMessage { if(flag && te.getWorldObj().isRemote && ((TileEntityMachineTurbofan)te).isRunning) Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopTurbofan(new ResourceLocation("hbm:block.turbofanOperate"), te)); } + + if (te != null && te instanceof TileEntityBroadcaster) { + + boolean flag = true; + for(int i = 0; i < SoundLoopBroadcaster.list.size(); i++) { + if(SoundLoopBroadcaster.list.get(i).getTE() == te && !SoundLoopBroadcaster.list.get(i).isDonePlaying()) + flag = false; + } + + int j = te.xCoord + te.zCoord + te.yCoord; + + if(flag && te.getWorldObj().isRemote) + Minecraft.getMinecraft().getSoundHandler().playSound(new SoundLoopBroadcaster(new ResourceLocation("hbm:block.broadcast" + (j % 3 + 1)), te)); + } return null; } } diff --git a/com/hbm/render/model/ModelBroadcaster.java b/com/hbm/render/model/ModelBroadcaster.java new file mode 100644 index 000000000..ef8ed5e46 --- /dev/null +++ b/com/hbm/render/model/ModelBroadcaster.java @@ -0,0 +1,76 @@ +// Date: 04.03.2018 11:54:19 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + +package com.hbm.render.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelBroadcaster extends ModelBase { + // fields + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + + public ModelBroadcaster() { + textureWidth = 64; + textureHeight = 32; + + Shape1 = new ModelRenderer(this, 0, 0); + Shape1.addBox(0F, 0F, 0F, 14, 10, 8); + Shape1.setRotationPoint(-7F, 14F, -4F); + Shape1.setTextureSize(64, 32); + Shape1.mirror = true; + setRotation(Shape1, 0F, 0F, 0F); + Shape2 = new ModelRenderer(this, 4, 21); + Shape2.addBox(0F, 0F, 0F, 2, 3, 2); + Shape2.setRotationPoint(-5F, 11F, -1F); + Shape2.setTextureSize(64, 32); + Shape2.mirror = true; + setRotation(Shape2, 0F, 0F, 0F); + Shape3 = new ModelRenderer(this, 0, 18); + Shape3.addBox(0F, 0F, 0F, 1, 11, 1); + Shape3.setRotationPoint(-4.5F, 0F, -0.5F); + Shape3.setTextureSize(64, 32); + Shape3.mirror = true; + setRotation(Shape3, 0F, 0F, 0F); + Shape4 = new ModelRenderer(this, 4, 18); + Shape4.addBox(0F, 0F, 0F, 3, 2, 1); + Shape4.setRotationPoint(2F, 12F, -0.5F); + Shape4.setTextureSize(64, 32); + Shape4.mirror = true; + setRotation(Shape4, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5, entity); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + } + + public void renderModel(float f) { + Shape1.render(f); + Shape2.render(f); + Shape3.render(f); + Shape4.render(f); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5, Entity entity) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, entity); + } + +} diff --git a/com/hbm/render/tileentity/RenderDecoBlock.java b/com/hbm/render/tileentity/RenderDecoBlock.java index aec97c4d4..0f3353ad6 100644 --- a/com/hbm/render/tileentity/RenderDecoBlock.java +++ b/com/hbm/render/tileentity/RenderDecoBlock.java @@ -5,6 +5,7 @@ import org.lwjgl.opengl.GL11; import com.hbm.blocks.ModBlocks; import com.hbm.lib.RefStrings; import com.hbm.main.ResourceManager; +import com.hbm.render.model.ModelBroadcaster; import com.hbm.render.model.ModelSteelBeam; import com.hbm.render.model.ModelSteelCorner; import com.hbm.render.model.ModelSteelRoof; @@ -22,12 +23,14 @@ public class RenderDecoBlock extends TileEntitySpecialRenderer { private static final ResourceLocation texture3 = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/SteelRoof.png"); private static final ResourceLocation texture4 = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/SteelBeam.png"); private static final ResourceLocation texture5 = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/SteelScaffold.png"); + private static final ResourceLocation texture6 = new ResourceLocation(RefStrings.MODID + ":" + "textures/models/ModelBroadcaster.png"); private ModelSteelWall model1; private ModelSteelCorner model2; private ModelSteelRoof model3; private ModelSteelBeam model4; private ModelSteelScaffold model5; + private ModelBroadcaster model6; public RenderDecoBlock() { this.model1 = new ModelSteelWall(); @@ -35,6 +38,7 @@ public class RenderDecoBlock extends TileEntitySpecialRenderer { this.model3 = new ModelSteelRoof(); this.model4 = new ModelSteelBeam(); this.model5 = new ModelSteelScaffold(); + this.model6 = new ModelBroadcaster(); } @Override @@ -96,6 +100,21 @@ public class RenderDecoBlock extends TileEntitySpecialRenderer { GL11.glRotatef(0, 0F, 1F, 0F); break; } } + if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.broadcaster_pc) + { + this.bindTexture(texture6); + switch(tileentity.getBlockMetadata()) + { + case 4: + GL11.glRotatef(90, 0F, 1F, 0F); break; + case 2: + GL11.glRotatef(180, 0F, 1F, 0F); break; + case 5: + GL11.glRotatef(270, 0F, 1F, 0F); break; + case 3: + GL11.glRotatef(0, 0F, 1F, 0F); break; + } + } GL11.glPushMatrix(); if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.steel_wall) @@ -108,6 +127,8 @@ public class RenderDecoBlock extends TileEntitySpecialRenderer { this.model4.renderModel(0.0625F); if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.steel_scaffold) this.model5.renderModel(0.0625F); + if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.broadcaster_pc) + this.model6.renderModel(0.0625F); GL11.glPopMatrix(); if(tileentity.getWorldObj().getBlock(tileentity.xCoord, tileentity.yCoord, tileentity.zCoord) == ModBlocks.boxcar) { diff --git a/com/hbm/sound/SoundLoopBroadcaster.java b/com/hbm/sound/SoundLoopBroadcaster.java new file mode 100644 index 000000000..56b6de21e --- /dev/null +++ b/com/hbm/sound/SoundLoopBroadcaster.java @@ -0,0 +1,50 @@ +package com.hbm.sound; + +import java.util.ArrayList; +import java.util.List; + +import com.hbm.tileentity.machine.TileEntityBroadcaster; +import com.hbm.tileentity.machine.TileEntityMachineChemplant; +import com.hbm.tileentity.machine.TileEntityMachineMiningDrill; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.audio.ISound; +import net.minecraft.client.entity.EntityClientPlayerMP; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; + +public class SoundLoopBroadcaster extends SoundLoopMachine { + + public static List list = new ArrayList(); + public float intendedVolume = 25.0F; + + public SoundLoopBroadcaster(ResourceLocation path, TileEntity te) { + super(path, te); + list.add(this); + this.field_147666_i = ISound.AttenuationType.NONE; + } + + @Override + public void update() { + super.update(); + + EntityClientPlayerMP player = Minecraft.getMinecraft().thePlayer; + float f = 0; + + if(player != null) { + f = (float)Math.sqrt(Math.pow(xPosF - player.posX, 2) + Math.pow(yPosF - player.posY, 2) + Math.pow(zPosF - player.posZ, 2)); + volume = func(f, intendedVolume); + } else { + volume = intendedVolume; + } + } + + public TileEntity getTE() { + return te; + } + + public float func(float f, float v) { + return (f / v) * -2 + 2; + } + +} diff --git a/com/hbm/tileentity/machine/TileEntityBroadcaster.java b/com/hbm/tileentity/machine/TileEntityBroadcaster.java new file mode 100644 index 000000000..90b4728a8 --- /dev/null +++ b/com/hbm/tileentity/machine/TileEntityBroadcaster.java @@ -0,0 +1,56 @@ +package com.hbm.tileentity.machine; + +import java.util.List; + +import com.hbm.lib.ModDamageSource; +import com.hbm.packet.LoopedSoundPacket; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.potion.Potion; +import net.minecraft.potion.PotionEffect; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; + +public class TileEntityBroadcaster extends TileEntity { + + @Override + public void updateEntity() { + + List list = worldObj.getEntitiesWithinAABBExcludingEntity(null, AxisAlignedBB.getBoundingBox(xCoord + 0.5 - 25, yCoord + 0.5 - 25, zCoord + 0.5 - 25, xCoord + 0.5 + 25, yCoord + 0.5 + 25, zCoord + 0.5 + 25)); + + for(int i = 0; i < list.size(); i++) { + if(list.get(i) instanceof EntityLivingBase) { + EntityLivingBase e = (EntityLivingBase)list.get(i); + double d = Math.sqrt(Math.pow(e.posX - (xCoord + 0.5), 2) + Math.pow(e.posY - (yCoord + 0.5), 2) + Math.pow(e.posZ - (zCoord + 0.5), 2)); + + if(d <= 25) { + double t = (25 - d) / 25 * 10; + e.attackEntityFrom(ModDamageSource.broadcast, (float) t); + if(e.getActivePotionEffect(Potion.confusion) == null || e.getActivePotionEffect(Potion.confusion).getDuration() < 100) + e.addPotionEffect(new PotionEffect(Potion.confusion.id, 300, 0)); + } + } + } + + if(!worldObj.isRemote) { + PacketDispatcher.wrapper.sendToAll(new LoopedSoundPacket(xCoord, yCoord, zCoord)); + } + } + + @Override + public AxisAlignedBB getRenderBoundingBox() { + return TileEntity.INFINITE_EXTENT_AABB; + } + + @Override + @SideOnly(Side.CLIENT) + public double getMaxRenderDistanceSquared() + { + return 65536.0D; + } + +}