This commit is contained in:
Bob 2024-01-28 21:37:40 +01:00
parent a43f2db51a
commit 67980608ac
17 changed files with 2381 additions and 53 deletions

View File

@ -46,6 +46,7 @@
* Iron furnaces now have a 20% faster base smelting speed, making them complete operations in 8 seconds instead of 10 without upgrades
* Due to rising chlorine prices and a failing halogen market, the recipe of combination smelting chlorocalcite into chlorine and calcium has been added back
* For legacy reasons, the chlorocalcite processing chain involving chemical plants and electrolyzers will continue to work
* Outer crater biomes can no longer override inner crater biomes, allowing craters to be "cleaned" by nuking them again with lower yield weapons
## Fixed
* Fixed basalt ores dropping their items with invalid metadata
@ -53,3 +54,8 @@
* Fixed an issue where repeatedly opening and closing certain doors would cause their sound loop to get stuck running forever
* Fixed radar screens behaving weirdly when out of then intended range. The max interaction range for radars is now infinite, and radars will send a second information packet to players near connected radars
* Fixed very rare bug where waiting for wood ash to build up in the wood burner and then clearing the slot will remove twice as much ash on the internal counter for the initial ash item created
* Fixed crater biome fog tinting applying even if there is no nearby crater biome, causing oddities like underground fog being all white instead of being dark as it should be
* Crater biome fog no longer applies underwater, fixing an issue where being in water would cause the fog to be white instead of water-colored
* Fixed "pipette not empty" message crashing servers
* Fixed crash caused by certain modded blocks like Thermal's lumium lights being turned into falling blocks by impulse grenades or nuke aftereffects
* Fixed receiver subscription persisting when 256k tanks explode, causing them to infinitely receive and the void fluids

View File

