From 6764c67c0caf6b96169649cf7c169bbc0565ab83 Mon Sep 17 00:00:00 2001 From: HbmMods Date: Fri, 12 Apr 2019 17:20:20 +0200 Subject: [PATCH] aux particle packet, concrete variation recipes, locked hopper fix --- assets/hbm/lang/de_DE.lang | 3 + assets/hbm/lang/en_US.lang | 3 + .../entity/projectile/EntityWaterSplash.java | 11 ++- com/hbm/items/ModItems.java | 2 +- com/hbm/items/tool/ItemLeadBox.java | 4 +- com/hbm/lib/HbmWorldGen.java | 6 +- com/hbm/lib/RefStrings.java | 2 +- com/hbm/main/CraftingManager.java | 5 +- com/hbm/main/MainRegistry.java | 17 ++++ com/hbm/packet/AuxParticlePacket.java | 83 +++++++++++++++++++ com/hbm/packet/PacketDispatcher.java | 2 + .../machine/TileEntityCrateIron.java | 4 +- .../machine/TileEntityCrateSteel.java | 4 +- .../machine/TileEntityMachineChemplant.java | 14 +++- .../tileentity/machine/TileEntitySafe.java | 4 +- 15 files changed, 142 insertions(+), 22 deletions(-) create mode 100644 com/hbm/packet/AuxParticlePacket.java diff --git a/assets/hbm/lang/de_DE.lang b/assets/hbm/lang/de_DE.lang index e30bf0307..035a128c0 100644 --- a/assets/hbm/lang/de_DE.lang +++ b/assets/hbm/lang/de_DE.lang @@ -774,6 +774,9 @@ tile.reinforced_stone.name=Verdichteter Stein tile.concrete_smooth.name=Beton tile.concrete.name=Betonfliese tile.brick_concrete.name=Betonziegel +tile.brick_concrete_mossy.name=Bemooste Betonziegel +tile.brick_concrete_cracked.name=Rissige Betonziegel +tile.brick_concrete_broken.name=Gebrochene Betonziegel tile.brick_obsidian.name=Obsidianziegel tile.brick_light.name=Helle Ziegel tile.asphalt.name=Asphalt diff --git a/assets/hbm/lang/en_US.lang b/assets/hbm/lang/en_US.lang index 14b4b4618..9278d61e3 100644 --- a/assets/hbm/lang/en_US.lang +++ b/assets/hbm/lang/en_US.lang @@ -774,6 +774,9 @@ tile.reinforced_stone.name=Dense Stone tile.concrete_smooth.name=Concrete tile.concrete.name=Concrete Tile tile.brick_concrete.name=Concrete Bricks +tile.brick_concrete_mossy.name=Mossy Concrete Bricks +tile.brick_concrete_cracked.name=Cracked Concrete Bricks +tile.brick_concrete_broken.name=Broken Concrete Bricks tile.brick_obsidian.name=Obsidian Bricks tile.brick_light.name=Light Bricks tile.asphalt.name=Asphalt diff --git a/com/hbm/entity/projectile/EntityWaterSplash.java b/com/hbm/entity/projectile/EntityWaterSplash.java index 87f6de1e3..216e4131d 100644 --- a/com/hbm/entity/projectile/EntityWaterSplash.java +++ b/com/hbm/entity/projectile/EntityWaterSplash.java @@ -1,6 +1,10 @@ package com.hbm.entity.projectile; import com.hbm.entity.particle.EntityOilSpillFX; +import com.hbm.packet.AuxParticlePacket; +import com.hbm.packet.PacketDispatcher; + +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.projectile.EntityThrowable; import net.minecraft.util.MovingObjectPosition; @@ -30,13 +34,12 @@ public class EntityWaterSplash extends EntityThrowable { @Override public void onUpdate() { super.onUpdate(); - - for(int i = 0; i < 10; i++) - worldObj.spawnParticle("cloud", posX + rand.nextGaussian(), posY + rand.nextGaussian(), posZ + rand.nextGaussian(), 0.0D, 0.0D, 0.0D); if(!worldObj.isRemote) { - if(this.ticksExisted > 100) { + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacket(posX, posY, posZ, 0), new TargetPoint(this.dimension, posX, posY, posZ, 75)); + + if(this.ticksExisted > 80) { this.setDead(); } } diff --git a/com/hbm/items/ModItems.java b/com/hbm/items/ModItems.java index f89916bd3..c648a4b23 100644 --- a/com/hbm/items/ModItems.java +++ b/com/hbm/items/ModItems.java @@ -4514,7 +4514,7 @@ public class ModItems { GameRegistry.registerItem(wand, wand.getUnlocalizedName()); GameRegistry.registerItem(wand_s, wand_s.getUnlocalizedName()); GameRegistry.registerItem(wand_d, wand_d.getUnlocalizedName()); - GameRegistry.registerItem(analyzer, analyzer.getUnlocalizedName()); + //GameRegistry.registerItem(analyzer, analyzer.getUnlocalizedName()); //GameRegistry.registerItem(remote, remote.getUnlocalizedName()); GameRegistry.registerItem(euphemium_stopper, euphemium_stopper.getUnlocalizedName()); GameRegistry.registerItem(polaroid, polaroid.getUnlocalizedName()); diff --git a/com/hbm/items/tool/ItemLeadBox.java b/com/hbm/items/tool/ItemLeadBox.java index d8eeca383..3d1b0f961 100644 --- a/com/hbm/items/tool/ItemLeadBox.java +++ b/com/hbm/items/tool/ItemLeadBox.java @@ -21,8 +21,8 @@ public class ItemLeadBox extends Item { @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - if(world.isRemote) - player.openGui(MainRegistry.instance, ModItems.guiID_item_box, world, 0, 0, 0); + //if(world.isRemote) + // player.openGui(MainRegistry.instance, ModItems.guiID_item_box, world, 0, 0, 0); return stack; } diff --git a/com/hbm/lib/HbmWorldGen.java b/com/hbm/lib/HbmWorldGen.java index a3db192ef..850c7d07c 100644 --- a/com/hbm/lib/HbmWorldGen.java +++ b/com/hbm/lib/HbmWorldGen.java @@ -418,7 +418,7 @@ public class HbmWorldGen implements IWorldGenerator { } } - if (biome == BiomeGenBase.plains && rand.nextInt(20) == 0) { + if (biome == BiomeGenBase.plains && rand.nextInt(MainRegistry.geyserWater) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); int y = world.getHeightValue(x, z); @@ -427,7 +427,7 @@ public class HbmWorldGen implements IWorldGenerator { new Geyser().generate(world, rand, x, y, z); } - if (biome == BiomeGenBase.desert && rand.nextInt(20) == 0) { + if (biome == BiomeGenBase.desert && rand.nextInt(MainRegistry.geyserChlorine) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); int y = world.getHeightValue(x, z); @@ -436,7 +436,7 @@ public class HbmWorldGen implements IWorldGenerator { new GeyserLarge().generate(world, rand, x, y, z); } - if (rand.nextInt(20) == 0) { + if (rand.nextInt(MainRegistry.geyserVapor) == 0) { int x = i + rand.nextInt(16); int z = j + rand.nextInt(16); int y = world.getHeightValue(x, z); diff --git a/com/hbm/lib/RefStrings.java b/com/hbm/lib/RefStrings.java index 65431d0e1..adf96ed11 100644 --- a/com/hbm/lib/RefStrings.java +++ b/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ package com.hbm.lib; public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech Mod"; - public static final String VERSION = "1.0.27 BETA (3062)"; + public static final String VERSION = "1.0.27 BETA (3106)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/com/hbm/main/CraftingManager.java b/com/hbm/main/CraftingManager.java index ba4925ce6..394926de9 100644 --- a/com/hbm/main/CraftingManager.java +++ b/com/hbm/main/CraftingManager.java @@ -727,6 +727,9 @@ public class CraftingManager { GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.concrete), 4), new Object[] { "CC", "CC", 'C', ModBlocks.concrete_smooth }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_concrete), 4), new Object[] { " C ", "CBC", " C ", 'C', ModBlocks.concrete_smooth, 'B', Items.clay_ball }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_concrete), 4), new Object[] { " C ", "CBC", " C ", 'C', ModBlocks.concrete, 'B', Items.clay_ball }); + GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_concrete_mossy), 8), new Object[] { "CCC", "CVC", "CCC", 'C', ModBlocks.brick_concrete, 'V', Blocks.vine }); + GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_concrete_cracked), 6), new Object[] { " C " , "C C", " C ", 'C', ModBlocks.brick_concrete }); + GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_concrete_broken), 6), new Object[] { " C " , "C C", " C ", 'C', ModBlocks.brick_concrete_cracked }); GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.brick_obsidian), 4), new Object[] { "FBF", "BFB", "FBF", 'F', Blocks.iron_bars, 'B', Blocks.obsidian }); //GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.cmb_brick), 4), new Object[] { "PPP", "PIP", "PPP", 'P', ModItems.plate_combine_steel, 'I', ModItems.ingot_combine_steel }); //GameRegistry.addRecipe(new ItemStack(Item.getItemFromBlock(ModBlocks.cmb_brick_reinforced), 8), new Object[] { "TBT", "BCB", "TBT", 'T', ModBlocks.block_magnetized_tungsten, 'B', ModBlocks.brick_concrete, 'C', ModBlocks.cmb_brick }); @@ -1411,7 +1414,7 @@ public class CraftingManager { GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.crystal_pulsar, 32), new Object[] { "STS", "THT", "STS", 'S', ModItems.cell_uf6, 'T', "dustAluminum", 'H', ModItems.crystal_charred })); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.fluid_duct, 8), new Object[] { "SAS", " ", "SAS", 'S', "plateSteel", 'A', "plateAluminum" })); - GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.machine_assembler, 1), new Object[] { "WWW", "MCM", "ISI", 'W', ModItems.coil_copper, 'M', ModItems.motor, 'C', ModItems.circuit_aluminium, 'I', "blockIron", 'S', "blockSteel" })); + GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.machine_assembler, 1), new Object[] { "WWW", "MCM", "ISI", 'W', "paneGlass", 'M', ModItems.motor, 'C', ModItems.circuit_aluminium, 'I', "blockCopper", 'S', "blockSteel" })); //GameRegistry.addRecipe(new ItemStack(ModBlocks.machine_chemplant, 1), new Object[] { "HTT", "HPP", "DCD", 'H', ModItems.hull_big_steel, 'T', ModItems.tank_steel, 'P', Blocks.piston, 'D', ModBlocks.fluid_duct, 'C', ModItems.circuit_red_copper }); //GameRegistry.addRecipe(new ItemStack(ModBlocks.machine_fluidtank, 1), new Object[] { "HHH", "HHH", "D D", 'H', ModItems.hull_big_steel, 'D', ModBlocks.fluid_duct }); //GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModBlocks.machine_pumpjack, 1), new Object[] { "BBB", "PSM", "PST", 'B', "blockSteel", 'P', ModItems.pipes_steel, 'S', ModBlocks.steel_scaffold, 'M', ModItems.motor, 'T', ModItems.tank_steel })); diff --git a/com/hbm/main/MainRegistry.java b/com/hbm/main/MainRegistry.java index 0d031bf55..051c7518f 100644 --- a/com/hbm/main/MainRegistry.java +++ b/com/hbm/main/MainRegistry.java @@ -282,10 +282,15 @@ public class MainRegistry public static int dudStructure = 500; public static int spaceshipStructure = 1000; public static int barrelStructure = 5000; + public static int geyserWater = 3000; + public static int geyserChlorine = 3000; + public static int geyserVapor = 500; + public static int broadcaster = 5000; public static int minefreq = 64; public static int radfreq = 5000; public static int vaultfreq = 2500; + public static int meteorStrikeChance = 20 * 60 * 180; public static int meteorShowerChance = 20 * 60 * 5; public static int meteorShowerDuration = 6000; @@ -1615,6 +1620,15 @@ public class MainRegistry Property propVault = config.get(CATEGORY_DUNGEON, "4.16_vaultSpawn", 2500); propVault.comment = "Spawn locked safe on every nTH chunk"; vaultfreq = propVault.getInt(); + Property pGW = config.get(CATEGORY_DUNGEON, "4.17_geyserWaterSpawn", 3000); + pGW.comment = "Spawn water geyser on every nTH chunk"; + geyserWater = pGW.getInt(); + Property pGC = config.get(CATEGORY_DUNGEON, "4.18_geyserChlorineSpawn", 3000); + pGC.comment = "Spawn poison geyser on every nTH chunk"; + geyserChlorine = pGC.getInt(); + Property pGV = config.get(CATEGORY_DUNGEON, "4.19_geyserVaporSpawn", 500); + pGV.comment = "Spawn vapor geyser on every nTH chunk"; + geyserVapor = pGV.getInt(); final String CATEGORY_METEOR = "05_meteors"; Property propMeteorStrikeChance = config.get(CATEGORY_METEOR, "5.00_meteorStrikeChance", 20 * 60 * 180); @@ -1717,6 +1731,9 @@ public class MainRegistry dudStructure = setDef(dudStructure, 1000); spaceshipStructure = setDef(spaceshipStructure, 1000); barrelStructure = setDef(barrelStructure, 1000); + geyserWater = setDef(geyserWater, 1000); + geyserChlorine = setDef(geyserChlorine, 1000); + geyserVapor = setDef(geyserVapor, 1000); broadcaster = setDef(broadcaster, 1000); minefreq = setDef(minefreq, 1000); radfreq = setDef(radfreq, 1000); diff --git a/com/hbm/packet/AuxParticlePacket.java b/com/hbm/packet/AuxParticlePacket.java new file mode 100644 index 000000000..89bd001ec --- /dev/null +++ b/com/hbm/packet/AuxParticlePacket.java @@ -0,0 +1,83 @@ +package com.hbm.packet; + +import com.hbm.tileentity.machine.TileEntityMachineAssembler; +import com.hbm.tileentity.machine.TileEntityMachinePumpjack; + +import cpw.mods.fml.common.network.simpleimpl.IMessage; +import cpw.mods.fml.common.network.simpleimpl.IMessageHandler; +import cpw.mods.fml.common.network.simpleimpl.MessageContext; +import io.netty.buffer.ByteBuf; +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EntityCloudFX; +import net.minecraft.client.particle.EntitySmokeFX; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +public class AuxParticlePacket implements IMessage { + + double x; + double y; + double z; + int type; + + public AuxParticlePacket() + { + + } + + public AuxParticlePacket(double x, double y, double z, int type) + { + this.x = x; + this.y = y; + this.z = z; + this.type = type; + } + + @Override + public void fromBytes(ByteBuf buf) { + x = buf.readDouble(); + y = buf.readDouble(); + z = buf.readDouble(); + type = buf.readInt(); + } + + @Override + public void toBytes(ByteBuf buf) { + buf.writeDouble(x); + buf.writeDouble(y); + buf.writeDouble(z); + buf.writeInt(type); + } + + public static class Handler implements IMessageHandler { + + @Override + public IMessage onMessage(AuxParticlePacket m, MessageContext ctx) { + + try { + + World world = Minecraft.getMinecraft().theWorld; + + switch(m.type) { + case 0: + + for(int i = 0; i < 10; i++) { + EntityCloudFX smoke = new EntityCloudFX(world, m.x + world.rand.nextGaussian(), m.y + world.rand.nextGaussian(), m.z + world.rand.nextGaussian(), 0.0, 0.0, 0.0); + Minecraft.getMinecraft().effectRenderer.addEffect(smoke); + } + break; + + case 1: + + EntityCloudFX smoke = new EntityCloudFX(world, m.x, m.y, m.z, 0.0, 0.1, 0.0); + Minecraft.getMinecraft().effectRenderer.addEffect(smoke); + break; + } + + } catch(Exception x) { } + + return null; + } + } +} diff --git a/com/hbm/packet/PacketDispatcher.java b/com/hbm/packet/PacketDispatcher.java index 50023ebbb..08ec6e015 100644 --- a/com/hbm/packet/PacketDispatcher.java +++ b/com/hbm/packet/PacketDispatcher.java @@ -81,6 +81,8 @@ public class PacketDispatcher { wrapper.registerMessage(TEControlPacket.Handler.class, TEControlPacket.class, i++, Side.CLIENT); //Sends button information for ItemGunBase wrapper.registerMessage(GunButtonPacket.Handler.class, GunButtonPacket.class, i++, Side.SERVER); + //Packet to send block break particles + wrapper.registerMessage(AuxParticlePacket.Handler.class, AuxParticlePacket.class, i++, Side.CLIENT); } } diff --git a/com/hbm/tileentity/machine/TileEntityCrateIron.java b/com/hbm/tileentity/machine/TileEntityCrateIron.java index 5ae5bc221..b79b144b6 100644 --- a/com/hbm/tileentity/machine/TileEntityCrateIron.java +++ b/com/hbm/tileentity/machine/TileEntityCrateIron.java @@ -157,12 +157,12 @@ public class TileEntityCrateIron extends TileEntityLockableBase implements ISide @Override public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); + return this.isItemValidForSlot(i, itemStack) && !this.isLocked(); } @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return true; + return !this.isLocked(); } } diff --git a/com/hbm/tileentity/machine/TileEntityCrateSteel.java b/com/hbm/tileentity/machine/TileEntityCrateSteel.java index cd2c6777b..1983f7deb 100644 --- a/com/hbm/tileentity/machine/TileEntityCrateSteel.java +++ b/com/hbm/tileentity/machine/TileEntityCrateSteel.java @@ -150,11 +150,11 @@ public class TileEntityCrateSteel extends TileEntityLockableBase implements ISid @Override public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); + return this.isItemValidForSlot(i, itemStack) && !this.isLocked(); } @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return true; + return !this.isLocked(); } } diff --git a/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index 8336c8e6b..bd5c838d5 100644 --- a/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -19,11 +19,13 @@ import com.hbm.items.tool.ItemAssemblyTemplate; import com.hbm.items.tool.ItemChemistryTemplate; import com.hbm.lib.Library; import com.hbm.packet.AuxElectricityPacket; +import com.hbm.packet.AuxParticlePacket; import com.hbm.packet.LoopedSoundPacket; import com.hbm.packet.PacketDispatcher; import com.hbm.packet.TEAssemblerPacket; import com.hbm.packet.TEChemplantPacket; +import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.entity.player.EntityPlayer; @@ -432,16 +434,20 @@ public class TileEntityMachineChemplant extends TileEntity implements ISidedInve if(isProgressing) { if(meta == 2) { - worldObj.spawnEntityInWorld(new EntityGasFlameFX(worldObj, xCoord + 0.375, yCoord + 3, zCoord - 0.625, 0.0, 0.0, 0.0)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacket(xCoord + 0.375, yCoord + 3, zCoord - 0.625, 1), + new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.375, yCoord + 3, zCoord - 0.625, 50)); } if(meta == 3) { - worldObj.spawnEntityInWorld(new EntityGasFlameFX(worldObj, xCoord + 0.625, yCoord + 3, zCoord + 1.625, 0.0, 0.0, 0.0)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacket(xCoord + 0.625, yCoord + 3, zCoord + 1.625, 1), + new TargetPoint(worldObj.provider.dimensionId, xCoord + 0.625, yCoord + 3, zCoord + 1.625, 50)); } if(meta == 4) { - worldObj.spawnEntityInWorld(new EntityGasFlameFX(worldObj, xCoord - 0.625, yCoord + 3, zCoord + 0.625, 0.0, 0.0, 0.0)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacket(xCoord - 0.625, yCoord + 3, zCoord + 0.625, 1), + new TargetPoint(worldObj.provider.dimensionId, xCoord - 0.625, yCoord + 3, zCoord + 0.625, 50)); } if(meta == 5) { - worldObj.spawnEntityInWorld(new EntityGasFlameFX(worldObj, xCoord + 1.625, yCoord + 3, zCoord + 0.375, 0.0, 0.0, 0.0)); + PacketDispatcher.wrapper.sendToAllAround(new AuxParticlePacket(xCoord + 1.625, yCoord + 3, zCoord + 0.375, 1), + new TargetPoint(worldObj.provider.dimensionId, xCoord + 1.625, yCoord + 3, zCoord + 0.375, 50)); } } diff --git a/com/hbm/tileentity/machine/TileEntitySafe.java b/com/hbm/tileentity/machine/TileEntitySafe.java index 3af01a068..e1005ef75 100644 --- a/com/hbm/tileentity/machine/TileEntitySafe.java +++ b/com/hbm/tileentity/machine/TileEntitySafe.java @@ -150,11 +150,11 @@ public class TileEntitySafe extends TileEntityLockableBase implements ISidedInve @Override public boolean canInsertItem(int i, ItemStack itemStack, int j) { - return this.isItemValidForSlot(i, itemStack); + return this.isItemValidForSlot(i, itemStack) && !this.isLocked(); } @Override public boolean canExtractItem(int i, ItemStack itemStack, int j) { - return true; + return !this.isLocked(); } }