balls.mp4

This commit is contained in:
Boblet 2026-07-17 11:30:18 +02:00
parent 5a47a351a0
commit 3bccdef311
11 changed files with 228 additions and 83 deletions

View File

@ -1,23 +1,7 @@
## Changed
* Updated russian and chinese localization
* Updated the trinitite ore textures
* The ore spots are now smaller and more shard-like
* Each trinitite ore block now has four randomized texture variants
* Trinitite ores now spawn fewer particles
* The radiation effect caused by walking on trinitite ore is now much shorter but more intense to compensate
* Finally removed the old terra drill items after being deprecated for almost a year
* The electrolysis machine now instantly annihilates all buffered fluid output when changing recipe
* This is a straight downgrade but people for some reason wanted it so sure why not
* Cable diodes now have a GUI for configuration instead of requiring tools
* The throughput can now be configured more precisely instead of increments of powers of 10
* The magnetic storage barrel now uses BSCCO and has a new texture
* Updated all oil well GUI textures
* There's now only two upgrade slots instead of three
* All legacy pixel gauges have been replaced with smooth ones (watz, ZIRNOX, CCGT) making them more accurate
## Fixed
* Fixed burner press GUI offsets being incorrect
* Potentially fixed an issue with journey map where slaked sellafite would sometimes get the wrong color in the minimap
* Finally fixed an issue making electric armor way worse than it should be, as well as preventing the vanilla armor points from working almost entirely
* Fixed pneumatic storage exporter duping filter items when broken
* Re-enabled the GTNH-NEI filter slot integration
* Fixed various GUI title offsets
* Fixed mask man announcement being sent 20 minutes before spawn (therefore never being sent at all) instead of one minute as intended
* Fixed old BAT9000 recycling
* Fixed held block being placed when not sneaking when opening the cable diode's GUI

View File

