From 3460e8dceff2fcd429af23053254bd695ad3b13c Mon Sep 17 00:00:00 2001 From: Boblet Date: Thu, 18 Apr 2024 14:56:08 +0200 Subject: [PATCH] and some more fixes --- changelog | 13 +++- gradle.properties | 63 +++++++++++++----- .../java/api/hbm/energymk2/PowerNetMK2.java | 17 ++++- .../java/com/hbm/blocks/bomb/Balefire.java | 66 +++++++++++-------- .../machine/pile/BlockGraphiteFuel.java | 2 +- src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../machine/TileEntityStirling.java | 2 +- 7 files changed, 113 insertions(+), 52 deletions(-) diff --git a/changelog b/changelog index 3665cedcf3..35fc33e98f 100644 --- a/changelog +++ b/changelog @@ -1,4 +1,7 @@ ## Changed +* Large models no longer use display lists, instead their rendering makes use of the more modern VBO system + * Models using VBOs should now render slightly faster + * This also fixes an issue with Angelica where certain parts of the model would render transparently * All pylons and electrical connectors are now dyeable, using any dye (even modded ones, based on ore dict) to change the color of the cable * Colors are based on the connecting pylon, not the cables themselves, meaning that using one dye will change all wires connected to that pylon right up to the half way point * Glyphid behemoths now spew sulfuric acid instead of hydrogen peroxide @@ -12,8 +15,16 @@ * Emeralds can now be mined as bedrock ores with a weight of 50 (half as common as iron, as common as redstone) * Tritium lamps are now substantially cheaper * Glyphid scouts can now spawn during the day when rampant glyphid spawning is enabled (artificial light however will still prevent them from spawning, keeping them out of bases) +* Balefire now has a much higher ignition radius +* Balefire becomes darker the more it spreads, making it possible to gauge how much further or if at all the balefire will spread +* The comparator output range of the pile fuel rods has been adjusted, allowing rods to be ejected exactly when they turn into bred uranium rods ## Fixed * Fixed rocket artillery turret not saving loaded ammo type/count * Fixed crash caused by custom missile launchers operating without designator -* Fixed meltdown elementals rendering their beam in the NEI spawner screen, causing extreme lag or the game to freeze \ No newline at end of file +* Fixed meltdown elementals rendering their beam in the NEI spawner screen, causing extreme lag or the game to freeze +* Fixed certain incompatibilities with Angelica, like machine models being transparent and connected texture blocks not rendering at all +* (Hopefully) fixed the issue of balefire spreading forever for good +* Fixed stirling engines not outputting into cables +* Power buffers (i.e. things that act as both providers and receivers in the same network) now have the lowest sending priority (sending priority didn't exist until now), preventing them from wasting transfer capacity by ping-ponging before all other relevant parts of the network are done transferring +* Fixed potential issue causing diodes to consume negative energy \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index b4ec7f1afe..8892f2442a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,21 +1,48 @@ mod_version=1.0.27 # Empty build number makes a release type -mod_build_number=4936 +mod_build_number=4939 -credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\ - \ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\ - \ porting), UFFR (RTGs, guns, casings, euphemium capacitor), Pu-238 (Tom impact effects), Bismarck\ - \ (chinese localization), Frooz (models), Minecreep (models), VT-6/24 (models, textures), Pheo (textures,\ - \ various machines, models, weapons), Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide),\ - \ Adam29 (liquid petroleum, ethanol, electric furnace), Pashtet (russian localization), MartinTheDragon\ - \ (calculator, chunk-based fallout, bendable cranes, pipe improvements), haru315 (spiral point algorithm),\ - \ Sten89 (models), Pixelguru26 (textures), TheBlueHat (textures), Alcater (GUI textures, porting), impbk2002\ - \ (project settings), Nos (models), Burningwater202 (laminate glass), OvermindDL1 (project settings), TehTemmie\ - \ (reacher radiation function), Toshayo (satellite loot system, project settings, gradle curse task), Silly541\ - \ (config for safe ME drives), Voxelstice (OpenComputers integration, turbine spinup), BallOfEnergy1\ - \ (OpenComputers integration), martemen (project settings), Pvndols (thorium fuel recipe, gas turbine),\ - \ JamesH2 (blood mechanics, nitric acid, particle emitter), sdddddf80 (recipe configs, chinese localization,\ - \ custom machine holograms, I18n improvements), SuperCraftAlex (tooltips) LePeep (coilgun model, BDCL QC),\ - \ 70k (textures, glyphid AI, strand caster), Maksymisio (polish localization) Ice-Arrow (research reactor tweaks),\ - \ 245tt (anvil GUI improvements), MellowArpeggiation (new animation system, turbine sounds, sound fixes,\ - \ industrial lights, better particle diodes), FOlkvangrField (custom machine parts), KoblizekXD (doors) +credits=HbMinecraft,\ + \ rodolphito (explosion algorithms),\ + \ grangerave (explosion algorithms),\ + \ Hoboy (textures, models),\ + \ Drillgon200 (effects, models, porting),\ + \ MartinTheDragon (calculator, chunk-based fallout, bendable cranes, pipe improvements, PWR sounds),\ + \ Alcater (GUI textures, porting),\ + \ MellowArpeggiation (new animation system, turbine sounds, sound fixes, industrial lights, better particle diodes),\ + \ Pheo (textures, various machines, models, weapons),\ + \ Vær (gas centrifuges, better worldgen, ZIRNOX, CP-1 parts, starter guide),\ + \ LePeep (coilgun model, BDCL QC),\ + \ Adam29 (liquid petroleum, ethanol, electric furnace),\ + \ Pvndols (thorium fuel recipe, gas turbine),\ + \ JamesH2 (blood mechanics, nitric acid, particle emitter),\ + \ Doctor17 (russian localization)),\ + \ Pashtet (russian localization),\ + \ Bismarck (chinese localization),\ + \ Maksymisio (polish localization)\ + \ Pu-238 (Tom impact effects),\ + \ UFFR (RTGs, guns, casings, euphemium capacitor),\ + \ Frooz (models),\ + \ VT-6/24 (models, textures),\ + \ Nos (models),\ + \ Minecreep (models),\ + \ 70k (textures, glyphid AI, strand caster),\ + \ haru315 (spiral point algorithm),\ + \ Sten89 (models),\ + \ Pixelguru26 (textures),\ + \ TheBlueHat (textures),\ + \ Burningwater202 (laminate glass),\ + \ TehTemmie (reacher radiation function),\ + \ Silly541 (config for safe ME drives),\ + \ Voxelstice (OpenComputers integration, turbine spinup),\ + \ BallOfEnergy1 (OpenComputers integration),\ + \ martemen (project settings),\ + \ sdddddf80 (recipe configs, chinese localization, custom machine holograms),\ + \ SuperCraftAlex (tooltips)\ + \ Ice-Arrow (research reactor tweaks),\ + \ 245tt (anvil GUI improvements),\ + \ KoblizekXD (doors),\ + \ FOlkvangrField (custom machine parts),\ + \ Toshayo (satellite loot system, project settings, gradle curse task),\ + \ OvermindDL1 (project settings),\ + \ impbk2002 (project settings),\ diff --git a/src/main/java/api/hbm/energymk2/PowerNetMK2.java b/src/main/java/api/hbm/energymk2/PowerNetMK2.java index c41ff9e9bd..51cfaf810e 100644 --- a/src/main/java/api/hbm/energymk2/PowerNetMK2.java +++ b/src/main/java/api/hbm/energymk2/PowerNetMK2.java @@ -150,8 +150,19 @@ public void transferPower() { if(toTransfer > transferCap) toTransfer = transferCap; if(toTransfer <= 0) return; - List providers = new ArrayList() {{ addAll(providerEntries.keySet()); }}; - List receivers = new ArrayList() {{ addAll(receiverEntries.keySet()); }}; + List buffers = new ArrayList(); + List providers = new ArrayList(); + Set receiverSet = receiverEntries.keySet(); + for(IEnergyProviderMK2 provider : providerEntries.keySet()) { + if(receiverSet.contains(provider)) { + buffers.add(provider); + } else { + providers.add(provider); + } + } + providers.addAll(buffers); //makes buffers go last + List receivers = new ArrayList() {{ addAll(receiverSet); }}; + receivers.sort(COMP); int maxIteration = 1000; @@ -237,7 +248,7 @@ public long sendPowerDiode(long power) { for(IEnergyReceiverMK2 dest : receiverEntries.keySet()) { long pd = priorityDemand[dest.getPriority().ordinal()]; long toFill = Math.min((long) ((double) (Math.min(dest.getMaxPower() - dest.getPower(), dest.getReceiverSpeed())) * (double) power / (double) pd), dest.getReceiverSpeed()); - toFill = Math.min(toFill, power); + toFill = Math.min(toFill, finalRemainder); long remainder = dest.transferPower(toFill); long transferred = toFill - remainder; finalRemainder -= transferred; diff --git a/src/main/java/com/hbm/blocks/bomb/Balefire.java b/src/main/java/com/hbm/blocks/bomb/Balefire.java index ecf7f579f5..4a282e8618 100644 --- a/src/main/java/com/hbm/blocks/bomb/Balefire.java +++ b/src/main/java/com/hbm/blocks/bomb/Balefire.java @@ -7,8 +7,10 @@ import static net.minecraftforge.common.util.ForgeDirection.UP; import static net.minecraftforge.common.util.ForgeDirection.WEST; +import java.awt.Color; import java.util.Random; +import com.hbm.blocks.ModBlocks; import com.hbm.potion.HbmPotion; import cpw.mods.fml.relauncher.Side; @@ -47,9 +49,9 @@ public IIcon getIcon(int side, int meta) { return icon; } + @Override public void updateTick(World world, int x, int y, int z, Random rand) { if(world.getGameRules().getGameRuleBooleanValue("doFireTick")) { - boolean onNetherrack = world.getBlock(x, y - 1, z).isFireSource(world, x, y - 1, z, UP); if(!this.canPlaceBlockAt(world, x, y, z)) { world.setBlockToAir(x, y, z); @@ -57,12 +59,10 @@ public void updateTick(World world, int x, int y, int z, Random rand) { int meta = world.getBlockMetadata(x, y, z); - world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world) + rand.nextInt(10)); + if(meta < 15) world.scheduleBlockUpdate(x, y, z, this, this.tickRate(world) + rand.nextInt(10)); - if(!onNetherrack && !this.canNeighborBurn(world, x, y, z)) { - if(!World.doesBlockHaveSolidTopSurface(world, x, y - 1, z)) { - world.setBlockToAir(x, y, z); - } + if(!this.canNeighborBurn(world, x, y, z) && !World.doesBlockHaveSolidTopSurface(world, x, y - 1, z)) { + world.setBlockToAir(x, y, z); } else { if(meta < 15) { this.tryCatchFire(world, x + 1, y, z, 500, rand, meta, WEST); @@ -71,31 +71,33 @@ public void updateTick(World world, int x, int y, int z, Random rand) { this.tryCatchFire(world, x, y + 1, z, 300, rand, meta, DOWN); this.tryCatchFire(world, x, y, z - 1, 500, rand, meta, SOUTH); this.tryCatchFire(world, x, y, z + 1, 500, rand, meta, NORTH); - } - - for(int i1 = x - 1; i1 <= x + 1; ++i1) { - for(int j1 = z - 1; j1 <= z + 1; ++j1) { - for(int k1 = y - 1; k1 <= y + 4; ++k1) { - if(i1 != x || k1 != y || j1 != z) { - int l1 = 100; - - if(k1 > y + 1) { - l1 += (k1 - (y + 1)) * 100; - } - - int i2 = this.getChanceOfNeighborsEncouragingFire(world, i1, k1, j1); + + int h = 3; + + for(int ix = x - h; ix <= x + h; ++ix) { + for(int iz = z - h; iz <= z + h; ++iz) { + for(int iy = y - 1; iy <= y + 4; ++iy) { + + if(ix != x || iy != y || iz != z) { + int fireLimit = 100; + + if(iy > y + 1) { + fireLimit += (iy - (y + 1)) * 100; + } + + if(world.getBlock(ix, iy, iz) == ModBlocks.balefire && world.getBlockMetadata(ix, iy, iz) > meta + 1) { + world.setBlock(ix, iy, iz, this, meta + 1, 3); + continue; + } - if(i2 > 0) { - int j2 = (i2 + 40 + world.difficultySetting.getDifficultyId() * 7) / (meta + 30); + int neighborFireChance = this.getChanceOfNeighborsEncouragingFire(world, ix, iy, iz); - if(j2 > 0 && rand.nextInt(l1) <= j2) { - int k2 = meta + rand.nextInt(5) / 4; + if(neighborFireChance > 0) { + int adjustedFireChance = (neighborFireChance + 40 + world.difficultySetting.getDifficultyId() * 7) / (meta + 30); - if(k2 > 15) { - k2 = 15; + if(adjustedFireChance > 0 && rand.nextInt(fireLimit) <= adjustedFireChance) { + world.setBlock(ix, iy, iz, this, meta + 1, 3); } - - world.setBlock(i1, k1, j1, this, k2, 3); } } } @@ -156,5 +158,15 @@ public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity e if(entity instanceof EntityLivingBase) ((EntityLivingBase) entity).addPotionEffect(new PotionEffect(HbmPotion.radiation.id, 5 * 20, 9)); } + + @SideOnly(Side.CLIENT) + public int colorMultiplier(IBlockAccess world, int x, int y, int z) { + int meta = world.getBlockMetadata(x, y, z); + return Color.HSBtoRGB(0F, 0F, 1F - meta / 30F); + } + @Override + public int getRenderType() { + return 1; + } } diff --git a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java index 3e827f3a36..7b3b892ca4 100644 --- a/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java +++ b/src/main/java/com/hbm/blocks/machine/pile/BlockGraphiteFuel.java @@ -47,7 +47,7 @@ public boolean hasComparatorInputOverride() { @Override public int getComparatorInputOverride(World world, int x, int y, int z, int side) { TileEntityPileFuel pile = (TileEntityPileFuel)world.getTileEntity(x, y, z); - return MathHelper.clamp_int((pile.progress * 16) / (pile.maxProgress - 1000), 0, 15); //potentially wip + return MathHelper.clamp_int((pile.progress * 15) / (pile.maxProgress - 1000), 0, 15); } @Override diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 0d5894efa6..477c52bb5b 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,7 +3,7 @@ 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 (4936)"; + public static final String VERSION = "1.0.27 BETA (4939)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java b/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java index 610ba487d5..d59a5e9339 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityStirling.java @@ -46,6 +46,7 @@ public void updateEntity() { if(!worldObj.isRemote) { if(hasCog) { + this.powerBuffer = 0; tryPullHeat(); this.powerBuffer = (long) (this.heat * (this.isCreative() ? 1 : this.efficiency)); @@ -97,7 +98,6 @@ public void updateEntity() { for(DirPos pos : getConPos()) { this.tryProvide(worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); } - this.powerBuffer = 0; } else { if(this.powerBuffer > 0)