@ -1,6 +1,6 @@
mod_version=1.0.27
# Empty build number makes a release type
mod_build_number=4851
mod_build_number=4858
credits=HbMinecraft, rodolphito (explosion algorithms), grangerave (explosion algorithms),\
\ Hoboy (textures, models), Doctor17 (russian localization), Drillgon200 (effects, models,\

View File

@ -64,7 +64,7 @@ public class EntityFalloutRain extends Entity {
for(int z = chunkPosZ << 4; z <= (chunkPosZ << 4) + 16; z++) {
double percent = Math.hypot(x - posX, z - posZ) * 100 / getScale();
stomp(x, z, percent);
BiomeGenBase biome = getBiomeChange(percent, getScale());
BiomeGenBase biome = getBiomeChange(percent, getScale(), worldObj.getBiomeGenForCoords(x, z));
if(biome != null) {
WorldUtil.setBiome(worldObj, x, z, biome);
biomeModified = true;
@ -84,7 +84,7 @@ public class EntityFalloutRain extends Entity {
if(distance <= getScale()) {
double percent = distance * 100 / getScale();
stomp(x, z, percent);
BiomeGenBase biome = getBiomeChange(percent, getScale());
BiomeGenBase biome = getBiomeChange(percent, getScale(), worldObj.getBiomeGenForCoords(x, z));
if(biome != null) {
WorldUtil.setBiome(worldObj, x, z, biome);
biomeModified = true;
@ -114,11 +114,14 @@ public class EntityFalloutRain extends Entity {
}
}
public static BiomeGenBase getBiomeChange(double dist, int scale) {
public static BiomeGenBase getBiomeChange(double dist, int scale, BiomeGenBase original) {
if(!WorldConfig.enableCraterBiomes) return null;
if(scale >= 150 && dist < 15) return BiomeGenCraterBase.craterInnerBiome;
if(scale >= 100 && dist < 55) return BiomeGenCraterBase.craterBiome;
if(scale >= 25) return BiomeGenCraterBase.craterOuterBiome;
if(scale >= 150 && dist < 15)
return BiomeGenCraterBase.craterInnerBiome;
if(scale >= 100 && dist < 55 && original != BiomeGenCraterBase.craterInnerBiome)
return BiomeGenCraterBase.craterBiome;
if(scale >= 25 && original != BiomeGenCraterBase.craterInnerBiome && original != BiomeGenCraterBase.craterBiome)
return BiomeGenCraterBase.craterOuterBiome;
return null;
}

View File

@ -552,6 +552,7 @@ public class EntityNukeTorex extends Entity {
public static void statFac(World world, double x, double y, double z, float scale) {
EntityNukeTorex torex = new EntityNukeTorex(world).setScale(MathHelper.clamp_float((float) BobMathUtil.squirt(scale * 0.01) * 1.5F, 0.5F, 5F));
torex.setPosition(x, y, z);
torex.forceSpawn = true;
world.spawnEntityInWorld(torex);
TrackerUtil.setTrackingRange(world, torex, 1000);
}
@ -559,6 +560,7 @@ public class EntityNukeTorex extends Entity {
public static void statFacBale(World world, double x, double y, double z, float scale) {
EntityNukeTorex torex = new EntityNukeTorex(world).setScale(MathHelper.clamp_float((float) BobMathUtil.squirt(scale * 0.01) * 1.5F, 0.5F, 5F)).setType(1);
torex.setPosition(x, y, z);
torex.forceSpawn = true;
world.spawnEntityInWorld(torex);
TrackerUtil.setTrackingRange(world, torex, 1000);
}

View File

@ -1,6 +1,7 @@
package com.hbm.inventory.container;
import com.hbm.inventory.SlotCraftingOutput;
import com.hbm.inventory.SlotSmelting;
import com.hbm.tileentity.machine.TileEntityFurnaceBrick;
import com.hbm.util.InventoryUtil;
@ -23,7 +24,7 @@ public class ContainerFurnaceBrick extends Container {
//fuel
this.addSlotToContainer(new Slot(tedf, 1, 35, 17));
//output
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 2, 116, 35));
this.addSlotToContainer(new SlotSmelting(invPlayer.player, tedf, 2, 116, 35));
//ash
this.addSlotToContainer(new SlotCraftingOutput(invPlayer.player, tedf, 3, 35, 53));

View File

@ -16,6 +16,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatComponentTranslation;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
@ -92,7 +93,7 @@ public class ItemPipette extends Item implements IFillableItem {
stack.stackTagCompound.setShort("capacity", (short) a);
player.addChatMessage(new ChatComponentText(a + "/" + this.getMaxFill() + "mB"));
} else {
player.addChatMessage(new ChatComponentText(I18nUtil.resolveKey("desc.item.pipette.noEmpty")));
player.addChatMessage(new ChatComponentTranslation("desc.item.pipette.noEmpty"));
}
}
return stack;

View File

@ -4,10 +4,6 @@ import java.util.List;
import com.hbm.entity.effect.EntityNukeTorex;
import com.hbm.lib.Library;
import com.hbm.util.BobMathUtil;
import com.hbm.util.TrackerUtil;
import com.hbm.world.WorldUtil;
import com.hbm.world.biome.BiomeGenCraterBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
@ -71,11 +67,7 @@ public class ItemWandD extends Item {
if(!del.isEmpty()) {
for(EntityNukeTorex torex : del) torex.setDead();
} else {
EntityNukeTorex torex = new EntityNukeTorex(world);
torex.setPositionAndRotation(pos.blockX, pos.blockY + 1, pos.blockZ, 0, 0);
torex.setScale((float) BobMathUtil.squirt( 1.5 ) * 1.5F);
world.spawnEntityInWorld(torex);
TrackerUtil.setTrackingRange(world, torex, 1000);
EntityNukeTorex.statFac(world, pos.blockX, pos.blockY + 1, pos.blockZ, 150);
}
/*EntityTracker entitytracker = ((WorldServer) world).getEntityTracker();

View File

@ -3,7 +3,7 @@ package com.hbm.lib;
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 (4851)";
public static final String VERSION = "1.0.27 BETA (4858)";
//HBM's Beta Naming Convention:
//V T (X)
//V -> next release version

View File

@ -16,6 +16,7 @@ import cpw.mods.fml.common.eventhandler.EventPriority;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.TickEvent.WorldTickEvent;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.model.ModelRenderer;
import net.minecraft.client.renderer.RenderBlocks;
@ -377,10 +378,14 @@ public class ModEventHandlerRenderer {
public void tintFog(FogColors event) {
EntityPlayer player = MainRegistry.proxy.me();
Vec3 color = getFogBlendColor(player.worldObj, (int) Math.floor(player.posX), (int) Math.floor(player.posZ), event.renderPartialTicks);
event.red = (float) color.xCoord;
event.green = (float) color.yCoord;
event.blue = (float) color.zCoord;
if(player.worldObj.getBlock((int) Math.floor(player.posX), (int) Math.floor(player.posY), (int) Math.floor(player.posZ)).getMaterial() != Material.water) {
Vec3 color = getFogBlendColor(player.worldObj, (int) Math.floor(player.posX), (int) Math.floor(player.posZ), event.red, event.green, event.blue, event.renderPartialTicks);
if(color != null) {
event.red = (float) color.xCoord;
event.green = (float) color.yCoord;
event.blue = (float) color.zCoord;
}
}
float soot = (float) (renderSoot - RadiationConfig.sootFogThreshold);
float sootColor = 0.15F;
@ -408,9 +413,10 @@ public class ModEventHandlerRenderer {
private static int fogX;
private static int fogZ;
private static Vec3 fogRGBMultiplier;
private static boolean doesBiomeApply = false;
/** Same procedure as getting the blended sky color but for fog */
public static Vec3 getFogBlendColor(World world, int playerX, int playerZ, double partialTicks) {
public static Vec3 getFogBlendColor(World world, int playerX, int playerZ, float red, float green, float blue, double partialTicks) {
if(playerX == fogX && playerZ == fogZ && fogInit) return fogRGBMultiplier;
@ -428,11 +434,12 @@ public class ModEventHandlerRenderer {
float b = 0F;
int divider = 0;
doesBiomeApply = false;
for(int x = -distance; x <= distance; x++) {
for(int z = -distance; z <= distance; z++) {
BiomeGenBase biome = world.getBiomeGenForCoords(playerX + x, playerZ + z);
Vec3 color = getBiomeFogColors(world, biome, partialTicks);
Vec3 color = getBiomeFogColors(world, biome, red, green, blue, partialTicks);
r += color.xCoord;
g += color.yCoord;
b += color.zCoord;
@ -443,17 +450,12 @@ public class ModEventHandlerRenderer {
fogX = playerX;
fogZ = playerZ;
fogRGBMultiplier = Vec3.createVectorHelper(r / divider, g / divider, b / divider);
if(doesBiomeApply) fogRGBMultiplier = Vec3.createVectorHelper(r / divider, g / divider, b / divider);
return fogRGBMultiplier;
}
/** Returns the current biome's fog color adjusted for brightness if in a crater, or the world's cached fog color if not */
public static Vec3 getBiomeFogColors(World world, BiomeGenBase biome, double partialTicks) {
Vec3 worldFog = world.getFogColor((float) partialTicks);
double r = worldFog.xCoord;
double g = worldFog.yCoord;
double b = worldFog.zCoord;
public static Vec3 getBiomeFogColors(World world, BiomeGenBase biome, float r, float g, float b, double partialTicks) {
if(biome instanceof BiomeGenCraterBase) {
int color = biome.getSkyColorByTemp(biome.temperature);
@ -466,6 +468,8 @@ public class ModEventHandlerRenderer {
r *= skyBrightness;
g *= skyBrightness;
b *= skyBrightness;
doesBiomeApply = true;
}
return Vec3.createVectorHelper(r, g, b);

View File

@ -32,27 +32,29 @@ public class RenderFallingBlockNT extends Render {
int iY = MathHelper.floor_double(entity.posY);
int iZ = MathHelper.floor_double(entity.posZ);
if(block != null && block != world.getBlock(iX, iY, iZ)) {
GL11.glPushMatrix();
GL11.glTranslated(x, y, z);
this.bindEntityTexture(entity);
GL11.glDisable(GL11.GL_LIGHTING);
this.renderBlocks.blockAccess = world;
if(block instanceof BlockFallingNT && ((BlockFallingNT) block).shouldOverrideRenderer()) {
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
((BlockFallingNT) block).overrideRenderer(entity, renderBlocks, tessellator);
tessellator.draw();
} else {
this.renderBlocks.setRenderBoundsFromBlock(block);
this.renderBlocks.renderBlockSandFalling(block, world, iX, iY, iZ, entity.getDataWatcher().getWatchableObjectInt(11));
GL11.glPushMatrix();
try {
if(block != null && block != world.getBlock(iX, iY, iZ)) {
GL11.glTranslated(x, y, z);
this.bindEntityTexture(entity);
GL11.glDisable(GL11.GL_LIGHTING);
this.renderBlocks.blockAccess = world;
if(block instanceof BlockFallingNT && ((BlockFallingNT) block).shouldOverrideRenderer()) {
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
((BlockFallingNT) block).overrideRenderer(entity, renderBlocks, tessellator);
tessellator.draw();
} else {
this.renderBlocks.setRenderBoundsFromBlock(block);
this.renderBlocks.renderBlockSandFalling(block, world, iX, iY, iZ, entity.getDataWatcher().getWatchableObjectInt(11));
}
GL11.glEnable(GL11.GL_LIGHTING);
}
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glPopMatrix();
}
} catch(Exception ex) { }
GL11.glPopMatrix();
}
protected ResourceLocation getEntityTexture(EntityFallingBlockNT entity) {

View File

@ -12,6 +12,7 @@ public class RenderConnector extends RenderPylonBase {
@Override
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float interp) {
TileEntityConnector con = (TileEntityConnector) te;
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glPushMatrix();

View File

@ -23,6 +23,8 @@ public class RenderPylon extends RenderPylonBase {
public void renderTileEntityAt(TileEntity te, double x, double y, double z, float f) {
TileEntityPylon pyl = (TileEntityPylon)te;
GL11.glEnable(GL11.GL_LIGHTING);
GL11.glPushMatrix();
GL11.glTranslatef((float) x + 0.5F, (float) y + 1.5F - ((1F / 16F) * 14F), (float) z + 0.5F);
GL11.glRotatef(180, 0F, 0F, 1F);

View File

@ -14,6 +14,7 @@ public class RenderPylonLarge extends RenderPylonBase {
public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float interp) {
GL11.glPushMatrix();
GL11.glTranslated(x + 0.5, y, z + 0.5);
GL11.glEnable(GL11.GL_LIGHTING);
switch(tile.getBlockMetadata() - BlockDummyable.offset) {
case 2: GL11.glRotatef(90, 0F, 1F, 0F); break;

View File

@ -128,6 +128,8 @@ public class TileEntityMachineFluidTank extends TileEntityMachineBase implements
tank.loadTank(2, 3, slots);
tank.setType(0, 1, slots);
} else {
for(DirPos pos : getConPos()) this.tryUnsubscribe(tank.getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ());
}
byte comp = this.getComparatorPower(); //comparator shit

View File

@ -47,7 +47,7 @@ public class TrackerUtil {
if(world instanceof WorldServer) {
WorldServer server = (WorldServer) world;
EntityTrackerEntry entry = getTrackerEntry(server, e.getEntityId());
entry.blocksDistanceThreshold = range;
if(entry != null) entry.blocksDistanceThreshold = range;
}
}
}

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 941 B