@ -1965,7 +1965,7 @@ public class ModBlocks {
pile_brick = new BlockPileBrick().setBlockName("pile_brick").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pile_brick");
pile_device = new BlockPileDevice().setBlockName("pile_device").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":block_steel");
pile_block = new BlockPile().setBlockName("pile_block").setStepSound(Block.soundTypeMetal).setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pile_block");
pile_block = new BlockPile().setBlockName("pile_block").setStepSound(Block.soundTypeMetal).setHardness(15.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pile_block");
pwr_fuel = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_fuel_top").setBlockName("pwr_fuel").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_fuel_side");
pwr_control = new BlockPillarPWR(Material.iron, RefStrings.MODID + ":pwr_control_top").setBlockName("pwr_control").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_control_side");
@ -1977,7 +1977,7 @@ public class ModBlocks {
pwr_casing = new BlockGenericTooltip(Material.iron).setBlockName("pwr_casing").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_casing");
pwr_port = new BlockGenericTooltip(Material.iron).setBlockName("pwr_port").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_port");
pwr_controller = new MachinePWRController(Material.iron).setBlockName("pwr_controller").setHardness(5.0F).setResistance(10.0F).setCreativeTab(MainRegistry.machineTab).setBlockTextureName(RefStrings.MODID + ":pwr_casing_blank");
pwr_block = new BlockPWR(Material.iron).setBlockName("pwr_block").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pwr_block");
pwr_block = new BlockPWR(Material.iron).setBlockName("pwr_block").setHardness(15.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":pwr_block");
fusion_heater = new BlockPillar(Material.iron, RefStrings.MODID + ":fusion_heater_top").setBlockName("fusion_heater").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fusion_heater_side");
fusion_hatch = new FusionHatch(Material.iron).setBlockName("fusion_hatch").setHardness(5.0F).setResistance(10.0F).setCreativeTab(null).setBlockTextureName(RefStrings.MODID + ":fusion_hatch");
@ -3134,12 +3134,12 @@ public class ModBlocks {
register(red_pylon_medium_wood_transformer);
register(red_pylon_medium_steel);
register(red_pylon_medium_steel_transformer);
GameRegistry.registerBlock(red_pylon_large, ItemBlockBase.class, red_pylon_large.getUnlocalizedName());
GameRegistry.registerBlock(substation, ItemBlockBase.class, substation.getUnlocalizedName());
GameRegistry.registerBlock(cable_switch, cable_switch.getUnlocalizedName());
GameRegistry.registerBlock(cable_detector, cable_detector.getUnlocalizedName());
GameRegistry.registerBlock(cable_diode, ItemBlockBase.class, cable_diode.getUnlocalizedName());
GameRegistry.registerBlock(machine_detector, machine_detector.getUnlocalizedName());
register(red_pylon_large);
register(substation);
register(cable_switch);
register(cable_detector);
register(cable_diode);
register(machine_detector);
register(fluid_duct_neo);
register(fluid_duct_box);

View File

@ -12,6 +12,7 @@ import cpw.mods.fml.relauncher.SideOnly;
import net.minecraft.block.BlockContainer;
import net.minecraft.block.material.Material;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
@ -67,6 +68,17 @@ public class BlockPileDevice extends BlockContainer implements IBlockMulti {
return metaOffset + side;
}
@Override
public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase player, ItemStack itemStack) {
if(world.getBlockMetadata(x, y, z) != BLOCK_META_CONTROL) return;
int i = MathHelper.floor_double(player.rotationYaw * 4.0F / 360.0F + 0.5D) & 3;
if(i == 0) world.setBlockMetadataWithNotify(x, y, z, BLOCK_META_CONTROL + 1, 2);
if(i == 1) world.setBlockMetadataWithNotify(x, y, z, BLOCK_META_CONTROL + 2, 2);
if(i == 2) world.setBlockMetadataWithNotify(x, y, z, BLOCK_META_CONTROL + 0, 2);
if(i == 3) world.setBlockMetadataWithNotify(x, y, z, BLOCK_META_CONTROL + 3, 2);
}
public static int itemMetaToBlockMeta(int meta) {
if(meta >= ITEM_META_CONTROL) return BLOCK_META_CONTROL;
if(meta == ITEM_META_VENT) return BLOCK_META_VENT;

View File

@ -65,8 +65,8 @@ public class CableDiode extends BlockContainer implements IEnergyConnectorBlock,
@Override
public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float fX, float fY, float fZ) {
if(!player.isSneaking() && world.isRemote) {
FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
if(!player.isSneaking()) {
if(world.isRemote) FMLNetworkHandler.openGui(player, MainRegistry.instance, 0, world, x, y, z);
return true;
}

View File

@ -127,53 +127,4 @@ public class ExplosionBalefire
}
}
}
/*private void breakColumn(int x, int z)
{
int dist = this.radius2 - (x * x + z * z);
if (dist > 0)
{
int pX = posX + x;
int pZ = posZ + z;
int y = worldObj.getHeightValue(pX, pZ);
float strength = (float)dist / (float) this.radius;
while(y > 0) {
if(strength <= 10) {
if(worldObj.rand.nextInt(10) == 0) {
worldObj.setBlock(pX, y + 1, pZ, ModBlocks.balefire);
if(worldObj.getBlock(pX, y, pZ) == ModBlocks.block_schrabidium_cluster)
worldObj.setBlock(pX, y, pZ, ModBlocks.block_euphemium_cluster, worldObj.getBlockMetadata(pX, y, pZ), 3);
}
if(worldObj.getBlock(pX, y, pZ) == Blocks.stone)
worldObj.setBlock(pX, y, pZ, ModBlocks.sellafield_slaked);
if(worldObj.getBlock(pX, y - 1, pZ) == Blocks.stone)
worldObj.setBlock(pX, y - 1, pZ, ModBlocks.sellafield_slaked);
if(worldObj.getBlock(pX, y - 2, pZ) == Blocks.stone)
worldObj.setBlock(pX, y - 2, pZ, ModBlocks.sellafield_slaked);
if(worldObj.getBlock(pX, y - 3, pZ) == Blocks.stone)
worldObj.setBlock(pX, y - 3, pZ, ModBlocks.sellafield_slaked);
if(worldObj.getBlock(pX, y - 4, pZ) == Blocks.stone)
worldObj.setBlock(pX, y - 4, pZ, ModBlocks.sellafield_slaked);
return;
}
float hardness = worldObj.getBlock(pX, y, pZ).getBlockHardness(worldObj, pX, y, pZ);
if(worldObj.getBlock(pX, y, pZ).getMaterial().isLiquid())
hardness = Blocks.air.getBlockHardness(worldObj, pX, y + 1, pZ);
strength -= hardness;
worldObj.setBlockToAir(pX, y, pZ);
y--;
}
}
}*/
}

