diff --git a/changelog b/changelog index ce18603a4..c594e4738 100644 --- a/changelog +++ b/changelog @@ -5,4 +5,20 @@ * Mainly intended to serve as an easy way to automate/bulk craft certain elements in earlygame before BOP * While the byproduct chances are rather low and the recipe times are slow, the mills are easily scalable due to their low cost * Comes with convenient stacking frame - * Ideal for skyblock/seablock type challenge runs, as it can be configured to serve as an Ex Nihilo substitute \ No newline at end of file + * Ideal for skyblock/seablock type challenge runs, as it can be configured to serve as an Ex Nihilo substitute + * Can also perform the sand and colloid to clay recipe of the acidizer, but at a lower efficiency + +## Changed +* Updated russian localization +* The cargo elevator can now be controlled using RoR, allowing the platform to stop at certain heights +* Updated the pepperbox textures + * The wood now looks more like wood and less like plastic + * The bronze parts now have more depth +* Conveyor items being deleted due to cramming can now be configured with the server config `CONVEYOR_CRAM_MAX`, the default still being 25 +* Conveyor belts being destroyed due to item cramming can now be configured with the server config `CONVEYOR_CRAM_EXPLODE`, it is still on by default +* Conveyor items will no longer break any belts, even with the config enabled, if the conveyor item entities have existed for less than one cram check cycle + * This means that items that have piled up due to chunk loading should now safely self-destruct without breaking conveyor lines + +## Fixed +* Fixed pollution detector localization not working, showing only error messages instead of the pollution type names +* Fixed un-clamped gaussian random use on the wideband detector satellite, causing uncommon detections with inaccuracy exceeding the intended amount \ 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 90d5b94c7..c82e09763 100644 --- a/src/main/java/com/hbm/config/ServerConfig.java +++ b/src/main/java/com/hbm/config/ServerConfig.java @@ -23,6 +23,8 @@ public class ServerConfig extends RunningConfig { public static ConfigWrapper ENABLE_MKU = new ConfigWrapper(true); public static ConfigWrapper STRUCTURE_DEBUG = new ConfigWrapper(false); public static ConfigWrapper AUTOCAL_MAX_CLOCK = new ConfigWrapper(20); + public static ConfigWrapper CONVEYOR_CRAM_MAX = new ConfigWrapper(25); + public static ConfigWrapper CONVEYOR_CRAM_EXPLODE = new ConfigWrapper(true); private static void initDefaults() { configMap.put("DAMAGE_COMPATIBILITY_MODE", DAMAGE_COMPATIBILITY_MODE); @@ -38,6 +40,8 @@ public class ServerConfig extends RunningConfig { configMap.put("ENABLE_MKU", ENABLE_MKU); configMap.put("STRUCTURE_DEBUG", STRUCTURE_DEBUG); configMap.put("AUTOCAL_MAX_CLOCK", AUTOCAL_MAX_CLOCK); + configMap.put("CONVEYOR_CRAM_MAX", CONVEYOR_CRAM_MAX); + configMap.put("CONVEYOR_CRAM_EXPLODE", CONVEYOR_CRAM_EXPLODE); } /** Initializes defaults, then reads the config file if it exists, then writes the config file. */ diff --git a/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java b/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java index a2175a581..1afd6f9aa 100644 --- a/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java +++ b/src/main/java/com/hbm/entity/item/EntityMovingConveyorObject.java @@ -2,6 +2,7 @@ package com.hbm.entity.item; import java.util.List; +import com.hbm.config.ServerConfig; import com.hbm.explosion.vanillant.ExplosionVNT; import com.hbm.explosion.vanillant.standard.ExplosionEffectTiny; import com.hbm.lib.Library; @@ -84,7 +85,7 @@ public abstract class EntityMovingConveyorObject extends Entity { // cram check every 20s if((ticksExisted + this.getEntityId()) % 400 == 0) { List objs = worldObj.getEntitiesWithinAABB(EntityMovingConveyorObject.class, this.boundingBox.expand(0.125, 0.125, 0.125)); - if(objs.size() >= 25) { + if(objs.size() >= ServerConfig.CONVEYOR_CRAM_MAX.get()) { for(EntityMovingConveyorObject obj : objs) obj.setDead(); ExplosionVNT vnt = new ExplosionVNT(worldObj, posX, posY + 0.125, posZ, 1, this); vnt.setSFX(new ExplosionEffectTiny()); @@ -92,7 +93,9 @@ public abstract class EntityMovingConveyorObject extends Entity { int x = (int) Math.floor(posX); int y = (int) Math.floor(posY); int z = (int) Math.floor(posZ); - if(worldObj.getBlock(x, y, z) instanceof IConveyorBelt) worldObj.func_147480_a(x, y, z, false); + + if(worldObj.getBlock(x, y, z) instanceof IConveyorBelt && this.ticksExisted > 400 && ServerConfig.CONVEYOR_CRAM_EXPLODE.get()) + worldObj.func_147480_a(x, y, z, false); } } diff --git a/src/main/java/com/hbm/inventory/recipes/RockMillRecipes.java b/src/main/java/com/hbm/inventory/recipes/RockMillRecipes.java index 73c0e8e3d..5d7c5edfc 100644 --- a/src/main/java/com/hbm/inventory/recipes/RockMillRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/RockMillRecipes.java @@ -39,6 +39,7 @@ public class RockMillRecipes extends GenericRecipes { this.register(new GenericRecipe("rock.cobble").setup(duraShort, consumption).setNameWrapper("rock.crushing") .inputItems(new OreDictStack(KEY_COBBLESTONE)) .inputFluids(new FluidStack(Fluids.WATER, 250)) + .outputFluids(new FluidStack(Fluids.COLLOID, 250)) .outputItems(new ChanceOutputMulti( new ChanceOutput(new ItemStack(Blocks.gravel), 95), new ChanceOutput(new ItemStack(ModItems.powder_quartz), 5) @@ -47,6 +48,7 @@ public class RockMillRecipes extends GenericRecipes { this.register(new GenericRecipe("rock.gravel").setup(duraShort, consumption).setNameWrapper("rock.crushing") .inputItems(new ComparableStack(Blocks.gravel)) .inputFluids(new FluidStack(Fluids.WATER, 250)) + .outputFluids(new FluidStack(Fluids.COLLOID, 250)) .outputItems(new ChanceOutputMulti( new ChanceOutput(new ItemStack(Blocks.sand), 75), new ChanceOutput(new ItemStack(Items.flint), 20), @@ -56,6 +58,7 @@ public class RockMillRecipes extends GenericRecipes { this.register(new GenericRecipe("rock.sand").setup(duraShort, consumption).setNameWrapper("rock.crushing") .inputItems(new OreDictStack(KEY_SAND)) .inputFluids(new FluidStack(Fluids.WATER, 250)) + .outputFluids(new FluidStack(Fluids.COLLOID, 250)) .outputItems(new ChanceOutputMulti( new ChanceOutput(new ItemStack(ModItems.dust), 90), new ChanceOutput(new ItemStack(ModItems.powder_calcium), 5), @@ -65,6 +68,7 @@ public class RockMillRecipes extends GenericRecipes { this.register(new GenericRecipe("rock.netherrack").setup(duraShort, consumption).setNameWrapper("rock.crushing") .inputItems(new ComparableStack(Blocks.netherrack)) .inputFluids(new FluidStack(Fluids.WATER, 250)) + .outputFluids(new FluidStack(Fluids.LAVA, 100)) .outputItems(new ChanceOutputMulti( new ChanceOutput(new ItemStack(Blocks.gravel), 50), new ChanceOutput(new ItemStack(Blocks.soul_sand), 25), @@ -75,6 +79,7 @@ public class RockMillRecipes extends GenericRecipes { this.register(new GenericRecipe("rock.soulsand").setup(duraShort, consumption).setNameWrapper("rock.crushing") .inputItems(new ComparableStack(Blocks.soul_sand)) .inputFluids(new FluidStack(Fluids.WATER, 250)) + .outputFluids(new FluidStack(Fluids.LAVA, 100)) .outputItems(new ChanceOutputMulti( new ChanceOutput(new ItemStack(Blocks.sand), 50), new ChanceOutput(new ItemStack(ModItems.powder_fire), 25), @@ -86,6 +91,7 @@ public class RockMillRecipes extends GenericRecipes { this.register(new GenericRecipe("rock.schist").setup(duraLong, consumption).setNameWrapper("rock.crushing") .inputItems(new ComparableStack(ModBlocks.stone_gneiss)) .inputFluids(new FluidStack(Fluids.WATER, 250)) + .outputFluids(new FluidStack(Fluids.COLLOID, 250)) .outputItems(new ChanceOutputMulti( new ChanceOutput(new ItemStack(Blocks.gravel), 50), new ChanceOutput(new ItemStack(Blocks.sand), 10), @@ -98,6 +104,7 @@ public class RockMillRecipes extends GenericRecipes { this.register(new GenericRecipe("rock.hematite").setup(duraLong, consumption).setNameWrapper("rock.crushing") .inputItems(new OreDictStack(HEMATITE.ore())) .inputFluids(new FluidStack(Fluids.WATER, 250)) + .outputFluids(new FluidStack(Fluids.COLLOID, 250)) .outputItems(new ChanceOutputMulti( new ChanceOutput(new ItemStack(Blocks.gravel), 65), new ChanceOutput(new ItemStack(ModItems.powder_iron), 25), @@ -107,6 +114,7 @@ public class RockMillRecipes extends GenericRecipes { this.register(new GenericRecipe("rock.bauxite").setup(duraLong, consumption).setNameWrapper("rock.crushing") .inputItems(new OreDictStack(BAUXITE.ore())) .inputFluids(new FluidStack(Fluids.WATER, 250)) + .outputFluids(new FluidStack(Fluids.COLLOID, 250)) .outputItems(new ChanceOutputMulti( new ChanceOutput(new ItemStack(Blocks.gravel), 25), new ChanceOutput(new ItemStack(Items.clay_ball), 25), @@ -115,9 +123,8 @@ public class RockMillRecipes extends GenericRecipes { )).setIconToFirstIngredient().setGroup(groupCrush, INSTANCE)); this.register(new GenericRecipe("rock.clay").setup(duraLong, consumption) - .inputItems(new OreDictStack(KEY_SAND), - new ComparableStack(ModItems.dust)) - .inputFluids(new FluidStack(Fluids.WATER, 1_000)) + .inputItems(new OreDictStack(KEY_SAND, 2)) + .inputFluids(new FluidStack(Fluids.COLLOID, 2_500)) .outputItems(new ItemStack(Items.clay_ball, 4))); } } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index 746ba9f50..7b7aea644 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -1257,8 +1257,10 @@ public class ClientProxy extends ServerProxy { if("blockdust".equals(data.getString("mode"))) { Block b = Block.getBlockById(data.getInteger("block")); - fx = new net.minecraft.client.particle.EntityBlockDustFX(world, x, y, z, mX, mY + 0.2, mZ, b, 0); + byte meta = data.getByte("meta"); + fx = new net.minecraft.client.particle.EntityBlockDustFX(world, x, y, z, mX, mY + 0.2, mZ, b, meta); ReflectionHelper.setPrivateValue(EntityFX.class, fx, 10 + rand.nextInt(20), "particleMaxAge", "field_70547_e"); + fx.setRBGColorF(0.8F, 0.8F, 0.8F); } if("colordust".equals(data.getString("mode"))) { diff --git a/src/main/java/com/hbm/saveddata/satellites/SatelliteDetector.java b/src/main/java/com/hbm/saveddata/satellites/SatelliteDetector.java index f2e08578a..3c90de4d6 100644 --- a/src/main/java/com/hbm/saveddata/satellites/SatelliteDetector.java +++ b/src/main/java/com/hbm/saveddata/satellites/SatelliteDetector.java @@ -4,6 +4,7 @@ import java.util.ArrayList; import java.util.List; import api.hbm.redstoneoverradio.IRORInteractive; +import net.minecraft.util.MathHelper; import net.minecraft.world.World; public class SatelliteDetector extends SatelliteBase { @@ -98,8 +99,8 @@ public class SatelliteDetector extends SatelliteBase { intensity == BurstIntensity.MEDIUM ? INACCURACY_MEDIUM : INARRCURACY_HIGH; - this.x += world.rand.nextGaussian() * inaccuracy; - this.z += world.rand.nextGaussian() * inaccuracy; + this.x += MathHelper.clamp_double(world.rand.nextGaussian(), -1, 1) * inaccuracy; + this.z += MathHelper.clamp_double(world.rand.nextGaussian(), -1, 1) * inaccuracy; } } diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRockMill.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRockMill.java index bdb6c735b..161b08762 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRockMill.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineRockMill.java @@ -8,10 +8,13 @@ import com.hbm.inventory.gui.GUIMachineRockMill; import com.hbm.inventory.recipes.loader.GenericRecipe; import com.hbm.items.ModItems; import com.hbm.lib.Library; +import com.hbm.main.MainRegistry; import com.hbm.module.machine.ModuleMachineRockMill; import com.hbm.tileentity.IGUIProvider; import com.hbm.tileentity.TileEntityMachineBase; import com.hbm.util.BobMathUtil; +import com.hbm.util.Vec3NT; +import com.hbm.util.fauxpointtwelve.BlockPos; import com.hbm.util.fauxpointtwelve.DirPos; import api.hbm.energymk2.IBatteryItem; @@ -20,8 +23,11 @@ import api.hbm.fluidmk2.IFluidStandardTransceiverMK2; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import io.netty.buffer.ByteBuf; +import net.minecraft.block.Block; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.inventory.Container; +import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; @@ -79,7 +85,7 @@ public class TileEntityMachineRockMill extends TileEntityMachineBase implements this.maxPower = recipe.power * 100; } - this.maxPower = BobMathUtil.max(this.power, this.maxPower, 1_000_000); + this.maxPower = BobMathUtil.max(this.power, this.maxPower, 2_500); this.power = Library.chargeTEFromItems(slots, 0, power, maxPower); @@ -92,6 +98,16 @@ public class TileEntityMachineRockMill extends TileEntityMachineBase implements this.rockMillModule.update(1D, 1D, true, slots[1]); this.didProcess = this.rockMillModule.didProcess; if(this.rockMillModule.markDirty) this.markDirty(); + + if(this.didProcess && (worldObj.getTotalWorldTime() + BlockPos.getIdentity(xCoord, yCoord, zCoord)) % 3 == 0) { + String sound = Blocks.stone.stepSound.getStepResourcePath(); + + if(recipe != null && recipe.getIcon().getItem() instanceof ItemBlock && ((ItemBlock) recipe.getIcon().getItem()).field_150939_a != null) { + sound = ((ItemBlock) recipe.getIcon().getItem()).field_150939_a.stepSound.getStepResourcePath(); + } + + worldObj.playSoundEffect(xCoord + 0.5, yCoord + 1.5, zCoord + 0.5, sound, this.getVolume(1.0F), 0.75F); + } this.networkPackNT(100); @@ -112,6 +128,38 @@ public class TileEntityMachineRockMill extends TileEntityMachineBase implements if(worldObj.getTotalWorldTime() % 20 == 0) { frame = !worldObj.getBlock(xCoord, yCoord + 3, zCoord).isAir(worldObj, xCoord, yCoord + 3, zCoord); } + + if(this.didProcess && MainRegistry.proxy.me().getDistanceSq(xCoord + 0.5, yCoord + 1.5, zCoord + 0.5) < 35 * 35) { + + GenericRecipe recipe = rockMillModule.getRecipe(); + Block block = Blocks.gravel; + int meta = 0; + + if(recipe != null) { + if(recipe.getIcon().getItem() instanceof ItemBlock) { + block = Block.getBlockFromItem(recipe.getIcon().getItem()); + meta = recipe.getIcon().getItemDamage(); + } + } + + Vec3NT vec = new Vec3NT(1, 0, 0); + vec.rotateAroundYDeg(worldObj.rand.nextDouble() * 360); + + double speed = 0.125D; + + NBTTagCompound data = new NBTTagCompound(); + data.setString("type", "vanillaExt"); + data.setString("mode", "blockdust"); + data.setInteger("block", Block.getIdFromBlock(block)); + data.setByte("meta", (byte) meta); + data.setDouble("mX", vec.xCoord * speed); + data.setDouble("mY", vec.yCoord * speed - 0.1D); + data.setDouble("mZ", vec.zCoord * speed); + data.setDouble("posX", xCoord + 0.5 + vec.xCoord * 2.25); + data.setDouble("posY", yCoord + 1.5); + data.setDouble("posZ", zCoord + 0.5 + vec.zCoord * 2.25); + MainRegistry.proxy.effectNT(data); + } } } diff --git a/src/main/resources/assets/hbm/textures/models/weapons/pepperbox.png b/src/main/resources/assets/hbm/textures/models/weapons/pepperbox.png index 2334c4e2c..5dc23b12f 100644 Binary files a/src/main/resources/assets/hbm/textures/models/weapons/pepperbox.png and b/src/main/resources/assets/hbm/textures/models/weapons/pepperbox.png differ