From 14786641099f3d9c5e23e264089e21fa7ca6427b Mon Sep 17 00:00:00 2001 From: Bob Date: Thu, 31 Mar 2022 22:54:10 +0200 Subject: [PATCH 1/5] fixed mappings and broken textures --- src/main/java/com/hbm/blocks/ModBlocks.java | 4 + .../blocks/generic/BlockMotherOfAllOres.java | 229 +++++++++++++++++- .../java/com/hbm/items/tool/ItemWandD.java | 13 +- src/main/java/com/hbm/lib/HbmWorldGen.java | 7 + src/main/java/com/hbm/lib/Library.java | 1 + src/main/java/com/hbm/main/MainRegistry.java | 3 + src/main/java/com/hbm/main/NEIConfig.java | 35 +++ .../render/block/RenderBlockMultipass.java | 61 +++++ .../java/com/hbm/render/model/ModelM65.java | 36 ++- .../render/util/RenderAccessoryUtility.java | 4 + .../java/com/hbm/tileentity/TileMappings.java | 3 + src/main/java/com/hbm/util/ColorUtil.java | 6 +- src/main/resources/assets/hbm/lang/de_DE.lang | 2 + src/main/resources/assets/hbm/lang/en_US.lang | 2 + .../assets/hbm/textures/blocks/ore_cobalt.png | Bin 326 -> 593 bytes .../assets/hbm/textures/blocks/ore_copper.png | Bin 229 -> 527 bytes .../hbm/textures/models/capes/CapePheo.png | Bin 0 -> 16324 bytes 17 files changed, 378 insertions(+), 28 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/models/capes/CapePheo.png diff --git a/src/main/java/com/hbm/blocks/ModBlocks.java b/src/main/java/com/hbm/blocks/ModBlocks.java index 4e768e7ed..ec06e13b4 100644 --- a/src/main/java/com/hbm/blocks/ModBlocks.java +++ b/src/main/java/com/hbm/blocks/ModBlocks.java @@ -2,6 +2,7 @@ package com.hbm.blocks; import com.hbm.blocks.generic.*; import com.hbm.blocks.generic.BlockHazard.ExtDisplayEffect; +import com.hbm.blocks.generic.BlockMotherOfAllOres.ItemRandomOreBlock; import com.hbm.blocks.bomb.*; import com.hbm.blocks.fluid.*; import com.hbm.blocks.gas.*; @@ -2399,6 +2400,9 @@ public class ModBlocks { //End Ores GameRegistry.registerBlock(ore_tikite, ore_tikite.getUnlocalizedName()); + //It's a meme you dip + GameRegistry.registerBlock(ore_random, ItemRandomOreBlock.class, ore_random.getUnlocalizedName()); + //Crystals GameRegistry.registerBlock(crystal_power, crystal_power.getUnlocalizedName()); GameRegistry.registerBlock(crystal_energy, crystal_energy.getUnlocalizedName()); diff --git a/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java b/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java index 6a093fe80..830aef77b 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java +++ b/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java @@ -1,28 +1,59 @@ package com.hbm.blocks.generic; +import java.awt.Color; +import java.util.ArrayList; +import java.util.HashSet; +import java.util.List; +import java.util.Random; + +import com.google.common.collect.HashBiMap; import com.hbm.blocks.IBlockMultiPass; +import com.hbm.blocks.ModBlocks; import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ModItems; import com.hbm.lib.RefStrings; import com.hbm.render.block.RenderBlockMultipass; +import com.hbm.util.ColorUtil; +import com.hbm.util.I18nUtil; import cpw.mods.fml.relauncher.Side; import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; import net.minecraft.block.BlockContainer; import net.minecraft.block.material.Material; import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.EntityLivingBase; import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemBlock; import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.network.NetworkManager; +import net.minecraft.network.Packet; +import net.minecraft.network.play.server.S35PacketUpdateTileEntity; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import net.minecraftforge.oredict.OreDictionary; public class BlockMotherOfAllOres extends BlockContainer implements IBlockMultiPass { + + public static int override = -1; + + public static void shuffleOverride(Random rand) { + override = rand.nextInt(uniqueItems.size()); + } + + public static void resetOverride() { + override = -1; + } public BlockMotherOfAllOres() { super(Material.rock); - this.blockIcon = Blocks.stone.getIcon(0, 0); + this.setBlockTextureName("stone"); } @Override @@ -30,16 +61,54 @@ public class BlockMotherOfAllOres extends BlockContainer implements IBlockMultiP return new TileEntityRandomOre(); } + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List list) { + + for(int i = 0; i < uniqueItems.size(); i++) + list.add(new ItemStack(item, 1, i)); + } + @Override public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) { TileEntity te = world.getTileEntity(x, y, z); if(te instanceof TileEntityRandomOre) { - return ((TileEntityRandomOre) te).getStack().copy(); + TileEntityRandomOre ore = (TileEntityRandomOre) te; + return new ItemStack(this, 1, ore.getStackId()); } - return super.getPickBlock(target, world, x, y, z); + return new ItemStack(ModItems.nothing); + } + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + ArrayList ret = new ArrayList(); + + if(fortune == 0xFECE00) { + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRandomOre) { + TileEntityRandomOre ore = (TileEntityRandomOre) te; + ComparableStack item = ore.getCompStack(); + ret.add(item.toStack()); + } + } + + return ret; + } + + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + this.dropBlockAsItemWithChance(world, x, y, z, meta, 1, 0xFECE00); + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack stack) { + ((TileEntityRandomOre)world.getTileEntity(x, y, z)).setItem(stack.getItemDamage()); + world.markBlockForUpdate(x, y, z); } @Override @@ -57,6 +126,8 @@ public class BlockMotherOfAllOres extends BlockContainer implements IBlockMultiP @Override @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister reg) { + + this.blockIcon = reg.registerIcon("stone"); for(int i = 0; i < overlays.length; i++) { overlays[i] = reg.registerIcon(RefStrings.MODID + ":ore_random_" + (i + 1)); } @@ -67,22 +138,27 @@ public class BlockMotherOfAllOres extends BlockContainer implements IBlockMultiP public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { if(RenderBlockMultipass.currentPass == 0) - return this.blockIcon; + return Blocks.stone.getIcon(0, 0); TileEntity te = world.getTileEntity(x, y, z); if(te instanceof TileEntityRandomOre) { TileEntityRandomOre ore = (TileEntityRandomOre) te; - ItemStack item = ore.getStack(); - - if(item != null) { - ComparableStack stack = new ComparableStack(item); - int index = stack.hashCode() % overlays.length; - return overlays[index]; - } + int index = ore.getStackId() % overlays.length; + return overlays[index]; } + + return Blocks.stone.getIcon(0, 0); + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + + if(RenderBlockMultipass.currentPass == 0) + return Blocks.stone.getIcon(0, 0); - return this.getIcon(side, world.getBlockMetadata(x, y, z)); + int index = meta % overlays.length; + return overlays[index]; } @Override @@ -91,19 +167,146 @@ public class BlockMotherOfAllOres extends BlockContainer implements IBlockMultiP if(RenderBlockMultipass.currentPass == 0) return 0xffffff; + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRandomOre) { + TileEntityRandomOre ore = (TileEntityRandomOre) te; + ItemStack stack = ore.getStack(); + int color = ColorUtil.getAverageColorFromStack(stack); + color = ColorUtil.amplifyColor(color); + + Color col = new Color(color); + int r = col.getRed(); + int g = col.getGreen(); + int b = col.getBlue(); + + float[] hsb = new Color(color).RGBtoHSB(r, g, b, new float[3]); + + if(hsb[1] > 0F && hsb[1] < 0.75F) + hsb[1] = 0.75F; + + color = Color.HSBtoRGB(hsb[0], hsb[1], hsb[2]); + + return color; + } return super.colorMultiplier(world, x, y, z); } public static class TileEntityRandomOre extends TileEntity { + private ComparableStack stack; + + public TileEntityRandomOre() { + if(override != -1) { + setItem(override); + } + } + + public void setItem(int id) { + ComparableStack comp = itemMap.get(id); + this.stack = comp != null ? ((ComparableStack) comp.copy()) : null; + + if(this.worldObj != null) + this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); + } + + public int getStackId() { + return itemMap.inverse().get(getCompStack()); + } + public ItemStack getStack() { - return new ItemStack(Blocks.dirt); + return getCompStack().toStack(); + } + + public ComparableStack getCompStack() { + + if(stack == null) { + int rand = worldObj.rand.nextInt(uniqueItems.size()); + stack = (ComparableStack) itemMap.get(rand).copy(); + this.worldObj.markTileEntityChunkModified(this.xCoord, this.yCoord, this.zCoord, this); + } + + return stack != null ? stack : new ComparableStack(ModItems.nothing); } @Override public boolean canUpdate() { return false; } + + @Override + public void readFromNBT(NBTTagCompound nbt) { + super.readFromNBT(nbt); + int key = nbt.getInteger("item"); + this.setItem(key); + } + + @Override + public void writeToNBT(NBTTagCompound nbt) { + super.writeToNBT(nbt); + int key = itemMap.inverse().get(getCompStack()); + nbt.setInteger("item", key); + } + + @Override + public Packet getDescriptionPacket() { + NBTTagCompound nbt = new NBTTagCompound(); + this.writeToNBT(nbt); + return new S35PacketUpdateTileEntity(this.xCoord, this.yCoord, this.zCoord, 0, nbt); + } + + @Override + public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) { + this.readFromNBT(pkt.func_148857_g()); + } + } + + public static class ItemRandomOreBlock extends ItemBlock { + + public ItemRandomOreBlock(Block block) { + super(block); + this.setHasSubtypes(true); + this.setMaxDamage(0); + } + + @Override + public String getItemStackDisplayName(ItemStack stack) { + ComparableStack comp = itemMap.get(stack.getItemDamage()); + ItemStack name = comp != null ? comp.toStack() : new ItemStack(ModItems.nothing); + if(name.getItemDamage() == OreDictionary.WILDCARD_VALUE) { + name.setItemDamage(0); + } + return I18nUtil.resolveKey(this.getUnlocalizedName() + ".name", name.getItem().getItemStackDisplayName(name)); + } + } + + public static HashSet uniqueItems = new HashSet(); + public static HashBiMap itemMap = HashBiMap.create(); + + public static void init() { + + for(Object b : Block.blockRegistry.getKeys()) { + Block block = Block.getBlockFromName((String) b); + if(block != null) + uniqueItems.add(new ComparableStack(block)); + } + + for(Object i : Item.itemRegistry.getKeys()) { + Item item = (Item) Item.itemRegistry.getObject((String) i); + uniqueItems.add(new ComparableStack(item)); + } + + for(String i : OreDictionary.getOreNames()) { + for(ItemStack stack : OreDictionary.getOres(i)) { + uniqueItems.add(new ComparableStack(stack)); + } + } + + int i = 0; + for(ComparableStack stack : uniqueItems) { + itemMap.put(i++, stack); + } } } diff --git a/src/main/java/com/hbm/items/tool/ItemWandD.java b/src/main/java/com/hbm/items/tool/ItemWandD.java index dd61128ba..3faa74be1 100644 --- a/src/main/java/com/hbm/items/tool/ItemWandD.java +++ b/src/main/java/com/hbm/items/tool/ItemWandD.java @@ -9,9 +9,11 @@ import com.hbm.lib.Library; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.monster.EntityZombie; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; +import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.MovingObjectPosition; import net.minecraft.world.World; @@ -27,10 +29,17 @@ public class ItemWandD extends Item { if(pos != null) { - EntitySiegeTunneler tunneler = new EntitySiegeTunneler(world); + List zombies = world.getEntitiesWithinAABB(EntityZombie.class, AxisAlignedBB.getBoundingBox(pos.blockX - 2, pos.blockY - 2, pos.blockZ - 2, pos.blockX + 2, pos.blockY + 2, pos.blockZ + 2)); + + for(EntityZombie zombie : zombies) { + zombie.setChild(true); + zombie.setCurrentItemOrArmor(4, new ItemStack(ModItems.gas_mask_m65)); + } + + /*EntitySiegeTunneler tunneler = new EntitySiegeTunneler(world); tunneler.setPosition(pos.blockX, pos.blockY + 1, pos.blockZ); tunneler.onSpawnWithEgg(null); - world.spawnEntityInWorld(tunneler); + world.spawnEntityInWorld(tunneler);*/ //CellularDungeonFactory.meteor.generate(world, x, y, z, world.rand); diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index a5442ede4..db42ab6e0 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -3,6 +3,7 @@ package com.hbm.lib; import java.util.Random; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.config.GeneralConfig; import com.hbm.config.WorldConfig; import com.hbm.items.ModItems; @@ -116,6 +117,12 @@ public class HbmWorldGen implements IWorldGenerator { DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.titaniumClusterSpawn, 6, 15, 30, ModBlocks.cluster_titanium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.aluminiumClusterSpawn, 6, 15, 35, ModBlocks.cluster_aluminium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.copperClusterSpawn, 6, 15, 20, ModBlocks.cluster_copper); + + for(int k = 0; k < 16; k++) { + BlockMotherOfAllOres.shuffleOverride(rand); + DungeonToolbox.generateOre(world, rand, i, j, 1, 10, 4, 30, ModBlocks.ore_random); + } + BlockMotherOfAllOres.resetOverride(); if(GeneralConfig.enable528ColtanSpawn) { DungeonToolbox.generateOre(world, rand, i, j, GeneralConfig.coltanRate, 4, 15, 40, ModBlocks.ore_coltan); diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 483b0368b..72ad14fd5 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -74,6 +74,7 @@ public class Library { public static String SolsticeUnlimitd = "f5574fd2-ec28-4927-9d11-3c0c731771f4"; public static String FrizzleFrazzle = "fc4cc2ee-12e8-4097-b26a-1c6cb1b96531"; public static String the_NCR = "28ae585f-4431-4491-9ce8-3def6126e3c6"; + public static String Barnaby99_x = "711aaf78-a862-4b7e-921a-216349716e9a"; public static Set contributors = Sets.newHashSet(new String[] { "06ab7c03-55ce-43f8-9d3c-2850e3c652de", //mustang_rudolf diff --git a/src/main/java/com/hbm/main/MainRegistry.java b/src/main/java/com/hbm/main/MainRegistry.java index 0297c2d0a..90313f632 100644 --- a/src/main/java/com/hbm/main/MainRegistry.java +++ b/src/main/java/com/hbm/main/MainRegistry.java @@ -38,6 +38,7 @@ import org.apache.logging.log4j.Logger; import com.google.common.collect.ImmutableList; import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockMotherOfAllOres; import com.hbm.config.*; import com.hbm.creativetabs.*; import com.hbm.entity.effect.*; @@ -972,6 +973,8 @@ public class MainRegistry { proxy.registerMissileItems(); + BlockMotherOfAllOres.init(); + //expand for the largest entity we have (currently Quackos who is 17.5m in diameter, that's one fat duck) World.MAX_ENTITY_RADIUS = Math.max(World.MAX_ENTITY_RADIUS, 8.75); diff --git a/src/main/java/com/hbm/main/NEIConfig.java b/src/main/java/com/hbm/main/NEIConfig.java index 1d57eeb24..0b79f4212 100644 --- a/src/main/java/com/hbm/main/NEIConfig.java +++ b/src/main/java/com/hbm/main/NEIConfig.java @@ -1,6 +1,9 @@ package com.hbm.main; +import java.util.List; + import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.config.VersatileConfig; import com.hbm.handler.nei.*; import com.hbm.items.ModItems; @@ -9,7 +12,14 @@ import com.hbm.lib.RefStrings; import codechicken.nei.api.API; import codechicken.nei.api.IConfigureNEI; +import codechicken.nei.api.IHighlightHandler; +import codechicken.nei.api.ItemInfo.Layout; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MovingObjectPosition; +import net.minecraft.world.World; public class NEIConfig implements IConfigureNEI { @@ -139,6 +149,31 @@ public class NEIConfig implements IConfigureNEI { API.hideItem(new ItemStack(ModBlocks.pink_slab)); API.hideItem(new ItemStack(ModBlocks.pink_double_slab)); API.hideItem(new ItemStack(ModBlocks.pink_stairs)); + + API.registerHighlightIdentifier(ModBlocks.ore_random, new IHighlightHandler() { + + @Override + public ItemStack identifyHighlight(World world, EntityPlayer player, MovingObjectPosition mop) { + int x = mop.blockX; + int y = mop.blockY; + int z = mop.blockZ; + + TileEntity te = world.getTileEntity(x, y, z); + + if(te instanceof TileEntityRandomOre) { + TileEntityRandomOre ore = (TileEntityRandomOre) te; + return new ItemStack(ModBlocks.ore_random, 1, ore.getStackId()); + } + + return null; + } + + @Override + public List handleTextData(ItemStack itemStack, World world, EntityPlayer player, MovingObjectPosition mop, List currenttip, Layout layout) { + return currenttip; + } + + }); } @Override diff --git a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java index 9a3e26d03..d408dd0eb 100644 --- a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java +++ b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java @@ -1,13 +1,21 @@ package com.hbm.render.block; +import java.awt.Color; + import org.lwjgl.opengl.GL11; import com.hbm.blocks.IBlockMultiPass; +import com.hbm.blocks.ModBlocks; +import com.hbm.blocks.generic.BlockMotherOfAllOres; +import com.hbm.inventory.RecipesCommon.ComparableStack; +import com.hbm.items.ModItems; +import com.hbm.util.ColorUtil; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; +import net.minecraft.item.ItemStack; import net.minecraft.world.IBlockAccess; public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { @@ -59,6 +67,59 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); tessellator.draw(); + if(block == ModBlocks.ore_random) { + + this.currentPass = 1; + renderer.setOverrideBlockTexture(block.getIcon(0, metadata)); + this.currentPass = 0; + ComparableStack stack = BlockMotherOfAllOres.itemMap.get(metadata); + int color = ColorUtil.getAverageColorFromStack(stack != null ? stack.toStack() : new ItemStack(ModItems.nothing)); + color = ColorUtil.amplifyColor(color); + + Color col = new Color(color); + int r = col.getRed(); + int g = col.getGreen(); + int b = col.getBlue(); + + float[] hsb = new Color(color).RGBtoHSB(r, g, b, new float[3]); + + if(hsb[1] > 0F && hsb[1] < 0.75F) + hsb[1] = 0.75F; + + color = Color.HSBtoRGB(hsb[0], hsb[1], hsb[2]); + col = new Color(color); + + GL11.glColor3f(col.getRed() / 255F, col.getGreen() / 255F, col.getBlue() / 255F); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 0, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 1, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 2, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 3, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 4, metadata)); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); + tessellator.draw(); + + renderer.clearOverrideBlockTexture(); + GL11.glColor3f(1F, 1F, 1F); + } + GL11.glTranslatef(0.5F, 0.5F, 0.5F); } diff --git a/src/main/java/com/hbm/render/model/ModelM65.java b/src/main/java/com/hbm/render/model/ModelM65.java index c1eaaab90..d61b13d43 100644 --- a/src/main/java/com/hbm/render/model/ModelM65.java +++ b/src/main/java/com/hbm/render/model/ModelM65.java @@ -126,17 +126,33 @@ public class ModelM65 extends ModelBiped { @Override public void render(Entity entity, float par2, float par3, float par4, float par5, float par6, float par7) { setRotationAngles(par2, par3, par4, par5, par6, par7, entity); - GL11.glPushMatrix(); - double d = 1D / 16D * 18D; - //GL11.glTranslated(0, 1/16D, 0); - GL11.glScaled(d, d, d); - GL11.glScaled(1.01D, 1.01D, 1.01D); - this.mask.render(par7); - if(!(entity instanceof EntityLivingBase) || ArmorUtil.getGasMaskFilterRecursively(((EntityLivingBase)entity).getEquipmentInSlot(4), (EntityLivingBase)entity) != null) - this.filter.render(par7); - - GL11.glPopMatrix(); + if(this.isChild) { + float f6 = 2.0F; + GL11.glPushMatrix(); + GL11.glScalef(1.5F / f6, 1.5F / f6, 1.5F / f6); + GL11.glTranslatef(0.0F, 16.0F * par7, 0.0F); + double d = 1D / 16D * 18D; + GL11.glScaled(d, d, d); + GL11.glScaled(1.01D, 1.01D, 1.01D); + this.mask.render(par7); + + if(!(entity instanceof EntityLivingBase) || ArmorUtil.getGasMaskFilterRecursively(((EntityLivingBase)entity).getEquipmentInSlot(4), (EntityLivingBase)entity) != null) + this.filter.render(par7); + + GL11.glPopMatrix(); + } else { + GL11.glPushMatrix(); + double d = 1D / 16D * 18D; + GL11.glScaled(d, d, d); + GL11.glScaled(1.01D, 1.01D, 1.01D); + this.mask.render(par7); + + if(!(entity instanceof EntityLivingBase) || ArmorUtil.getGasMaskFilterRecursively(((EntityLivingBase)entity).getEquipmentInSlot(4), (EntityLivingBase)entity) != null) + this.filter.render(par7); + + GL11.glPopMatrix(); + } } private void setRotation(ModelRenderer model, float x, float y, float z) { diff --git a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java index 7103eebad..b0d165e51 100644 --- a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java +++ b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java @@ -41,6 +41,7 @@ public class RenderAccessoryUtility { private static ResourceLocation rightnugget = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeRightNugget.png"); private static ResourceLocation tankish = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeTankish.png"); private static ResourceLocation frizzlefrazzle = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeFrizzleFrazzle.png"); + private static ResourceLocation pheo = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapePheo.png"); public static ResourceLocation getCloakFromPlayer(EntityPlayer player) { @@ -111,6 +112,9 @@ public class RenderAccessoryUtility { if(uuid.equals(Library.FrizzleFrazzle)) { return frizzlefrazzle; } + if(uuid.equals(Library.Barnaby99_x)) { + return pheo; + } if(Library.contributors.contains(uuid)) { return wiki; } diff --git a/src/main/java/com/hbm/tileentity/TileMappings.java b/src/main/java/com/hbm/tileentity/TileMappings.java index 3b044c1ea..ca2701011 100644 --- a/src/main/java/com/hbm/tileentity/TileMappings.java +++ b/src/main/java/com/hbm/tileentity/TileMappings.java @@ -5,6 +5,7 @@ import java.util.HashMap; import com.hbm.blocks.generic.BlockBobble.TileEntityBobble; import com.hbm.blocks.generic.BlockEmitter.TileEntityEmitter; import com.hbm.blocks.generic.BlockLoot.TileEntityLoot; +import com.hbm.blocks.generic.BlockMotherOfAllOres.TileEntityRandomOre; import com.hbm.blocks.network.CableDiode.TileEntityDiode; import com.hbm.tileentity.bomb.*; import com.hbm.tileentity.conductor.*; @@ -199,6 +200,8 @@ public class TileMappings { put(TileEntityProxyEnergy.class, "tileentity_proxy_power"); put(TileEntityProxyCombo.class, "tileentity_proxy_combo"); put(TileEntityProxyConductor.class, "tileentity_proxy_conductor"); + + put(TileEntityRandomOre.class, "tileentity_mother_of_all_ores"); putNetwork(); putBombs(); diff --git a/src/main/java/com/hbm/util/ColorUtil.java b/src/main/java/com/hbm/util/ColorUtil.java index 60779593e..1cfcfe039 100644 --- a/src/main/java/com/hbm/util/ColorUtil.java +++ b/src/main/java/com/hbm/util/ColorUtil.java @@ -63,7 +63,7 @@ public class ColorUtil { int avgG = g / pixels; int avgB = b / pixels; - return (r << 16) | (g << 8) | b; + return (avgR << 16) | (avgG << 8) | avgB; } catch(Exception ex) { return 0xFFFFFF; @@ -122,7 +122,7 @@ public class ColorUtil { if(b / r > 1.5) return true; if(b / g > 1.5) return true;*/ - float[] hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), new float[0]); + float[] hsb = Color.RGBtoHSB(color.getRed(), color.getGreen(), color.getBlue(), new float[3]); // saturation brightness return hsb[1] > 0.25 && hsb[2] > 0.25; @@ -139,7 +139,7 @@ public class ColorUtil { int r = color.getRed(); int g = color.getGreen(); int b = color.getBlue(); - int max = Math.max(r, Math.max(g, b)); + int max = Math.max(Math.max(1, r), Math.max(g, b)); r = r * limit / max; g = g * limit / max; diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index 2e0bdc918..c02f5c7e4 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -947,6 +947,7 @@ item.can_empty.name=Leere Dose item.can_key.name=Dosenschlüssel item.can_luna.name=Black Mesa Luna - Dark Cola item.can_mrsugar.name='Dr. Sugar' Softdrink +item.can_mug.name=MUG Root Beer item.can_overcharge.name=Overcharge Delirium XT item.can_redbomb.name='Red Bomb' Energy-Drink item.can_smart.name='Smart' Energy-Drink @@ -3446,6 +3447,7 @@ tile.ore_niter.name=Salpetererz tile.ore_oil.name=Ölvorkommen tile.ore_oil_empty.name=Leeres Ölvorkommen tile.ore_oil_sand.name=Teersand +tile.ore_random.name=%s-Erz tile.ore_rare.name=Seltenerden-Erz tile.ore_reiium.name=Reiit tile.ore_schrabidium.name=Schrabidiumerz diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 78a4494a2..6891f4595 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -1157,6 +1157,7 @@ item.can_empty.name=Empty Can item.can_key.name=Winding Key item.can_luna.name=Black Mesa Luna - Dark Cola item.can_mrsugar.name='Dr. Sugar' Soft Drink +item.can_mug.name=MUG Root Beer item.can_overcharge.name=Overcharge Delirium XT item.can_redbomb.name='Red Bomb' Energy Drink item.can_smart.name='Smart' Energy Drink @@ -3819,6 +3820,7 @@ tile.ore_niter.name=Niter Ore tile.ore_oil.name=Oil Deposit tile.ore_oil_empty.name=Empty Oil Deposit tile.ore_oil_sand.name=Tar Sand +tile.ore_random.name=%s Ore tile.ore_rare.name=Rare Earth Ore tile.ore_reiium.name=Reiite tile.ore_schrabidium.name=Schrabidium Ore diff --git a/src/main/resources/assets/hbm/textures/blocks/ore_cobalt.png b/src/main/resources/assets/hbm/textures/blocks/ore_cobalt.png index 2553fad8480e107443760fcf1333db0a14afeca2..40dfc4cf09dbb0e0c44da24697e6f712bfee3426 100644 GIT binary patch delta 553 zcmV+^0@nS;0?`DJGk*dINkl_l#?+3l!cQ!T(tgTt5 zr>D8UzvtoMf!*EE+3LL&q)GissWJVz6l2V20wKhhHh--(T5I>fTFc?#Pj@eba7*>} z_V$K31HjD87v|>XXti3DN~ufe>s`H$xv!LROjA>z84Uh%dU^`L%?&gf(oM0j@Rc-8 zv9<*~+c<8`9e_*VC?AP)=<)Fv7Z(@QYRhg4AK>^nCI|x7*ZXfS@`c2*v@{BuwRRL` rYb~3bvm!v>F@<6HpYF-uIS2j+U9tW#5B2}H00000NkvXXu0mjf!etX# delta 284 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 literal 0 HcmV?d00001 From 115cc07af8785f0eab12215e06208a1afba7e64d Mon Sep 17 00:00:00 2001 From: Boblet Date: Fri, 1 Apr 2022 15:26:13 +0200 Subject: [PATCH 2/5] more world gen configs, classic cable renderer half done --- src/main/java/com/hbm/config/WorldConfig.java | 4 + src/main/java/com/hbm/lib/HbmWorldGen.java | 2 +- src/main/java/com/hbm/main/ClientProxy.java | 2 +- .../render/block/RenderBlockMultipass.java | 1 + ...{RenderTestCable.java => RenderCable.java} | 6 +- .../hbm/render/block/RenderCableClassic.java | 115 +++++++++++++++++- .../hbm/textures/blocks/red_cable_classic.png | Bin 229 -> 297 bytes 7 files changed, 120 insertions(+), 10 deletions(-) rename src/main/java/com/hbm/render/block/{RenderTestCable.java => RenderCable.java} (94%) diff --git a/src/main/java/com/hbm/config/WorldConfig.java b/src/main/java/com/hbm/config/WorldConfig.java index 6d5d55fdb..a6c5b2c50 100644 --- a/src/main/java/com/hbm/config/WorldConfig.java +++ b/src/main/java/com/hbm/config/WorldConfig.java @@ -47,6 +47,8 @@ public class WorldConfig { public static int endTikiteSpawn = 8; + public static int randomSpawn = 16; + public static int radioStructure = 500; public static int antennaStructure = 250; public static int atomStructure = 500; @@ -124,6 +126,8 @@ public class WorldConfig { endTikiteSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.E00_tikiteSpawnrate", "Amount of end trixite per chunk", 8); + randomSpawn = CommonConfig.createConfigInt(config, CATEGORY_OREGEN, "2.R00_randomOreSpawnrate", "Amount of random ore per chunk", 16); + final String CATEGORY_DUNGEON = "04_dungeons"; radioStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.00_radioSpawn", "Spawn radio station on every nTH chunk", 500); antennaStructure = CommonConfig.createConfigInt(config, CATEGORY_DUNGEON, "4.01_antennaSpawn", "Spawn antenna on every nTH chunk", 250); diff --git a/src/main/java/com/hbm/lib/HbmWorldGen.java b/src/main/java/com/hbm/lib/HbmWorldGen.java index db42ab6e0..691f6c114 100644 --- a/src/main/java/com/hbm/lib/HbmWorldGen.java +++ b/src/main/java/com/hbm/lib/HbmWorldGen.java @@ -118,7 +118,7 @@ public class HbmWorldGen implements IWorldGenerator { DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.aluminiumClusterSpawn, 6, 15, 35, ModBlocks.cluster_aluminium); DungeonToolbox.generateOre(world, rand, i, j, WorldConfig.copperClusterSpawn, 6, 15, 20, ModBlocks.cluster_copper); - for(int k = 0; k < 16; k++) { + for(int k = 0; k < WorldConfig.randomSpawn; k++) { BlockMotherOfAllOres.shuffleOverride(rand); DungeonToolbox.generateOre(world, rand, i, j, 1, 10, 4, 30, ModBlocks.ore_random); } diff --git a/src/main/java/com/hbm/main/ClientProxy.java b/src/main/java/com/hbm/main/ClientProxy.java index b24f96d5c..ce28cc008 100644 --- a/src/main/java/com/hbm/main/ClientProxy.java +++ b/src/main/java/com/hbm/main/ClientProxy.java @@ -678,7 +678,7 @@ public class ClientProxy extends ServerProxy { RenderingRegistry.registerBlockHandler(new RenderBattery()); RenderingRegistry.registerBlockHandler(new RenderAnvil()); RenderingRegistry.registerBlockHandler(new RenderCrystal()); - RenderingRegistry.registerBlockHandler(new RenderTestCable()); + RenderingRegistry.registerBlockHandler(new RenderCable()); RenderingRegistry.registerBlockHandler(new RenderCableClassic()); RenderingRegistry.registerBlockHandler(new RenderTestPipe()); RenderingRegistry.registerBlockHandler(new RenderBlockCT()); diff --git a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java index d408dd0eb..9932ae2a1 100644 --- a/src/main/java/com/hbm/render/block/RenderBlockMultipass.java +++ b/src/main/java/com/hbm/render/block/RenderBlockMultipass.java @@ -67,6 +67,7 @@ public class RenderBlockMultipass implements ISimpleBlockRenderingHandler { renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, renderer.getBlockIconFromSideAndMetadata(block, 5, metadata)); tessellator.draw(); + /** terrible hack to make this shit work */ if(block == ModBlocks.ore_random) { this.currentPass = 1; diff --git a/src/main/java/com/hbm/render/block/RenderTestCable.java b/src/main/java/com/hbm/render/block/RenderCable.java similarity index 94% rename from src/main/java/com/hbm/render/block/RenderTestCable.java rename to src/main/java/com/hbm/render/block/RenderCable.java index ad4f013ec..5b3b823c9 100644 --- a/src/main/java/com/hbm/render/block/RenderTestCable.java +++ b/src/main/java/com/hbm/render/block/RenderCable.java @@ -7,19 +7,15 @@ import com.hbm.lib.Library; import com.hbm.main.ResourceManager; import com.hbm.render.util.ObjUtil; -import api.hbm.energy.IEnergyConnector; -import api.hbm.energy.IEnergyConnectorBlock; import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; import net.minecraft.block.Block; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; -import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraftforge.client.model.obj.WavefrontObject; -import net.minecraftforge.common.util.ForgeDirection; -public class RenderTestCable implements ISimpleBlockRenderingHandler { +public class RenderCable implements ISimpleBlockRenderingHandler { @Override public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { diff --git a/src/main/java/com/hbm/render/block/RenderCableClassic.java b/src/main/java/com/hbm/render/block/RenderCableClassic.java index 1ccfbcd7b..3440824b1 100644 --- a/src/main/java/com/hbm/render/block/RenderCableClassic.java +++ b/src/main/java/com/hbm/render/block/RenderCableClassic.java @@ -41,15 +41,124 @@ public class RenderCableClassic implements ISimpleBlockRenderingHandler { double px = 0.0625D; double uv_cL = iicon.getMinU(); - double uv_cR = iicon.getMinU() + spanU * 5 / px; - double uv_cT = iicon.getMaxV(); - double uv_cB = iicon.getMaxV() - spanV * 5 / px; + double uv_cR = iicon.getInterpolatedU(5); + double uv_cT = iicon.getMinV(); + double uv_cB = iicon.getInterpolatedV(5); + double uv_sL = iicon.getInterpolatedU(5); + double uv_sR = iicon.getInterpolatedU(10); + double uv_sT = iicon.getMinV(); + double uv_sB = iicon.getInterpolatedV(5); + + double pos_nil = 0D; + double pos_one = 1D; double pos_min = px * 5.5D; double pos_max = px * 10.5D; + + float topColor = 1.0F; + float brightColor = 0.8F; + float darkColor = 0.6F; + float bottomColor = 0.5F; //TODO: all that manual tessellator crap + //this is a lot less tedious than it looks when you draw a 3D cube to take the vertex positions from + if(!pY) { + tessellator.setColorOpaque_F(topColor, topColor, topColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_cL, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_cL, uv_cB); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_cR, uv_cB); + } else { + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_one, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_one, z + pos_min, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_one, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_one, z + pos_max, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_one, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_one, z + pos_max, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_one, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_one, z + pos_min, uv_sR, uv_sT); + } + + if(!nY) { + tessellator.setColorOpaque_F(bottomColor, bottomColor, bottomColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_cL, uv_cT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_cR, uv_cB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_cL, uv_cB); + } else { + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_nil, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_nil, z + pos_min, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_nil, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_nil, z + pos_min, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_nil, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_nil, z + pos_max, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_nil, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_nil, z + pos_max, uv_sR, uv_sT); + } + + if(!pX) { + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_cL, uv_cT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_cL, uv_cB); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_cR, uv_cB); + } + + if(!nX) { + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_cL, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_cR, uv_cB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_cL, uv_cB); + } + + if(!pZ) { + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_cL, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_cR, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_cR, uv_cB); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_cL, uv_cB); + } + + if(!nZ) { + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_cL, uv_cT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_cL, uv_cB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_cR, uv_cB); + } + return true; } diff --git a/src/main/resources/assets/hbm/textures/blocks/red_cable_classic.png b/src/main/resources/assets/hbm/textures/blocks/red_cable_classic.png index 0990a1e90594503c50498196e876f410cd2c6e9e..569be69e972e9b5a0e6be03616be78811e654c48 100644 GIT binary patch delta 253 zcmVGrAU`5 zMdr}}9zb;*Z|A&dlIYm8*qo;(z`MrgrN(jWL!)2!VS4!!QiX zqrCqdIGtd#fwzYpP19T}7=yLT^JZg=gaF&^9nOJ>;GDyIzbY;roX>DPeqju>ZA(fC z?>*L9a?YqOeg%98f!F(|>l@^Zh#(?Ui`J4-S~U0u|A-gfdbJ(=>fPpsJj<`^OJT n!OSqTyP^m==dTtkD}TTZ{i!c0CDoMx00000NkvXXu0mjfUF1zQ From 58c1236ab5a5d732a5661f485655af0e3c634664 Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 1 Apr 2022 19:07:06 +0200 Subject: [PATCH 3/5] finished classic cable --- src/main/java/com/hbm/lib/Library.java | 1 + src/main/java/com/hbm/lib/RefStrings.java | 2 +- .../java/com/hbm/main/CraftingManager.java | 4 +- .../hbm/render/block/RenderCableClassic.java | 260 ++++++++++++++++-- .../render/util/RenderAccessoryUtility.java | 4 + src/main/resources/assets/hbm/lang/de_DE.lang | 1 + src/main/resources/assets/hbm/lang/en_US.lang | 1 + .../hbm/textures/blocks/red_cable_classic.png | Bin 297 -> 231 bytes .../hbm/textures/models/capes/CapeVaer.png | Bin 0 -> 12782 bytes src/main/resources/mcmod.info | 2 +- 10 files changed, 254 insertions(+), 21 deletions(-) create mode 100644 src/main/resources/assets/hbm/textures/models/capes/CapeVaer.png diff --git a/src/main/java/com/hbm/lib/Library.java b/src/main/java/com/hbm/lib/Library.java index 72ad14fd5..6d93c8f8b 100644 --- a/src/main/java/com/hbm/lib/Library.java +++ b/src/main/java/com/hbm/lib/Library.java @@ -75,6 +75,7 @@ public class Library { public static String FrizzleFrazzle = "fc4cc2ee-12e8-4097-b26a-1c6cb1b96531"; public static String the_NCR = "28ae585f-4431-4491-9ce8-3def6126e3c6"; public static String Barnaby99_x = "711aaf78-a862-4b7e-921a-216349716e9a"; + public static String Ma118 = "1121cb7a-8773-491f-8e2b-221290c93d81"; public static Set contributors = Sets.newHashSet(new String[] { "06ab7c03-55ce-43f8-9d3c-2850e3c652de", //mustang_rudolf diff --git a/src/main/java/com/hbm/lib/RefStrings.java b/src/main/java/com/hbm/lib/RefStrings.java index 9235430d4..26cba2c9b 100644 --- a/src/main/java/com/hbm/lib/RefStrings.java +++ b/src/main/java/com/hbm/lib/RefStrings.java @@ -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 (4186)"; + public static final String VERSION = "1.0.27 BETA (4191)"; //HBM's Beta Naming Convention: //V T (X) //V -> next release version diff --git a/src/main/java/com/hbm/main/CraftingManager.java b/src/main/java/com/hbm/main/CraftingManager.java index ab51cbad6..118a58068 100644 --- a/src/main/java/com/hbm/main/CraftingManager.java +++ b/src/main/java/com/hbm/main/CraftingManager.java @@ -242,7 +242,9 @@ public class CraftingManager { addRecipeAuto(new ItemStack(ModBlocks.cable_detector, 1), new Object[] { "S", "W", 'S', REDSTONE.dust(), 'W', ModBlocks.red_wire_coated }); addRecipeAuto(new ItemStack(ModBlocks.cable_diode, 1), new Object[] { " Q ", "CAC", " Q ", 'Q', NETHERQUARTZ.gem(), 'C', ModBlocks.red_cable, 'A', AL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.machine_detector, 1), new Object[] { "IRI", "CTC", "IRI", 'I', ModItems.plate_polymer, 'R', REDSTONE.dust(), 'C', ModItems.wire_red_copper, 'T', ModItems.coil_tungsten }); - addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.red_cable), 16), new Object[] { " W ", "RRR", " W ", 'W', ModItems.plate_polymer, 'R', ModItems.wire_red_copper }); + addRecipeAuto(new ItemStack(ModBlocks.red_cable, 16), new Object[] { " W ", "RRR", " W ", 'W', ModItems.plate_polymer, 'R', ModItems.wire_red_copper }); + addShapelessAuto(new ItemStack(ModBlocks.red_cable_classic, 1), new Object[] { ModBlocks.red_cable }); + addShapelessAuto(new ItemStack(ModBlocks.red_cable, 1), new Object[] { ModBlocks.red_cable_classic }); addRecipeAuto(new ItemStack(ModBlocks.red_connector, 4), new Object[] { "C", "I", "S", 'C', ModItems.coil_copper, 'I', ModItems.plate_polymer, 'S', STEEL.ingot() }); addRecipeAuto(new ItemStack(ModBlocks.red_pylon, 4), new Object[] { "CWC", "PWP", " T ", 'C', ModItems.coil_copper, 'W', KEY_PLANKS, 'P', ModItems.plate_polymer, 'T', ModBlocks.red_wire_coated }); addRecipeAuto(new ItemStack(Item.getItemFromBlock(ModBlocks.oil_duct_solid), 16), new Object[] { "SPS", "P P", "SPS", 'S', STEEL.ingot(), 'P', IRON.plate() }); diff --git a/src/main/java/com/hbm/render/block/RenderCableClassic.java b/src/main/java/com/hbm/render/block/RenderCableClassic.java index 3440824b1..00c55223a 100644 --- a/src/main/java/com/hbm/render/block/RenderCableClassic.java +++ b/src/main/java/com/hbm/render/block/RenderCableClassic.java @@ -1,5 +1,7 @@ package com.hbm.render.block; +import org.lwjgl.opengl.GL11; + import com.hbm.blocks.network.BlockCable; import com.hbm.lib.Library; @@ -13,7 +15,139 @@ import net.minecraft.world.IBlockAccess; public class RenderCableClassic implements ISimpleBlockRenderingHandler { @Override - public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { } + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + GL11.glPushMatrix(); + GL11.glScaled(1.25D, 1.25D, 1.25D); + GL11.glTranslated(-0.5, -0.5, -0.5); + IIcon iicon = block.getIcon(0, 0); + + double uv_cL = iicon.getMinU(); + double uv_cR = iicon.getInterpolatedU(5); + double uv_cT = iicon.getMinV(); + double uv_cB = iicon.getInterpolatedV(5); + + double uv_sL = iicon.getInterpolatedU(5); + double uv_sR = iicon.getInterpolatedU(10); + double uv_sT = iicon.getMinV(); + double uv_sB = iicon.getInterpolatedV(5); + + double pos_nil = 0D; + double pos_one = 1D; + double pos_min = 0.34375D; + double pos_max = 0.65625D; + + Tessellator tessellator = Tessellator.instance; + tessellator.startDrawingQuads(); + tessellator.setColorOpaque_F(1F, 1F, 1F); + tessellator.setNormal(0F, 1F, 0F); + tessellator.addVertexWithUV(pos_max, pos_max, pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_min, uv_cL, uv_cT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_max, uv_cL, uv_cB); + tessellator.addVertexWithUV(pos_max, pos_max, pos_max, uv_cR, uv_cB); + tessellator.addVertexWithUV(pos_max, pos_max, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_max, pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_max, pos_min, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_max, pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_max, pos_max, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_max, pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_max, pos_one, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_max, pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_max, pos_nil, uv_sR, uv_sT); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0F, -1F, 0F); + tessellator.addVertexWithUV(pos_min, pos_min, pos_min, uv_cL, uv_cT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_max, uv_cR, uv_cB); + tessellator.addVertexWithUV(pos_min, pos_min, pos_max, uv_cL, uv_cB); + tessellator.addVertexWithUV(pos_max, pos_min, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_min, pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_min, pos_max, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_min, pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_min, pos_min, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_min, pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_min, pos_one, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_min, pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_min, pos_nil, uv_sR, uv_sT); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1F, 0F, 0F); + tessellator.addVertexWithUV(pos_max, pos_min, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_max, pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_min, pos_one, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_min, pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_max, pos_max, pos_nil, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_one, pos_max, pos_min, uv_cR, uv_cT); + tessellator.addVertexWithUV(pos_one, pos_max, pos_max, uv_cL, uv_cT); + tessellator.addVertexWithUV(pos_one, pos_min, pos_max, uv_cL, uv_cB); + tessellator.addVertexWithUV(pos_one, pos_min, pos_min, uv_cR, uv_cB); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1F, 0F, 0F); + tessellator.addVertexWithUV(pos_min, pos_max, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_min, pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_max, pos_one, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_max, pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_min, pos_min, pos_nil, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_nil, pos_max, pos_max, uv_cR, uv_cT); + tessellator.addVertexWithUV(pos_nil, pos_max, pos_min, uv_cL, uv_cT); + tessellator.addVertexWithUV(pos_nil, pos_min, pos_min, uv_cL, uv_cB); + tessellator.addVertexWithUV(pos_nil, pos_min, pos_max, uv_cR, uv_cB); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0F, 0F, 1F); + tessellator.addVertexWithUV(pos_max, pos_max, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_min, pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_max, pos_max, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_max, pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_min, pos_max, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_one, uv_cR, uv_cT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_one, uv_cL, uv_cT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_one, uv_cL, uv_cB); + tessellator.addVertexWithUV(pos_max, pos_min, pos_one, uv_cR, uv_cB); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0F, 0F, -1F); + tessellator.addVertexWithUV(pos_max, pos_min, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_max, pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_one, pos_min, pos_min, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_min, pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_min, pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(pos_nil, pos_max, pos_min, uv_sR, uv_sT); + tessellator.addVertexWithUV(pos_min, pos_max, pos_nil, uv_cR, uv_cT); + tessellator.addVertexWithUV(pos_max, pos_max, pos_nil, uv_cL, uv_cT); + tessellator.addVertexWithUV(pos_max, pos_min, pos_nil, uv_cL, uv_cB); + tessellator.addVertexWithUV(pos_min, pos_min, pos_nil, uv_cR, uv_cB); + tessellator.draw(); + + GL11.glPopMatrix(); + } @Override public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { @@ -36,10 +170,6 @@ public class RenderCableClassic implements ISimpleBlockRenderingHandler { boolean pZ = Library.canConnect(world, x, y, z + 1, Library.NEG_Z); boolean nZ = Library.canConnect(world, x, y, z - 1, Library.POS_Z); - double spanU = iicon.getMaxU() - iicon.getMinU(); - double spanV = iicon.getMaxV() - iicon.getMinV(); - double px = 0.0625D; - double uv_cL = iicon.getMinU(); double uv_cR = iicon.getInterpolatedU(5); double uv_cT = iicon.getMinV(); @@ -52,16 +182,14 @@ public class RenderCableClassic implements ISimpleBlockRenderingHandler { double pos_nil = 0D; double pos_one = 1D; - double pos_min = px * 5.5D; - double pos_max = px * 10.5D; + double pos_min = 0.34375D; + double pos_max = 0.65625D; float topColor = 1.0F; float brightColor = 0.8F; float darkColor = 0.6F; float bottomColor = 0.5F; - //TODO: all that manual tessellator crap - //this is a lot less tedious than it looks when you draw a 3D cube to take the vertex positions from if(!pY) { tessellator.setColorOpaque_F(topColor, topColor, topColor); @@ -133,22 +261,94 @@ public class RenderCableClassic implements ISimpleBlockRenderingHandler { tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_cL, uv_cT); tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_cL, uv_cB); tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_cR, uv_cB); + } else { + tessellator.setColorOpaque_F(topColor, topColor, topColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_max, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_max, z + pos_min, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_max, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_min, z + pos_min, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(bottomColor, bottomColor, bottomColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_min, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_min, z + pos_max, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_min, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_one, y + pos_max, z + pos_max, uv_sR, uv_sT); } if(!nX) { tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); - tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_cL, uv_cT); - tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_cR, uv_cT); - tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_cR, uv_cB); - tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_cL, uv_cB); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_cR, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_cL, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_cL, uv_cB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_cR, uv_cB); + } else { + tessellator.setColorOpaque_F(topColor, topColor, topColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_max, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_max, z + pos_max, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_min, z + pos_min, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_max, z + pos_min, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(bottomColor, bottomColor, bottomColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_min, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_min, z + pos_min, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_max, z + pos_max, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_nil, y + pos_min, z + pos_max, uv_sR, uv_sT); } if(!pZ) { tessellator.setColorOpaque_F(brightColor, brightColor, brightColor); - tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_cL, uv_cT); - tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_cR, uv_cT); - tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_cR, uv_cB); - tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_cL, uv_cB); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_cR, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_cL, uv_cT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_cL, uv_cB); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_cR, uv_cB); + } else { + tessellator.setColorOpaque_F(topColor, topColor, topColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_one, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_one, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(bottomColor, bottomColor, bottomColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_one, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_max, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_max, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_one, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_one, uv_sR, uv_sT); } if(!nZ) { @@ -157,6 +357,30 @@ public class RenderCableClassic implements ISimpleBlockRenderingHandler { tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_cL, uv_cT); tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_cL, uv_cB); tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_cR, uv_cB); + } else { + tessellator.setColorOpaque_F(topColor, topColor, topColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_nil, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_max, z + pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_nil, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(bottomColor, bottomColor, bottomColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_min, y + pos_min, z + pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_nil, uv_sR, uv_sT); + + tessellator.setColorOpaque_F(darkColor, darkColor, darkColor); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_min, uv_sL, uv_sT); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_min, uv_sL, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_min, z + pos_nil, uv_sR, uv_sB); + tessellator.addVertexWithUV(x + pos_max, y + pos_max, z + pos_nil, uv_sR, uv_sT); } return true; @@ -164,7 +388,7 @@ public class RenderCableClassic implements ISimpleBlockRenderingHandler { @Override public boolean shouldRender3DInInventory(int modelId) { - return false; + return true; } @Override diff --git a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java index b0d165e51..9b0278752 100644 --- a/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java +++ b/src/main/java/com/hbm/render/util/RenderAccessoryUtility.java @@ -42,6 +42,7 @@ public class RenderAccessoryUtility { private static ResourceLocation tankish = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeTankish.png"); private static ResourceLocation frizzlefrazzle = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeFrizzleFrazzle.png"); private static ResourceLocation pheo = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapePheo.png"); + private static ResourceLocation vaer = new ResourceLocation(RefStrings.MODID + ":textures/models/capes/CapeVaer.png"); public static ResourceLocation getCloakFromPlayer(EntityPlayer player) { @@ -115,6 +116,9 @@ public class RenderAccessoryUtility { if(uuid.equals(Library.Barnaby99_x)) { return pheo; } + if(uuid.equals(Library.Ma118)) { + return vaer; + } if(Library.contributors.contains(uuid)) { return wiki; } diff --git a/src/main/resources/assets/hbm/lang/de_DE.lang b/src/main/resources/assets/hbm/lang/de_DE.lang index c02f5c7e4..e61347c6d 100644 --- a/src/main/resources/assets/hbm/lang/de_DE.lang +++ b/src/main/resources/assets/hbm/lang/de_DE.lang @@ -3508,6 +3508,7 @@ tile.reactor_hatch.name=Kraftwerkszugriffsluke tile.reactor_inserter.name=Reaktor-Brennstoffeinlass tile.red_barrel.name=Explosives Fass tile.red_cable.name=Rotes Kupferkabel +tile.red_cable_classic.name=Rotes Kupferkabel (Klassisch) tile.red_connector.name=Stromverbindungsstück tile.red_pylon.name=Strommasten tile.red_pylon_large.name=Hochspannungsmasten diff --git a/src/main/resources/assets/hbm/lang/en_US.lang b/src/main/resources/assets/hbm/lang/en_US.lang index 6891f4595..a36e920ad 100644 --- a/src/main/resources/assets/hbm/lang/en_US.lang +++ b/src/main/resources/assets/hbm/lang/en_US.lang @@ -3881,6 +3881,7 @@ tile.reactor_hatch.name=Reactor Access Hatch tile.reactor_inserter.name=Reactor Fuel Inserter tile.red_barrel.name=Explosive Barrel tile.red_cable.name=Red Copper Cable +tile.red_cable_classic.name=Red Copper Cable (Classic) tile.red_connector.name=Electricity Connector tile.red_pylon.name=Electricity Pole tile.red_pylon_large.name=Large Electricity Pylon diff --git a/src/main/resources/assets/hbm/textures/blocks/red_cable_classic.png b/src/main/resources/assets/hbm/textures/blocks/red_cable_classic.png index 569be69e972e9b5a0e6be03616be78811e654c48..a1ba54be630c596962ba629e219a054556011db9 100644 GIT binary patch delta 187 zcmV;s07U<(0_OpcG=H8+L_t(IjqQ-J4Z=VSMc?@@aTAFN=oldbAe!t%PsdO<08_95 zO{9xY7Yam(5P=#gud`);J==9%H>Q+$qN>d6IWb1}-U|T7Yoza?uHn2pP*v45;G9E5 zJ_Z6vN(ohH+YR1>nc=-Bgz$5DG8hK9Ty8iAP1BHbCWL^9P&7(m9LMDVRpqqZzkW~( pW`>zP6h+86FQ4$$Z)N3gxC8n-FDvPb!wUca002ovPDHLkV1hocPs0EJ delta 253 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 K-!IgB68;}5o^X}` literal 0 HcmV?d00001 diff --git a/src/main/resources/mcmod.info b/src/main/resources/mcmod.info index be645a79a..fe91e7960 100755 --- a/src/main/resources/mcmod.info +++ b/src/main/resources/mcmod.info @@ -3,7 +3,7 @@ "modid": "hbm", "name": "Hbm's Nuclear Tech", "description": "A mod that adds weapons, nuclear themed stuff and machines", - "version":"1.0.27_X4186", + "version":"1.0.27_X4191", "mcversion": "1.7.10", "url": "", "updateUrl": "", From 6280d92a83c981a4f32d6ef6e8c940f33a0a954d Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 1 Apr 2022 19:10:44 +0200 Subject: [PATCH 4/5] oh the log spam --- src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java b/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java index 830aef77b..115e7f9cd 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java +++ b/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java @@ -289,7 +289,7 @@ public class BlockMotherOfAllOres extends BlockContainer implements IBlockMultiP for(Object b : Block.blockRegistry.getKeys()) { Block block = Block.getBlockFromName((String) b); - if(block != null) + if(block != null && Item.getItemFromBlock(block) != null) uniqueItems.add(new ComparableStack(block)); } From 80667f5eede7aec39dd1b80f55147af6acc06551 Mon Sep 17 00:00:00 2001 From: Bob Date: Fri, 1 Apr 2022 22:23:53 +0200 Subject: [PATCH 5/5] minecraft doesn't crash for 10 seconds challenge (100% impossible) --- .../java/com/hbm/blocks/generic/BlockMotherOfAllOres.java | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java b/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java index 115e7f9cd..0efa14a13 100644 --- a/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java +++ b/src/main/java/com/hbm/blocks/generic/BlockMotherOfAllOres.java @@ -246,8 +246,11 @@ public class BlockMotherOfAllOres extends BlockContainer implements IBlockMultiP @Override public void writeToNBT(NBTTagCompound nbt) { super.writeToNBT(nbt); - int key = itemMap.inverse().get(getCompStack()); - nbt.setInteger("item", key); + + try { + Integer key = itemMap.inverse().get(getCompStack()); + nbt.setInteger("item", key != null ? key : 0); + } catch(Exception ex) { } } @Override