diff --git a/changelog b/changelog index 03770a9c0..878ed0d32 100644 --- a/changelog +++ b/changelog @@ -1,10 +1,11 @@ ## Changed -* All compound plates can now also be made in the assembler -* Opening crates when held is now disabled by default +* Updated chinese localiation +* Duds now have a radioactive AoE effect around them based on type +* HPS is no longer tagged as radioactive and no longer requires hazardous materials tanks to store + * Somehow, these meaningless tags triggered people exceptionally hard. Go annoy someone else. +* Solderers and arc welders can now use overdrive upgrades + * Do note that processing speed rises linearly, but power draw rises exponentially ## Fixed -* Fixed all dud variants having the balefire explosion effect -* Fixed demolition charges being able to explode multiple times when hitting entities -* Condensers are no longer affected by post-impact effects, fixing an issue where HP condenser tanks would go into the negatives -* Probably fixed particle accelerator recipe config not working -* Fixed potential dupe bug involving many held inventories \ No newline at end of file +* Crates? Maybe? +* Fixed conveyor placer not being usable on the conveyor sorter \ No newline at end of file diff --git a/src/main/java/com/hbm/config/ServerConfig.java b/src/main/java/com/hbm/config/ServerConfig.java index 43dfc36ae..0ca1ccdcf 100644 --- a/src/main/java/com/hbm/config/ServerConfig.java +++ b/src/main/java/com/hbm/config/ServerConfig.java @@ -17,7 +17,7 @@ public class ServerConfig extends RunningConfig { public static ConfigWrapper MINE_NUKE_DAMAGE = new ConfigWrapper(100F); public static ConfigWrapper MINE_NAVAL_DAMAGE = new ConfigWrapper(60F); public static ConfigWrapper TAINT_TRAILS = new ConfigWrapper(false); - public static ConfigWrapper CRATE_ALLOW_OPEN_HELD = new ConfigWrapper(true); + public static ConfigWrapper CRATE_OPEN_HELD = new ConfigWrapper(true); public static ConfigWrapper CRATE_KEEP_CONTENTS = new ConfigWrapper(true); public static ConfigWrapper ITEM_HAZARD_DROP_TICKRATE = new ConfigWrapper(2); @@ -29,7 +29,7 @@ public class ServerConfig extends RunningConfig { configMap.put("MINE_NUKE_DAMAGE", MINE_NUKE_DAMAGE); configMap.put("MINE_NAVAL_DAMAGE", MINE_NAVAL_DAMAGE); configMap.put("TAINT_TRAILS", TAINT_TRAILS); - configMap.put("CRATE_ALLOW_OPEN_HELD", CRATE_ALLOW_OPEN_HELD); + configMap.put("CRATE_OPEN_HELD", CRATE_OPEN_HELD); configMap.put("CRATE_KEEP_CONTENTS", CRATE_KEEP_CONTENTS); configMap.put("ITEM_HAZARD_DROP_TICKRATE", ITEM_HAZARD_DROP_TICKRATE); } diff --git a/src/main/java/com/hbm/inventory/fluid/Fluids.java b/src/main/java/com/hbm/inventory/fluid/Fluids.java index d4c52f1cb..64a23a86b 100644 --- a/src/main/java/com/hbm/inventory/fluid/Fluids.java +++ b/src/main/java/com/hbm/inventory/fluid/Fluids.java @@ -336,7 +336,7 @@ public class Fluids { BLOOD_HOT = new FluidType("BLOOD_HOT", 0xF22419, 3, 0, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS).setTemp(666); //it's funny because it's the satan number SYNGAS = new FluidType("SYNGAS", 0x131313, 1, 4, 2, EnumSymbol.NONE).addContainers(new CD_Gastank(0xFFFFFF, 0x131313)).addTraits(GASEOUS); OXYHYDROGEN = new FluidType("OXYHYDROGEN", 0x483FC1, 0, 4, 2, EnumSymbol.NONE).addTraits(GASEOUS); - RADIOSOLVENT = new FluidType("RADIOSOLVENT", 0xA4D7DD, 3, 3, 0, EnumSymbol.NONE).addTraits(LIQUID, LEADCON, new FT_Corrosive(50), new FT_VentRadiation(0.01F)); + RADIOSOLVENT = new FluidType("RADIOSOLVENT", 0xA4D7DD, 3, 3, 0, EnumSymbol.NONE).addTraits(LIQUID, new FT_Corrosive(50)); CHLORINE = new FluidType("CHLORINE", 0xBAB572, 3, 0, 0, EnumSymbol.OXIDIZER).addContainers(new CD_Gastank(0xBAB572, 0x887B34)).addTraits(GASEOUS, new FT_Corrosive(25)); HEAVYOIL_VACUUM = new FluidType("HEAVYOIL_VACUUM", 0x131214, 2, 1, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, P_OIL).addContainers(new CD_Canister(0x513F39)); REFORMATE = new FluidType("REFORMATE", 0x835472, 2, 2, 0, EnumSymbol.NONE).addTraits(LIQUID, VISCOUS, P_FUEL).addContainers(new CD_Canister(0xD180D6)); diff --git a/src/main/java/com/hbm/items/block/ItemBlockStorageCrate.java b/src/main/java/com/hbm/items/block/ItemBlockStorageCrate.java index 94d61c10f..cf24e36c3 100644 --- a/src/main/java/com/hbm/items/block/ItemBlockStorageCrate.java +++ b/src/main/java/com/hbm/items/block/ItemBlockStorageCrate.java @@ -36,7 +36,7 @@ public class ItemBlockStorageCrate extends ItemBlockBase implements IGUIProvider @Override public ItemStack onItemRightClick(ItemStack stack, World world, EntityPlayer player) { - if(!ServerConfig.CRATE_ALLOW_OPEN_HELD.get()) return stack; + if(!ServerConfig.CRATE_OPEN_HELD.get()) return stack; Block block = Block.getBlockFromItem(player.getHeldItem().getItem()); if(block == ModBlocks.mass_storage) return stack; // Genuinely can't figure out how to make this part work, so I'm just not gonna mess with it. diff --git a/src/main/java/com/hbm/items/tool/ItemToolBox.java b/src/main/java/com/hbm/items/tool/ItemToolBox.java index 9707e09d7..8be7104ea 100644 --- a/src/main/java/com/hbm/items/tool/ItemToolBox.java +++ b/src/main/java/com/hbm/items/tool/ItemToolBox.java @@ -10,7 +10,6 @@ import com.hbm.tileentity.IGUIProvider; import com.hbm.util.ItemStackUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; -import net.minecraft.client.Minecraft; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; diff --git a/src/main/java/com/hbm/tileentity/bomb/TileEntityCrashedBomb.java b/src/main/java/com/hbm/tileentity/bomb/TileEntityCrashedBomb.java index cf70bb5f8..8e70048c8 100644 --- a/src/main/java/com/hbm/tileentity/bomb/TileEntityCrashedBomb.java +++ b/src/main/java/com/hbm/tileentity/bomb/TileEntityCrashedBomb.java @@ -1,16 +1,47 @@ package com.hbm.tileentity.bomb; +import java.util.List; +import java.util.function.BiConsumer; + +import com.hbm.blocks.bomb.BlockCrashedBomb.EnumDudType; +import com.hbm.util.ContaminationUtil; +import com.hbm.util.EnumUtil; +import com.hbm.util.ContaminationUtil.ContaminationType; +import com.hbm.util.ContaminationUtil.HazardType; + import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; public class TileEntityCrashedBomb extends TileEntity { @Override - public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; } + public void updateEntity() { + + if(!worldObj.isRemote) { + + if(worldObj.getTotalWorldTime() % 2 == 0) { + EnumDudType type = EnumUtil.grabEnumSafely(EnumDudType.class, this.getBlockMetadata()); + + if(type == type.BALEFIRE) affectEntities((entity, intensity) -> { ContaminationUtil.contaminate(entity, HazardType.RADIATION, ContaminationType.CREATIVE, 1F * intensity); }, 15D); + if(type == type.NUKE) affectEntities((entity, intensity) -> { ContaminationUtil.contaminate(entity, HazardType.RADIATION, ContaminationType.CREATIVE, 0.25F * intensity); }, 10D); + if(type == type.SALTED) affectEntities((entity, intensity) -> { ContaminationUtil.contaminate(entity, HazardType.RADIATION, ContaminationType.CREATIVE, 0.5F * intensity); }, 10D); + } + } + } - @Override - @SideOnly(Side.CLIENT) - public double getMaxRenderDistanceSquared() { return 65536.0D; } + public void affectEntities(BiConsumer effect, double range) { + List list = worldObj.getEntitiesWithinAABB(EntityLivingBase.class, AxisAlignedBB.getBoundingBox(xCoord + 0.5, yCoord + 0.5, zCoord + 0.5, xCoord + 0.5, yCoord + 0.5, zCoord + 0.5).expand(range, range, range)); + for(EntityLivingBase entity : list) { + double dist = Math.sqrt(getDistanceFrom(entity.posX, entity.posY + entity.height / 2, entity.posZ)); + if(dist > range) continue; + float intensity = (float) (1D - dist / range); + effect.accept(entity, intensity); + } + } + + @Override public AxisAlignedBB getRenderBoundingBox() { return TileEntity.INFINITE_EXTENT_AABB; } + @Override @SideOnly(Side.CLIENT) public double getMaxRenderDistanceSquared() { return 65536.0D; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java index 605cd06db..aa9f9736f 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineArcWelder.java @@ -18,6 +18,7 @@ import com.hbm.items.machine.ItemMachineUpgrade.UpgradeType; import com.hbm.lib.Library; import com.hbm.tileentity.*; import com.hbm.packet.toclient.AuxParticlePacketNT; +import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; @@ -92,14 +93,16 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements upgradeManager.checkSlots(this, slots, 6, 7); int redLevel = upgradeManager.getLevel(UpgradeType.SPEED); int blueLevel = upgradeManager.getLevel(UpgradeType.POWER); + int blackLevel = upgradeManager.getLevel(UpgradeType.OVERDRIVE); if(recipe != null) { this.processTime = recipe.duration - (recipe.duration * redLevel / 6) + (recipe.duration * blueLevel / 3); this.consumption = recipe.consumption + (recipe.consumption * redLevel) - (recipe.consumption * blueLevel / 6); + this.consumption *= Math.pow(2, blackLevel); intendedMaxPower = recipe.consumption * 20; if(canProcess(recipe)) { - this.progress++; + this.progress += (1 + blackLevel); this.power -= this.consumption; if(progress >= processTime) { @@ -369,7 +372,7 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements @Override public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { - return type == UpgradeType.SPEED || type == UpgradeType.POWER; + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; } @Override @@ -383,6 +386,9 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 100 / 6) + "%")); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 100 / 3) + "%")); } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } } @Override @@ -390,6 +396,7 @@ public class TileEntityMachineArcWelder extends TileEntityMachineBase implements HashMap upgrades = new HashMap<>(); upgrades.put(UpgradeType.SPEED, 3); upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.OVERDRIVE, 3); return upgrades; } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java index 995b449e9..5515a816d 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineSolderingStation.java @@ -22,6 +22,7 @@ import com.hbm.packet.toclient.AuxParticlePacketNT; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.IUpgradeInfoProvider; import com.hbm.tileentity.TileEntityMachineBase; +import com.hbm.util.BobMathUtil; import com.hbm.util.I18nUtil; import com.hbm.util.fauxpointtwelve.DirPos; @@ -98,14 +99,16 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp upgradeManager.checkSlots(this, slots, 9, 10); int redLevel = upgradeManager.getLevel(UpgradeType.SPEED); int blueLevel = upgradeManager.getLevel(UpgradeType.POWER); + int blackLevel = upgradeManager.getLevel(UpgradeType.OVERDRIVE); if(recipe != null) { this.processTime = recipe.duration - (recipe.duration * redLevel / 6) + (recipe.duration * blueLevel / 3); this.consumption = recipe.consumption + (recipe.consumption * redLevel) - (recipe.consumption * blueLevel / 6); + this.consumption *= Math.pow(2, blackLevel); intendedMaxPower = recipe.consumption * 20; if(canProcess(recipe)) { - this.progress++; + this.progress += (1 + blackLevel); this.power -= this.consumption; if(progress >= processTime) { @@ -360,7 +363,7 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp @Override public boolean canProvideInfo(UpgradeType type, int level, boolean extendedInfo) { - return type == UpgradeType.SPEED || type == UpgradeType.POWER; + return type == UpgradeType.SPEED || type == UpgradeType.POWER || type == UpgradeType.OVERDRIVE; } @Override @@ -374,6 +377,9 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp info.add(EnumChatFormatting.GREEN + I18nUtil.resolveKey(this.KEY_CONSUMPTION, "-" + (level * 100 / 6) + "%")); info.add(EnumChatFormatting.RED + I18nUtil.resolveKey(this.KEY_DELAY, "+" + (level * 100 / 3) + "%")); } + if(type == UpgradeType.OVERDRIVE) { + info.add((BobMathUtil.getBlink() ? EnumChatFormatting.RED : EnumChatFormatting.DARK_GRAY) + "YES"); + } } @Override @@ -381,6 +387,7 @@ public class TileEntityMachineSolderingStation extends TileEntityMachineBase imp HashMap upgrades = new HashMap<>(); upgrades.put(UpgradeType.SPEED, 3); upgrades.put(UpgradeType.POWER, 3); + upgrades.put(UpgradeType.OVERDRIVE, 3); return upgrades; } diff --git a/src/main/resources/assets/hbm/textures/gui/processing/gui_chemplant.png b/src/main/resources/assets/hbm/textures/gui/processing/gui_chemplant.png new file mode 100644 index 000000000..8d24bb62f Binary files /dev/null and b/src/main/resources/assets/hbm/textures/gui/processing/gui_chemplant.png differ