From ba6d11dc2199fc865a512d614daadec5899c8b84 Mon Sep 17 00:00:00 2001 From: Alcater Date: Wed, 12 Apr 2023 20:13:23 +0200 Subject: [PATCH] Version 1.9.3-c Release Added Digamma Diagnostic Gui Added Digamma to Digamma Ash Fixed Digamma RBMK Radiation --- build.gradle | 2 +- gradle.properties | 2 +- src/main/java/com/hbm/blocks/ModBlocks.java | 3 +- .../com/hbm/blocks/generic/BlockAshes.java | 58 ----------- .../machine/rbmk/RBMKDebrisDigamma.java | 46 +-------- src/main/java/com/hbm/lib/RefStrings.java | 4 +- .../com/hbm/main/ModEventHandlerClient.java | 6 ++ .../hbm/render/misc/RenderScreenOverlay.java | 91 +++++++++++++++--- .../java/com/hbm/util/ContaminationUtil.java | 25 +++-- .../assets/hbm/textures/misc/overlay_misc.png | Bin 10442 -> 15892 bytes 10 files changed, 110 insertions(+), 127 deletions(-) delete mode 100644 src/main/java/com/hbm/blocks/generic/BlockAshes.java diff --git a/build.gradle b/build.gradle index 44af8d830d..e8177a14e7 100644 --- a/build.gradle +++ b/build.gradle @@ -24,7 +24,7 @@ apply plugin: 'net.minecraftforge.gradle' apply plugin: 'eclipse' apply plugin: 'maven-publish' -version = '1.9.3-b' +version = '1.9.3-c' group = 'com.hbm' // http://maven.apache.org/guides/mini/guide-naming-conventions.html archivesBaseName = 'NTM-Extended-1.12.2' diff --git a/gradle.properties b/gradle.properties index 4900a6a269..8c73a909b3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -5,5 +5,5 @@ org.gradle.daemon=true org.gradle.configureondemand=true org.gradle.parallel=true jei_version=4.16.1.302 -version=1.9.3-b +version=1.9.3-c mc_version=1.12.2 \ No newline at end of file diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index c77fb1e6a2..ac9986e516 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -51,7 +51,6 @@ import com.hbm.blocks.generic.BarbedWire; import com.hbm.blocks.generic.BlockAbsorber; import com.hbm.blocks.generic.BlockAmmoCrate; -import com.hbm.blocks.generic.BlockAshes; import com.hbm.blocks.generic.BlockBallsSpawner; import com.hbm.blocks.generic.BlockBeaconable; import com.hbm.blocks.generic.BlockBedrockOre; @@ -837,7 +836,7 @@ public SoundEvent getBreakSound() { // A lot of stuff with uses no one knows - public static final Block ash_digamma = new BlockAshes(Material.SAND, "ash_digamma").setSoundType(SoundType.SAND).setCreativeTab(MainRegistry.resourceTab).setHardness(0.5F).setResistance(150.0F); + public static final Block ash_digamma = new BlockHazardFalling(Material.SAND, "ash_digamma", SoundType.SAND).addDigamma(0.001F).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(0.5F).setResistance(150.0F); public static final Block sand_boron = new BlockFallingBase(Material.SAND, "sand_boron", SoundType.SAND).setCreativeTab(MainRegistry.resourceTab).setHardness(0.5F); public static final Block sand_lead = new BlockFallingBase(Material.SAND, "sand_lead", SoundType.SAND).setCreativeTab(MainRegistry.resourceTab).setHardness(0.5F); public static final Block sand_uranium = new BlockHazardFalling(Material.SAND, "sand_uranium", SoundType.SAND).addRadiation(ItemHazard.u * ItemHazard.nugget).toBlock().setCreativeTab(MainRegistry.resourceTab).setHardness(0.5F); diff --git a/src/main/java/com/hbm/blocks/generic/BlockAshes.java b/src/main/java/com/hbm/blocks/generic/BlockAshes.java deleted file mode 100644 index 75bf15423c..0000000000 --- a/src/main/java/com/hbm/blocks/generic/BlockAshes.java +++ /dev/null @@ -1,58 +0,0 @@ -package com.hbm.blocks.generic; - -import java.util.Random; - -import com.hbm.blocks.ModBlocks; -import com.hbm.handler.ArmorUtil; -import com.hbm.items.ModItems; -import com.hbm.main.MainRegistry; -import com.hbm.util.ArmorRegistry; -import com.hbm.util.ArmorRegistry.HazardClass; - -import net.minecraft.block.Block; -import net.minecraft.block.BlockFalling; -import net.minecraft.block.SoundType; -import net.minecraft.block.material.Material; -import net.minecraft.block.state.IBlockState; -import net.minecraft.inventory.EntityEquipmentSlot; -import net.minecraft.util.math.BlockPos; -import net.minecraft.world.World; - -public class BlockAshes extends BlockFalling { - - public BlockAshes(Material mat, String s) { - super(mat); - this.setUnlocalizedName(s); - this.setRegistryName(s); - - ModBlocks.ALL_BLOCKS.add(this); - } - - public static int ashes = 0; - - @Override - public Block setSoundType(SoundType sound){ - return super.setSoundType(sound); - } - - @Override - public void randomDisplayTick(IBlockState stateIn, World worldIn, BlockPos pos, Random rand){ - super.randomDisplayTick(stateIn, worldIn, pos, rand); - if(rand.nextInt(25) == 0) { - - if(ArmorUtil.checkArmorPiece(MainRegistry.proxy.me(), ModItems.ashglasses, 3)) { - if(ashes < 256 * 0.25) { - ashes++; - } - } else if(ArmorRegistry.hasAnyProtection(MainRegistry.proxy.me(), EntityEquipmentSlot.HEAD, HazardClass.SAND, HazardClass.LIGHT)) { - if(ashes < 256 * 0.75) { - ashes++; - } - } else { - if(ashes < 256 * 0.95) { - ashes++; - } - } - } - } -} diff --git a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisDigamma.java b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisDigamma.java index 5683e805e6..e8250ce44f 100644 --- a/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisDigamma.java +++ b/src/main/java/com/hbm/blocks/machine/rbmk/RBMKDebrisDigamma.java @@ -5,17 +5,12 @@ import com.hbm.blocks.ModBlocks; import com.hbm.lib.ForgeDirection; -import com.hbm.render.amlfrom1710.Vec3; import com.hbm.util.ContaminationUtil; -import com.hbm.util.ContaminationUtil.ContaminationType; -import com.hbm.util.ContaminationUtil.HazardType; import net.minecraft.entity.EntityLivingBase; import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; -import net.minecraft.util.DamageSource; import net.minecraft.util.math.BlockPos; -import net.minecraft.util.math.AxisAlignedBB; import net.minecraft.world.World; public class RBMKDebrisDigamma extends RBMKDebris { @@ -28,55 +23,20 @@ public RBMKDebrisDigamma(String s){ public void updateTick(World world, BlockPos pos, IBlockState state, Random rand){ if(!world.isRemote) { - digamma(world, pos.getX(), pos.getY(), pos.getZ()); + ContaminationUtil.radiate(world, pos.getX(), pos.getY(), pos.getZ(), 32, 0, 200F, 0F); for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { Block b = world.getBlockState(new BlockPos(pos.getX() + dir.offsetX, pos.getY() + dir.offsetY, pos.getZ() + dir.offsetZ)).getBlock(); if((b instanceof RBMKDebris && b != this) || b == ModBlocks.corium_block || b == ModBlocks.block_corium) world.setBlockState(new BlockPos(pos.getX() + dir.offsetX, pos.getY() + dir.offsetY, pos.getZ() + dir.offsetZ), this.getDefaultState()); } - } - } - - @SuppressWarnings("deprecation") - private void digamma(World world, int x, int y, int z) { - - float rads = 1000F; - double range = 100D; - - List entities = world.getEntitiesWithinAABB(EntityLivingBase.class, new AxisAlignedBB(x + 0.5, y + 0.5, z + 0.5, x + 0.5, y + 0.5, z + 0.5).grow(range, range, range)); - - for(EntityLivingBase e : entities) { - - Vec3 vec = Vec3.createVectorHelper(e.posX - (x + 0.5), (e.posY + e.getEyeHeight()) - (y + 0.5), e.posZ - (z + 0.5)); - double len = vec.lengthVector(); - vec = vec.normalize(); - - float res = 0; - - for(int i = 1; i < len; i++) { - - int ix = (int)Math.floor(x + 0.5 + vec.xCoord * i); - int iy = (int)Math.floor(y + 0.5 + vec.yCoord * i); - int iz = (int)Math.floor(z + 0.5 + vec.zCoord * i); - - res += world.getBlockState(new BlockPos(ix, iy, iz)).getBlock().getExplosionResistance(null); - } - - if(res < 1) - res = 1; - - float eRads = rads; - eRads /= (float)res; - eRads /= (float)(len * len); - - ContaminationUtil.contaminate(e, HazardType.DIGAMMA, ContaminationType.DIGAMMA, eRads); + world.scheduleUpdate(pos, this, this.tickRate(world)); } } @Override public void onBlockAdded(World worldIn, BlockPos pos, IBlockState state){ super.onBlockAdded(worldIn, pos, state); - worldIn.scheduleUpdate(pos, this, 2); + worldIn.scheduleUpdate(pos, this, this.tickRate(worldIn)); } @Override diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 1a2d458e12..228cc05024 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -3,8 +3,8 @@ public class RefStrings { public static final String MODID = "hbm"; public static final String NAME = "Hbm's Nuclear Tech - Extended Edition"; - public static final String VERSION = "NTM-Extended-1.12.2-1.9.3-b"; - public static final String CHANGELOG = "§8§lAdvancement update$§2Added an entire NTM Tech Tree for Advancements$§2Added Toxic/Cryogenic hazards$§2Added 2 more Geiger sounds$§2Added useful tooltips to fallout conversions$§3Changed Upgrade textures$§3Changed DFC Emitter to have a filter$§3Changed Mining ship tektite yield$§6Fixed Concrete Chemplant recipe$§6Fixed Pumpjack animation and stats$§6Fixed Geiger crash$§6Fixed molten Meteor cooling$§6Fixed BlockPorous missing textures$§6Fixed Crackoil not being boiled$§6Fixed Fracking tower energy$§6Fixed Thorium fuel rod textures$§6Fixed Chemplant Concrete crafting"; + public static final String VERSION = "NTM-Extended-1.12.2-1.9.3-c"; + public static final String CHANGELOG = "§8§lPotion and Contamination update$§2Added Inventory contamination$§2Added WasteSand and WasteGravel$§2Added Potions with NTM Effects$§2Added Digamma Diagnostic Gui$§2Added Tooltip info to armor mods$§2Added Clay recipe$§2Added Suger, Gunpowder, Redstone, Glowstone textures$§2Added Waterbreathing to Armors$§3Changed Rad values of debris$§3Changed Gluon Gun to double dmg every 2s on target$§3Changed size of rbmk blowup effect particle$§3Changed paa recipes and textures$§3Changed hazmat stats$§3Changed Mirvs to split at the highest point and split less extreme$§aUpdated the Teleporter$§aUpdated Tab Icons like in 1.7.10$§6Fixed Jetpacks ignoring keybings$§6Fixed some Gas block lagg$§6Fixed Digamma Debris ticking$§6Fixed nuke flash$§6Fixed geiger counter sounds$§6Fixed polish translation by Taboret$§6Fixed Fallout to be like snow$§6Fixed Chemplant Wood OreDict Recipe$§6Fixed Fracking Solution Drain$§6Fixed Corium in Meteor Dungeon"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/ModEventHandlerClient.java b/src/main/java/com/hbm/main/ModEventHandlerClient.java index d5e556dd46..ebc379688b 100644 --- a/src/main/java/com/hbm/main/ModEventHandlerClient.java +++ b/src/main/java/com/hbm/main/ModEventHandlerClient.java @@ -1625,6 +1625,12 @@ public void onOverlayRender(RenderGameOverlayEvent.Pre event) { RenderScreenOverlay.renderRadCounter(event.getResolution(), rads, Minecraft.getMinecraft().ingameGUI); } } + if(Library.hasInventoryItem(player.inventory, ModItems.digamma_diagnostic)) { + + float digamma = (float)Library.getEntRadCap(player).getDigamma(); + + RenderScreenOverlay.renderDigCounter(event.getResolution(), digamma, Minecraft.getMinecraft().ingameGUI); + } if(JetpackHandler.hasJetpack(player)){ JetpackHandler.renderHUD(player, event.getResolution()); } diff --git a/src/main/java/com/hbm/render/misc/RenderScreenOverlay.java b/src/main/java/com/hbm/render/misc/RenderScreenOverlay.java index fd10f77c1f..c332be48c8 100644 --- a/src/main/java/com/hbm/render/misc/RenderScreenOverlay.java +++ b/src/main/java/com/hbm/render/misc/RenderScreenOverlay.java @@ -24,9 +24,13 @@ public class RenderScreenOverlay { private static final ResourceLocation misc = new ResourceLocation(RefStrings.MODID + ":textures/misc/overlay_misc.png"); private static final RenderItem itemRenderer = Minecraft.getMinecraft().getRenderItem(); - private static long lastSurvey; - private static float prevResult; - private static float lastResult; + private static long lastRadSurvey; + private static float prevRadResult; + private static float lastRadResult; + + private static long lastDigSurvey; + private static float prevDigResult; + private static float lastDigResult; public static void renderRadCounter(ScaledResolution resolution, float in, Gui gui) { GL11.glPushMatrix(); @@ -40,12 +44,12 @@ public static void renderRadCounter(ScaledResolution resolution, float in, Gui g float radiation = 0; - radiation = lastResult - prevResult; + radiation = lastRadResult - prevRadResult; - if(System.currentTimeMillis() >= lastSurvey + 1000) { - lastSurvey = System.currentTimeMillis(); - prevResult = lastResult; - lastResult = in; + if(System.currentTimeMillis() >= lastRadSurvey + 1000) { + lastRadSurvey = System.currentTimeMillis(); + prevRadResult = lastRadResult; + lastRadResult = in; } int length = 74; @@ -64,22 +68,83 @@ public static void renderRadCounter(ScaledResolution resolution, float in, Gui g gui.drawTexturedModalRect(posX + 1, posY + 1, 1, 19, bar, 16); if(radiation >= 25) { - gui.drawTexturedModalRect(posX + length + 2, posY - 18, 36, 36, 18, 18); + gui.drawTexturedModalRect(posX + length + 2 + 18, posY, 36, 36, 18, 18); } else if(radiation >= 10) { - gui.drawTexturedModalRect(posX + length + 2, posY - 18, 18, 36, 18, 18); + gui.drawTexturedModalRect(posX + length + 2 + 18, posY, 18, 36, 18, 18); } else if(radiation >= 2.5) { - gui.drawTexturedModalRect(posX + length + 2, posY - 18, 0, 36, 18, 18); + gui.drawTexturedModalRect(posX + length + 2 + 18, posY, 0, 36, 18, 18); } if(radiation > 1000) { - Minecraft.getMinecraft().fontRenderer.drawString(">1000 RAD/s", posX, posY - 8, 0xFF0000); + Minecraft.getMinecraft().fontRenderer.drawString(">1000 RAD/s", posX, posY - 8, 0x00FF00); } else if(radiation >= 1) { Minecraft.getMinecraft().fontRenderer.drawString(((int)Math.round(radiation)) + " RAD/s", posX, posY - 8, 0xFF0000); } else if(radiation > 0) { - Minecraft.getMinecraft().fontRenderer.drawString("<1 RAD/s", posX, posY - 8, 0xFF0000); + Minecraft.getMinecraft().fontRenderer.drawString("<1 RAD/s", posX, posY - 8, 0x00FF00); + } + + GlStateManager.enableDepth(); + GlStateManager.depthMask(true); + GL11.glPopMatrix(); + Minecraft.getMinecraft().renderEngine.bindTexture(Gui.ICONS); + } + + + public static void renderDigCounter(ScaledResolution resolution, float in, Gui gui) { + GL11.glPushMatrix(); + + GlStateManager.enableBlend(); + GlStateManager.disableDepth(); + GlStateManager.depthMask(false); + GlStateManager.tryBlendFuncSeparate(SourceFactor.SRC_ALPHA, DestFactor.ONE_MINUS_SRC_ALPHA, SourceFactor.ONE, DestFactor.ZERO); + GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F); + GlStateManager.disableAlpha(); + + float digamma = 0; + + digamma = lastDigResult - prevDigResult; + + if(System.currentTimeMillis() >= lastDigSurvey + 1000) { + lastDigSurvey = System.currentTimeMillis(); + prevDigResult = lastDigResult; + lastDigResult = in; + } + + int length = 74; + int maxDig = 10; + + int bar = getScaled(in, maxDig, 74); + + //if(radiation >= 1 && radiation <= 999) + // bar -= (1 + Minecraft.getMinecraft().theWorld.rand.nextInt(3)); + + int posX = 16; + int posY = resolution.getScaledHeight() - 36 - 2; + + Minecraft.getMinecraft().renderEngine.bindTexture(misc); + gui.drawTexturedModalRect(posX, posY, 0, 218, 94, 18); + gui.drawTexturedModalRect(posX + 1, posY + 1, 1, 237, bar, 16); + + if(digamma >= 0.25) { + gui.drawTexturedModalRect(posX + length + 2 + 18, posY, 108, 72, 18, 18); + + } else if(digamma >= 0.1) { + gui.drawTexturedModalRect(posX + length + 2 + 18, posY, 90, 72, 18, 18); + + } else if(digamma >= 0.025) { + gui.drawTexturedModalRect(posX + length + 2 + 18, posY, 72, 72, 18, 18); + + } + + if(digamma > 0.1) { + Minecraft.getMinecraft().fontRenderer.drawString(">100 mDRX/s", posX, posY - 8, 0xFF0000); + } else if(digamma >= 0.01) { + Minecraft.getMinecraft().fontRenderer.drawString(((int)Math.round(digamma*1000D)) + " mDRX/s", posX, posY - 8, 0xFF0000); + } else if(digamma > 0) { + Minecraft.getMinecraft().fontRenderer.drawString("<10 mDRX/s", posX, posY - 8, 0xFF0000); } GlStateManager.enableDepth(); diff --git a/src/main/java/com/hbm/util/ContaminationUtil.java b/src/main/java/com/hbm/util/ContaminationUtil.java index 1fe9c5a97e..0457202b38 100644 --- a/src/main/java/com/hbm/util/ContaminationUtil.java +++ b/src/main/java/com/hbm/util/ContaminationUtil.java @@ -459,9 +459,12 @@ public static float getDigamma(Entity e) { EntityLivingBase entity = (EntityLivingBase)e; return HbmLivingProps.getDigamma(entity); } + public static void radiate(World world, int x, int y, int z, double range, float rad3d, float fire3d) { + radiate(world, x, y, z, range, rad3d, 0, fire3d); + } - public static void radiate(World world, int x, int y, int z, double range, float rad3d, float fire3d) { + public static void radiate(World world, int x, int y, int z, double range, float rad3d, float dig3d, float fire3d) { List entities = world.getEntitiesWithinAABB(EntityLivingBase.class, new AxisAlignedBB(x + 0.5, y + 0.5, z + 0.5, x + 0.5, y + 0.5, z + 0.5).grow(range, range, range)); @@ -484,12 +487,20 @@ public static void radiate(World world, int x, int y, int z, double range, float if(res < 1) res = 1; - - float eRads = rad3d; - eRads /= (float)res; - eRads /= (float)(len * len); - - contaminate(e, HazardType.RADIATION, ContaminationType.CREATIVE, eRads); + if(rad3d > 0){ + float eRads = rad3d; + eRads /= (float)res; + eRads /= (float)(len * len); + + contaminate(e, HazardType.RADIATION, ContaminationType.CREATIVE, eRads); + } + if(dig3d > 0){ + float eDig = dig3d; + eDig /= (float)res; + eDig /= (float)(len * len); + + contaminate(e, HazardType.DIGAMMA, ContaminationType.DIGAMMA, eDig); + } if(len < 15 && fire3d > 0) { float fireDmg = fire3d; diff --git a/src/main/resources/assets/hbm/textures/misc/overlay_misc.png b/src/main/resources/assets/hbm/textures/misc/overlay_misc.png index d6a406b37f8eafff2277a051ee129d8feb9ad8ce..6b63ca2d2b1a3bd607b447cee33223bdc60390da 100644 GIT binary patch literal 15892 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 R+evPKtfZ1erI_*e{|_5aG;#m{ literal 10442 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