View File

@ -28,7 +28,6 @@ import net.minecraft.util.ResourceLocation;
public class GUIMachineTurbineGas extends GuiInfoContainer {
private static ResourceLocation texture = new ResourceLocation(RefStrings.MODID + ":textures/gui/generators/gui_turbinegas.png");
private static ResourceLocation gauge_tex = new ResourceLocation(RefStrings.MODID + ":textures/gui/gauges/button_big.png");
private TileEntityMachineTurbineGas turbinegas;
int yStart;

View File

@ -492,6 +492,11 @@ public class AssemblyMachineRecipes extends GenericRecipes<GenericRecipe> {
.inputItemsEx(new ComparableStack(ModItems.item_expensive, 8, EnumExpensiveType.LEAD_PLATING), new OreDictStack(ANY_HARDPLASTIC.ingot(), 24), new OreDictStack(GOLD.wireDense(), 32), new ComparableStack(ModItems.circuit, 4, EnumCircuitType.BISMOID), new ComparableStack(ModItems.item_expensive, 2, EnumExpensiveType.COMPUTER))
.setPools528(GenericRecipes.POOL_PREFIX_528 + "chip_quantum"));
// pile
this.register(new GenericRecipe("ass.pileblock").setup(20, 250).outputItems(new ItemStack(ModBlocks.pile_brick, 1))
.inputItems(new OreDictStack(KEY_PLANKS, 1), new OreDictStack(GRAPHITE.ingot(), 4), new OreDictStack(STEEL.bolt(), 2))
.inputItemsEx(new OreDictStack(KEY_PLANKS, 1), new OreDictStack(GRAPHITE.ingot(), 8), new OreDictStack(STEEL.plate(), 1)));
// reactors
this.register(new GenericRecipe("ass.breedingreactor").setup(200, 100).outputItems(new ItemStack(ModBlocks.machine_reactor_breeding, 1))
.inputItems(new ComparableStack(ModItems.reactor_core, 1), new OreDictStack(STEEL.ingot(), 12), new OreDictStack(PB.plate(), 16), new ComparableStack(ModBlocks.reinforced_glass, 4), new OreDictStack(ASBESTOS.ingot(), 4), new OreDictStack(ANY_RESISTANTALLOY.ingot(), 4), new ComparableStack(ModItems.crt_display, 1))

View File

@ -3,6 +3,7 @@ package com.hbm.render.tileentity;
import org.lwjgl.opengl.GL11;
import com.hbm.main.ResourceManager;
import com.hbm.tileentity.machine.pile.TileEntityPileVent;
import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer;
import net.minecraft.tileentity.TileEntity;
@ -23,9 +24,12 @@ public class RenderPileVent extends TileEntitySpecialRenderer {
case 3: GL11.glRotated(0, 0, 1, 0); break;
}
TileEntityPileVent vent = (TileEntityPileVent) te;
float rot = vent.lastFan + (vent.fan - vent.lastFan) * interp;
bindTexture(ResourceManager.pile_vent_tex);
ResourceManager.pile_vent.renderPart("Pipe");
GL11.glRotated((te.getWorldObj().getTotalWorldTime() % 360 + interp) * 45, 0, -1, 0);
GL11.glRotated(rot, 0, -1, 0);
ResourceManager.pile_vent.renderPart("Fan");
GL11.glShadeModel(GL11.GL_FLAT);

View File

@ -1,7 +1,80 @@
package com.hbm.tileentity.machine.pile;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.machine.pile.BlockPile;
import com.hbm.tileentity.TileEntityTickingBase;
import com.hbm.tileentity.machine.pile.TileEntityPileCore.PileChannel;
import com.hbm.util.Compat;
import io.netty.buffer.ByteBuf;
import net.minecraft.tileentity.TileEntity;
public class TileEntityPileControl extends TileEntity {
public class TileEntityPileControl extends TileEntityTickingBase {
public double syncLevel;
public double level;
public double lastLevel;
public int turnProgress;
public int chanNum;
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
boolean canMove = false;
if(worldObj.getBlock(xCoord, yCoord - 1, zCoord) == ModBlocks.pile_block && worldObj.getBlockMetadata(xCoord, yCoord - 1, zCoord) == BlockPile.META_CONTROL) {
TileEntity tile = Compat.getTileStandard(worldObj, xCoord, yCoord - 1, zCoord);
if(tile instanceof TileEntityPileBaseMK2) {
TileEntityPileBaseMK2 pile = (TileEntityPileBaseMK2) tile;
TileEntityPileCore core = pile.getCore();
if(core != null) {
PileChannel controlChan = core.getControlChannel(xCoord, yCoord - 1, zCoord);
if(controlChan != null) {
canMove = true;
this.chanNum = core.getControlChannelNum(controlChan);
controlChan.control = this.level;
}
}
}
}
this.networkPackNT(100);
} else {
this.lastLevel = this.level;
if(this.turnProgress > 0) {
this.level = this.level + ((this.syncLevel - this.level) / (double) this.turnProgress);
--this.turnProgress;
} else {
this.level = this.syncLevel;
}
}
}
@Override
public void serialize(ByteBuf buf) {
super.serialize(buf);
buf.writeDouble(this.level);
buf.writeInt(this.chanNum);
}
@Override
public void deserialize(ByteBuf buf) {
super.deserialize(buf);
double lastSync = this.syncLevel;
this.syncLevel = buf.readDouble();
this.chanNum = buf.readInt();
if(this.syncLevel != lastSync) this.turnProgress = 2;
}
}

View File

@ -15,6 +15,7 @@ import com.hbm.util.fauxpointtwelve.DirPos;
import cpw.mods.fml.common.network.NetworkRegistry.TargetPoint;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.common.util.ForgeDirection;
@ -81,6 +82,14 @@ public class TileEntityPileCore extends TileEntityTickingBase {
return null;
}
public int getFuelChannelNum(PileChannel chan) { return getChannelNum(chan, fuelChannels); }
public int getVentilationChannelNum(PileChannel chan) { return getChannelNum(chan, ventilationChannels); }
public int getControlChannelNum(PileChannel chan) { return getChannelNum(chan, controlChannels); }
public int getChannelNum(PileChannel chan, List<PileChannel> list) {
return list.indexOf(chan); // more reliable when channels change and not that big of a deal because we have lists in single digit length
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
@ -185,6 +194,7 @@ public class TileEntityPileCore extends TileEntityTickingBase {
if(!worldObj.isRemote) {
if(worldObj.getTotalWorldTime() % 3 == 0) for(PileChannel chan : this.ventilationChannels) {
if(chan.air <= 0) continue;
double x = chan.entry.getX() + 0.5 + chan.entry.getDir().offsetX * (this.width - 0.375);
double y = chan.entry.getY() + 0.5;
@ -227,18 +237,25 @@ public class TileEntityPileCore extends TileEntityTickingBase {
public final int length; // length of the channel, always equal to the h/w/d size of that axis
public final PileChannelType type;
public final ItemStack[] rods;
public int air;
public double control = 1D; // pulled out by default, unlike me who never pulls out
public PileChannel(int x, int y, int z, ForgeDirection dir) {
this.entry = new DirPos(x, y, z, dir);
this.type = PileChannelType.getChannelType(dir, orientation);
this.length =
type == PileChannelType.CONTROL ? height :
type == PileChannelType.FUEL ? depth : width;
this.rods = new ItemStack[length];
}
public PileChannel(int x, int y, int z, ForgeDirection dir, int length, PileChannelType type) {
this.entry = new DirPos(x, y, z, dir);
this.type = type;
this.length = length;
this.rods = new ItemStack[length];
}
public void writeChannelToNBT(NBTTagCompound nbt, String name) {

View File

@ -1,7 +1,107 @@
package com.hbm.tileentity.machine.pile;
import com.hbm.blocks.ModBlocks;
import com.hbm.blocks.machine.pile.BlockPile;
import com.hbm.inventory.fluid.FluidType;
import com.hbm.inventory.fluid.Fluids;
import com.hbm.inventory.fluid.tank.FluidTank;
import com.hbm.tileentity.TileEntityTickingBase;
import com.hbm.tileentity.machine.pile.TileEntityPileCore.PileChannel;
import com.hbm.util.Compat;
import api.hbm.fluidmk2.IFluidStandardReceiverMK2;
import io.netty.buffer.ByteBuf;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
public class TileEntityPileVent extends TileEntity {
public class TileEntityPileVent extends TileEntityTickingBase implements IFluidStandardReceiverMK2 {
public FluidTank compair;
public boolean isActive = false;
public float fan;
public float lastFan;
public int chanNum;
public TileEntityPileVent() {
this.compair = new FluidTank(Fluids.AIR, 4_000);
}
@Override public FluidTank[] getAllTanks() { return new FluidTank[] {compair}; }
@Override public FluidTank[] getReceivingTanks() { return new FluidTank[] {compair}; }
@Override
public boolean canConnect(FluidType type, ForgeDirection dir) {
if(type != compair.getTankType()) return false;
ForgeDirection conDir = getOrientation();
return dir == conDir.getOpposite();
}
@Override
public void updateEntity() {
if(!worldObj.isRemote) {
ForgeDirection dir = getOrientation();
this.trySubscribe(compair.getTankType(), worldObj, xCoord - dir.offsetX, yCoord, zCoord - dir.offsetZ, dir.getOpposite());
this.isActive = false;
if(this.compair.getFill() > 0) {
int x = xCoord + dir.offsetX;
int y = yCoord;
int z = zCoord + dir.offsetZ;
if(worldObj.getBlock(x, y, z) == ModBlocks.pile_block && worldObj.getBlockMetadata(x, y, z) == BlockPile.META_AIR_IN) {
TileEntity tile = Compat.getTileStandard(worldObj, xCoord + dir.offsetX, yCoord, zCoord + dir.offsetZ);
if(tile instanceof TileEntityPileBaseMK2) {
TileEntityPileBaseMK2 pile = (TileEntityPileBaseMK2) tile;
TileEntityPileCore core = pile.getCore();
if(core != null) {
PileChannel ventChan = core.getVentilationChannel(x, y, z);
if(ventChan != null) {
this.isActive = true;
this.chanNum = core.getVentilationChannelNum(ventChan);
// compair stuff here
}
}
}
}
}
this.networkPackNT(35);
} else {
this.lastFan = fan;
if(this.isActive) this.fan += 45;
if(this.fan >= 360) {
this.lastFan -= 360;
this.fan -= 360;
}
}
}
public ForgeDirection getOrientation() {
return ForgeDirection.getOrientation(this.getBlockMetadata() % 4 + 2);
}
@Override
public void serialize(ByteBuf buf) {
super.serialize(buf);
buf.writeBoolean(this.isActive);
buf.writeInt(this.chanNum);
}
@Override
public void deserialize(ByteBuf buf) {
super.deserialize(buf);
this.isActive = buf.readBoolean();
this.chanNum = buf.readInt();
}
}