From 98b0f46afe3c082e3ece4779443a576c7cf48a2a Mon Sep 17 00:00:00 2001 From: Bob Date: Sun, 24 Apr 2022 00:01:53 +0200 Subject: [PATCH] obj util better color multiplication, an affront to god --- .../com/hbm/blocks/network/FluidDuctBase.java | 16 ++++-- .../hbm/blocks/network/IBlockFluidDuct.java | 2 +- .../hbm/inventory/FluidContainerRegistry.java | 2 + .../java/com/hbm/inventory/gui/GUIHadron.java | 2 +- .../hbm/inventory/recipes/HadronRecipes.java | 6 +-- .../java/com/hbm/render/util/ObjUtil.java | 2 +- .../tileentity/machine/TileEntityHadron.java | 6 +-- .../machine/TileEntityMachineChemplant.java | 5 ++ .../TileEntityMachineCatalyticCracker.java | 46 +++++++++++++++++- src/main/resources/assets/hbm/lang/de_DE.lang | 3 ++ src/main/resources/assets/hbm/lang/en_US.lang | 3 ++ .../textures/blocks/pipe_colored_overlay.png | Bin 221 -> 229 bytes .../assets/hbm/textures/entity/player_fem.png | Bin 0 -> 3975 bytes .../assets/hbm/textures/gui/fluids/acid.png | Bin 341 -> 489 bytes .../hbm/textures/items/plant_item.tobacco | Bin 0 -> 326 bytes 15 files changed, 78 insertions(+), 15 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/entity/player_fem.png create mode 100644 src/main/resources/assets/hbm/textures/items/plant_item.tobacco diff --git a/src/main/java/com/hbm/blocks/network/FluidDuctBase.java b/src/main/java/com/hbm/blocks/network/FluidDuctBase.java index 2b654ae71..b464a7c1d 100644 --- a/src/main/java/com/hbm/blocks/network/FluidDuctBase.java +++ b/src/main/java/com/hbm/blocks/network/FluidDuctBase.java @@ -43,8 +43,14 @@ public class FluidDuctBase extends BlockContainer implements IBlockFluidDuct { } } } else { - changeTypeRecursively(world, x, y, z, type, 64); - return true; + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityPipeBaseNT) { + TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; + changeTypeRecursively(world, x, y, z, pipe.getType(), type, 64); + return true; + } } } @@ -52,14 +58,14 @@ public class FluidDuctBase extends BlockContainer implements IBlockFluidDuct { } @Override - public void changeTypeRecursively(World world, int x, int y, int z, FluidType type, int loopsRemaining) { + public void changeTypeRecursively(World world, int x, int y, int z, FluidType prevType, FluidType type, int loopsRemaining) { TileEntity te = world.getTileEntity(x, y, z); if(te instanceof TileEntityPipeBaseNT) { TileEntityPipeBaseNT pipe = (TileEntityPipeBaseNT) te; - if(pipe.getType() != type) { + if(pipe.getType() == prevType && pipe.getType() != type) { pipe.setType(type); if(loopsRemaining > 0) { @@ -67,7 +73,7 @@ public class FluidDuctBase extends BlockContainer implements IBlockFluidDuct { Block b = world.getBlock(x, y, z); if(b instanceof IBlockFluidDuct) { - ((IBlockFluidDuct) b).changeTypeRecursively(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, type, loopsRemaining - 1); + ((IBlockFluidDuct) b).changeTypeRecursively(world, x + dir.offsetX, y + dir.offsetY, z + dir.offsetZ, prevType, type, loopsRemaining - 1); } } } diff --git a/src/main/java/com/hbm/blocks/network/IBlockFluidDuct.java b/src/main/java/com/hbm/blocks/network/IBlockFluidDuct.java index e1cd564aa..c222b595c 100644 --- a/src/main/java/com/hbm/blocks/network/IBlockFluidDuct.java +++ b/src/main/java/com/hbm/blocks/network/IBlockFluidDuct.java @@ -6,5 +6,5 @@ import net.minecraft.world.World; public interface IBlockFluidDuct { - public void changeTypeRecursively(World world, int x, int y, int z, FluidType type, int loopsRemaining); + public void changeTypeRecursively(World world, int x, int y, int z, FluidType prevType, FluidType type, int loopsRemaining); } diff --git a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java index 1e53bb223..3f87a2697 100644 --- a/src/main/java/com/hbm/inventory/FluidContainerRegistry.java +++ b/src/main/java/com/hbm/inventory/FluidContainerRegistry.java @@ -63,6 +63,8 @@ public class FluidContainerRegistry { FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.iv_xp), new ItemStack(ModItems.iv_xp_empty), Fluids.XPJUICE, 100)); FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(Items.experience_bottle), new ItemStack(Items.glass_bottle), Fluids.XPJUICE, 100)); + + FluidContainerRegistry.registerContainer(new FluidContainer(new ItemStack(ModItems.can_mug), new ItemStack(ModItems.can_empty), Fluids.MUG, 100)); FluidType[] fluids = Fluids.getAll(); for(int i = 1; i < fluids.length; i++) { diff --git a/src/main/java/com/hbm/inventory/gui/GUIHadron.java b/src/main/java/com/hbm/inventory/gui/GUIHadron.java index 1a50397ca..9690fce1c 100644 --- a/src/main/java/com/hbm/inventory/gui/GUIHadron.java +++ b/src/main/java/com/hbm/inventory/gui/GUIHadron.java @@ -51,7 +51,7 @@ public class GUIHadron extends GuiInfoContainer { List stats = new ArrayList(); stats.add(EnumChatFormatting.YELLOW + I18nUtil.resolveKey("hadron.stats")); - stats.add((hadron.stat_success ? EnumChatFormatting.GREEN : EnumChatFormatting.RED) + I18n.format("hadron." + this.hadron.state.name().toLowerCase())); + stats.add((hadron.stat_success ? EnumChatFormatting.GREEN : EnumChatFormatting.RED) + I18n.format("hadron." + this.hadron.stat_state.name().toLowerCase())); if(this.hadron.state.showCoord) stats.add(EnumChatFormatting.RED + I18nUtil.resolveKey("hadron.stats_coord", hadron.stat_x, hadron.stat_y, hadron.stat_z)); stats.add(EnumChatFormatting.GRAY + I18nUtil.resolveKey("hadron.stats_momentum", hadron.stat_charge)); this.drawCustomInfoStat(mouseX, mouseY, guiLeft + 41, guiTop + 92, 25, 11, mouseX, mouseY, stats.toArray(new String[0])); diff --git a/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java b/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java index a144053c1..0622cc14a 100644 --- a/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java +++ b/src/main/java/com/hbm/inventory/recipes/HadronRecipes.java @@ -125,20 +125,20 @@ public class HadronRecipes { */ public static ItemStack[] getOutput(ItemStack in1, ItemStack in2, int momentum, boolean analysisOnly) { + returnCode = EnumHadronState.NORESULT_WRONG_INGREDIENT; + for(HadronRecipe r : recipes) { if((r.in1.isApplicable(in1) && r.in2.isApplicable(in2)) || (r.in1.isApplicable(in2) && r.in2.isApplicable(in1))) { - if(analysisOnly != r.analysisOnly) returnCode = EnumHadronState.NORESULT_WRONG_MODE; + if(analysisOnly && !r.analysisOnly) returnCode = EnumHadronState.NORESULT_WRONG_MODE; if(momentum < r.momentum) returnCode = EnumHadronState.NORESULT_TOO_SLOW; if(momentum >= r.momentum && analysisOnly == r.analysisOnly) return new ItemStack[] {r.out1, r.out2}; } } - - returnCode = EnumHadronState.NORESULT_WRONG_INGREDIENT; return null; } diff --git a/src/main/java/com/hbm/render/util/ObjUtil.java b/src/main/java/com/hbm/render/util/ObjUtil.java index de603af26..9385fa1e8 100644 --- a/src/main/java/com/hbm/render/util/ObjUtil.java +++ b/src/main/java/com/hbm/render/util/ObjUtil.java @@ -90,7 +90,7 @@ public class ObjUtil { float brightness = 1.0F; if(shadow) { - brightness = ((float)normal.yCoord + 0.7F) * 0.9F - (float)Math.abs(normal.xCoord) * 0.1F + (float)Math.abs(normal.zCoord) * 0.1F; + brightness = ((float)normal.yCoord * 0.3F + 0.7F) - (float)Math.abs(normal.xCoord) * 0.1F + (float)Math.abs(normal.zCoord) * 0.1F; if(brightness < 0.45F) brightness = 0.45F; diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java index 03fd546f3..2bfb33a88 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityHadron.java @@ -134,9 +134,9 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs if(result == null) { this.state = HadronRecipes.returnCode; + this.setStats(this.state, p.momentum, false); this.delay = delayNoResult; worldObj.playSoundEffect(p.posX, p.posY, p.posZ, "random.orb", 2, 0.5F); - this.setStats(this.state, p.momentum, false); return; } @@ -327,7 +327,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs this.posY = posY; this.posZ = posZ; - this.charge = 0; + this.charge = 750; this.momentum = 0; } @@ -345,7 +345,7 @@ public class TileEntityHadron extends TileEntityMachineBase implements IEnergyUs TileEntityHadron.this.state = reason; TileEntityHadron.this.delay = delayError; - TileEntityHadron.this.setExpireStats(reason, this.charge, posX, posY, posZ); + TileEntityHadron.this.setExpireStats(reason, this.momentum, posX, posY, posZ); } public boolean isExpired() { diff --git a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java index ce51d2e51..45701d1f7 100644 --- a/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java +++ b/src/main/java/com/hbm/tileentity/machine/TileEntityMachineChemplant.java @@ -102,6 +102,11 @@ public class TileEntityMachineChemplant extends TileEntityMachineBase implements this.updateConnections(); } + for(DirPos pos : getConPos()) { + if(tanks[2].getFill() > 0) this.sendFluid(tanks[2].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + if(tanks[3].getFill() > 0) this.sendFluid(tanks[3].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + UpgradeManager.eval(slots, 1, 3); int speedLevel = Math.min(UpgradeManager.getLevel(UpgradeType.SPEED), 3); diff --git a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java index bb4eeb3c8..685e254a2 100644 --- a/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java +++ b/src/main/java/com/hbm/tileentity/machine/oil/TileEntityMachineCatalyticCracker.java @@ -14,7 +14,9 @@ import com.hbm.inventory.recipes.RefineryRecipes; import com.hbm.lib.Library; import com.hbm.tileentity.INBTPacketReceiver; import com.hbm.util.Tuple.Pair; +import com.hbm.util.fauxpointtwelve.DirPos; +import api.hbm.fluid.IFluidStandardTransceiver; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; import net.minecraft.nbt.NBTTagCompound; @@ -22,7 +24,7 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; import net.minecraftforge.common.util.ForgeDirection; -public class TileEntityMachineCatalyticCracker extends TileEntity implements IFluidSource, IFluidAcceptor, INBTPacketReceiver { +public class TileEntityMachineCatalyticCracker extends TileEntity implements IFluidSource, IFluidAcceptor, INBTPacketReceiver, IFluidStandardTransceiver { public FluidTank[] tanks; public List list1 = new ArrayList(); @@ -44,6 +46,7 @@ public class TileEntityMachineCatalyticCracker extends TileEntity implements IFl if(!worldObj.isRemote) { setupTanks(); + updateConnections(); if(worldObj.getTotalWorldTime() % 20 == 0) crack(); @@ -53,6 +56,12 @@ public class TileEntityMachineCatalyticCracker extends TileEntity implements IFl fillFluidInit(tanks[3].getTankType()); fillFluidInit(tanks[4].getTankType()); + for(DirPos pos : getConPos()) { + for(int i = 2; i <= 4; i++) { + if(tanks[i].getFill() > 0) this.sendFluid(tanks[i].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + NBTTagCompound data = new NBTTagCompound(); for(int i = 0; i < 5; i++) @@ -69,6 +78,14 @@ public class TileEntityMachineCatalyticCracker extends TileEntity implements IFl tanks[i].readFromNBT(nbt, "tank" + i); } + private void updateConnections() { + + for(DirPos pos : getConPos()) { + this.trySubscribe(tanks[0].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + this.trySubscribe(tanks[1].getTankType(), worldObj, pos.getX(), pos.getY(), pos.getZ(), pos.getDir()); + } + } + private void crack() { Pair quart = RefineryRecipes.getCracking(tanks[0].getTankType()); @@ -184,6 +201,23 @@ public class TileEntityMachineCatalyticCracker extends TileEntity implements IFl fillFluid(xCoord - dir.offsetX * 2 + rot.offsetX * 3, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 3, this.getTact(), type); fillFluid(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4, this.getTact(), type); } + + protected DirPos[] getConPos() { + + ForgeDirection dir = ForgeDirection.getOrientation(this.getBlockMetadata() - BlockDummyable.offset); + ForgeDirection rot = dir.getRotation(ForgeDirection.UP); + + return new DirPos[] { + new DirPos(xCoord + dir.offsetX * 4 + rot.offsetX * 1, yCoord, zCoord + dir.offsetZ * 4 + rot.offsetZ * 1, dir), + new DirPos(xCoord + dir.offsetX * 4 - rot.offsetX * 2, yCoord, zCoord + dir.offsetZ * 4 - rot.offsetZ * 2, dir), + new DirPos(xCoord - dir.offsetX * 4 + rot.offsetX * 1, yCoord, zCoord - dir.offsetZ * 4 + rot.offsetZ * 1, dir.getOpposite()), + new DirPos(xCoord - dir.offsetX * 4 - rot.offsetX * 2, yCoord, zCoord - dir.offsetZ * 4 - rot.offsetZ * 2, dir.getOpposite()), + new DirPos(xCoord + dir.offsetX * 2 + rot.offsetX * 3, yCoord, zCoord + dir.offsetZ * 2 + rot.offsetZ * 3, rot), + new DirPos(xCoord + dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord + dir.offsetZ * 2 - rot.offsetZ * 4, rot), + new DirPos(xCoord - dir.offsetX * 2 + rot.offsetX * 3, yCoord, zCoord - dir.offsetZ * 2 + rot.offsetZ * 3, rot.getOpposite()), + new DirPos(xCoord - dir.offsetX * 2 - rot.offsetX * 4, yCoord, zCoord - dir.offsetZ * 2 - rot.offsetZ * 4, rot.getOpposite()) + }; + } @Override public void fillFluid(int x, int y, int z, boolean newTact, FluidType type) { @@ -234,4 +268,14 @@ public class TileEntityMachineCatalyticCracker extends TileEntity implements IFl public double getMaxRenderDistanceSquared() { return 65536.0D; } + + @Override + public FluidTank[] getSendingTanks() { + return new FluidTank[] {tanks[2], tanks[3], tanks[4]}; + } + + @Override + public FluidTank[] getReceivingTanks() { + return new FluidTank[] {tanks[0], tanks[1]}; + } } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 4eeca252c..32ea0eb34 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3052,6 +3052,7 @@ tile.charge_c4.name=Abrissladung tile.charge_dynamite.name=Zeitbombe tile.charge_miner.name=Bergbauladung mit Zeitzünder tile.charge_semtex.name=Semtex-Bergbauladung +tile.charger.name=Ladestation tile.cheater_virus.name=Geliertes Euphemium tile.cheater_virus_seed.name=Instabiler Euphemiumschrabid-Block tile.chlorine_gas.name=Chlorgas @@ -3515,6 +3516,8 @@ tile.rbmk_control.name=RBMK Steuerstäbe tile.rbmk_control_auto.name=RBMK Automatische Steuerstäbe tile.rbmk_control_mod.name=RBMK Moderierte Steuerstäbe tile.rbmk_crane_console.name=RBMK Kransteuerung +tile.rbmk_heater.name=RBMK-Heizer +tile.rbmk_heatex.name=RBMK-Wärmetauscher tile.rbmk_loader.name=RBMK-Dampfadapter tile.rbmk_moderator.name=RBMK Graphitmoderator tile.rbmk_outgasser.name=RBMK Bestrahlungskanal diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 21c455a38..724804e8b 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3425,6 +3425,7 @@ tile.charge_c4.name=Demolition Charge tile.charge_dynamite.name=Time Bomb tile.charge_miner.name=Timed Mining Charge tile.charge_semtex.name=Semtex Mining Charge +tile.charger.name=Charging Station tile.cheater_virus.name=Gelid Euphemium tile.cheater_virus_seed.name=Unstable Euphemium Schrabide Block tile.chlorine_gas.name=Chlorine Gas @@ -3889,6 +3890,8 @@ tile.rbmk_control.name=RBMK Control Rods tile.rbmk_control_auto.name=RBMK Automatic Control Rods tile.rbmk_control_mod.name=RBMK Moderated Control Rods tile.rbmk_crane_console.name=RBMK Crane Console +tile.rbmk_heater.name=RBMK Fluid Heater +tile.rbmk_heatex.name=RBMK Heat Exchanger tile.rbmk_loader.name=RBMK Steam Connector tile.rbmk_moderator.name=RBMK Graphite Moderator tile.rbmk_outgasser.name=RBMK Irradiation Channel diff --git a/src/main/resources/assets/hbm/textures/blocks/pipe_colored_overlay.png b/src/main/resources/assets/hbm/textures/blocks/pipe_colored_overlay.png index ba6de7a8a34f0bde770a8205766e287ee0ffc2a7..4e25508595dd16c989fd9bde3c8cfab8afb39dde 100644 GIT binary patch delta 185 zcmV;q07n1a0p$UZG=H2)L_t(Ijopzk3PT|fM8_a_3_I<-g%|Kd-oTr9m@VzLw6wG` zMfj2gfAB*fkg0}&H>{&bDGg%`N+~F%z4C>C+ZP;Aj8ViG#dEe*a5BIvzg=)eXBUi>Ur91E nlu}@3)LP-a2NAu1pGLd`pus+XGk_C}00000NkvXXu0mjfDEn4j delta 177 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 delta 298 zcmV+_0oDHL1JweMG=B_9L_t(Ijcrr0ZUr$2b0r1_hJ1g2us1|10|Nt6J6z52@|xu$ z0=6;S$M@IgkB9&OLM2`1^{;)<1m4Tg#Zu{U7VSyDu@U~RdF5yk(EGG z4b@3zA|jxw5D`Q~gQ#l90l>@}m~}Gy6A`Sn-juNC2`(ZxIDc6viM^i2uCs@QwK?g826tT_#OKtR4z8Gxq+vbp=q2C|Sq5z%pXe^!}n|Fy&T`8Bgg0nM8~ w%KWh=b5&vQ%_DZD4Kp*i`-_ot2UtAszgo>2IR5v&OaK4?07*qoM6N<$g2+dPRsaA1 diff --git a/src/main/resources/assets/hbm/textures/items/plant_item.tobacco b/src/main/resources/assets/hbm/textures/items/plant_item.tobacco new file mode 100644 index 0000000000000000000000000000000000000000..6fa645c78b4812bdb74802a79aadb10183b33020 GIT binary patch literal 326 zcmV-M0lEH(P)5*8U?-az zma)zAd=rNA7-Nhmr2wcu%Cams;bNe*W?fh08TH4xr=2tqrIc9L^`UgwOrgGb1pX6! Y1Gm_Z1#9RABme*a07*qoM6N<$f`{&gVgLXD literal 0 HcmV?d00001