mirror of
https://github.com/HbmMods/Hbm-s-Nuclear-Tech-GIT.git
synced 2026-08-10 17:55:44 +00:00
uh oh, the ZUNpet is kicking in
This commit is contained in:
parent
88d5926c2e
commit
f23fdda794
16
changelog
16
changelog
@ -6,3 +6,19 @@
|
||||
* 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
|
||||
* 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
|
||||
@ -23,6 +23,8 @@ public class ServerConfig extends RunningConfig {
|
||||
public static ConfigWrapper<Boolean> ENABLE_MKU = new ConfigWrapper(true);
|
||||
public static ConfigWrapper<Boolean> STRUCTURE_DEBUG = new ConfigWrapper(false);
|
||||
public static ConfigWrapper<Integer> AUTOCAL_MAX_CLOCK = new ConfigWrapper(20);
|
||||
public static ConfigWrapper<Integer> CONVEYOR_CRAM_MAX = new ConfigWrapper(25);
|
||||
public static ConfigWrapper<Boolean> 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. */
|
||||
|
||||
@ -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<EntityMovingConveyorObject> 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);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -39,6 +39,7 @@ public class RockMillRecipes extends GenericRecipes<GenericRecipe> {
|
||||
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<GenericRecipe> {
|
||||
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<GenericRecipe> {
|
||||
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<GenericRecipe> {
|
||||
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<GenericRecipe> {
|
||||
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<GenericRecipe> {
|
||||
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<GenericRecipe> {
|
||||
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<GenericRecipe> {
|
||||
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<GenericRecipe> {
|
||||
)).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)));
|
||||
}
|
||||
}
|
||||
|
||||
@ -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"))) {
|
||||
|
||||
@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -93,6 +99,16 @@ public class TileEntityMachineRockMill extends TileEntityMachineBase implements
|
||||
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);
|
||||
|
||||
} else {
|
||||
@ -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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 2.7 KiB After Width: | Height: | Size: 4.9 KiB |
Loading…
x
Reference in New Issue
Block a user