diff options
author | glowredman <35727266+glowredman@users.noreply.github.com> | 2022-02-10 21:56:38 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-10 21:56:38 +0100 |
commit | 34baef9a6a1b72c97eba20601ac09b23d9ae3754 (patch) | |
tree | eb515d06c798ae5277909b85718cfb8b2bf56fb8 /src/main/java/gregtech/common | |
parent | b87977e7f636f58ea6366868abddcf0993be01fd (diff) | |
download | GT5-Unofficial-34baef9a6a1b72c97eba20601ac09b23d9ae3754.tar.gz GT5-Unofficial-34baef9a6a1b72c97eba20601ac09b23d9ae3754.tar.bz2 GT5-Unofficial-34baef9a6a1b72c97eba20601ac09b23d9ae3754.zip |
Fix Ore Particles (#926)
* Fix ore particles
* simplify getIcon methods
* Fix spacing, fix accidental renaming of args
Diffstat (limited to 'src/main/java/gregtech/common')
6 files changed, 102 insertions, 5 deletions
diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Ores.java b/src/main/java/gregtech/common/blocks/GT_Block_Ores.java index c3f53a7bc5..2f06a7c8c5 100644 --- a/src/main/java/gregtech/common/blocks/GT_Block_Ores.java +++ b/src/main/java/gregtech/common/blocks/GT_Block_Ores.java @@ -16,6 +16,7 @@ import static gregtech.api.enums.Textures.BlockIcons.BASALT_STONE; import static gregtech.api.enums.Textures.BlockIcons.GRANITE_BLACK_STONE; import static gregtech.api.enums.Textures.BlockIcons.GRANITE_RED_STONE; import static gregtech.api.enums.Textures.BlockIcons.MARBLE_STONE; +import net.minecraft.util.IIcon; public class GT_Block_Ores extends GT_Block_Ores_Abstract { public GT_Block_Ores() { @@ -33,6 +34,29 @@ public class GT_Block_Ores extends GT_Block_Ores_Abstract { } @Override + public IIcon getIcon(int side, int meta) { + int index = ((meta / 1000) % 16); + switch (index) { + case 0: + return Blocks.stone.getIcon(side, 0); + case 1: + return Blocks.netherrack.getIcon(side, 0); + case 2: + return Blocks.end_stone.getIcon(side, 0); + case 3: + return GRANITE_BLACK_STONE.getIcon(); + case 4: + return GRANITE_RED_STONE.getIcon(); + case 5: + return MARBLE_STONE.getIcon(); + case 6: + return BASALT_STONE.getIcon(); + default: + return Blocks.stone.getIcon(side, 0); + } + } + + @Override public int getBaseBlockHarvestLevel(int aMeta) { switch (aMeta) { case 3: diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Ores_Abstract.java b/src/main/java/gregtech/common/blocks/GT_Block_Ores_Abstract.java index d862e5a555..908cca472f 100644 --- a/src/main/java/gregtech/common/blocks/GT_Block_Ores_Abstract.java +++ b/src/main/java/gregtech/common/blocks/GT_Block_Ores_Abstract.java @@ -17,6 +17,7 @@ import gregtech.common.render.GT_Renderer_Block; import net.minecraft.block.Block; import net.minecraft.block.ITileEntityProvider; import net.minecraft.block.material.Material; +import net.minecraft.client.particle.EffectRenderer; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; @@ -27,6 +28,7 @@ import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; +import net.minecraft.util.MovingObjectPosition; import net.minecraft.util.StatCollector; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; @@ -37,12 +39,12 @@ import java.util.List; import java.util.Set; public abstract class GT_Block_Ores_Abstract extends GT_Generic_Block implements ITileEntityProvider { - public static ThreadLocal<GT_TileEntity_Ores> mTemporaryTileEntity = new ThreadLocal(); + public static ThreadLocal<GT_TileEntity_Ores> mTemporaryTileEntity = new ThreadLocal<>(); public static boolean FUCKING_LOCK = false; public static boolean tHideOres; private final String aTextName = ".name"; private final String aTextSmall = "Small "; - public static Set aBlockedOres = new HashSet<Materials>(); + public static Set<Materials> aBlockedOres = new HashSet<Materials>(); protected GT_Block_Ores_Abstract(String aUnlocalizedName, int aOreMetaCount, boolean aHideFirstMeta, Material aMaterial) { super(GT_Item_Ores.class, aUnlocalizedName, aMaterial); @@ -104,7 +106,7 @@ public abstract class GT_Block_Ores_Abstract extends GT_Generic_Block implements } public String getLocalizedNameFormat(Materials aMaterial) { - switch (aMaterial.mName) { + switch (aMaterial.mName) { case "InfusedAir": case "InfusedDull": case "InfusedEarth": @@ -129,7 +131,7 @@ public abstract class GT_Block_Ores_Abstract extends GT_Generic_Block implements return "%material"; default: return "%material" + OrePrefixes.ore.mLocalizedMaterialPost; - } + } } public String getLocalizedName(Materials aMaterial) { @@ -249,6 +251,20 @@ public abstract class GT_Block_Ores_Abstract extends GT_Generic_Block implements @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister aIconRegister) { } + + @Override + @SideOnly(Side.CLIENT) + public boolean addHitEffects(World worldObj, MovingObjectPosition target, EffectRenderer effectRenderer) { + GT_Renderer_Block.addHitEffects(effectRenderer, this, worldObj, target.blockX, target.blockY, target.blockZ, target.sideHit); + return true; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean addDestroyEffects(World world, int x, int y, int z, int meta, EffectRenderer effectRenderer) { + GT_Renderer_Block.addDestroyEffects(effectRenderer, this, world, x, y, z); + return true; + } @Override public int getDamageValue(World aWorld, int aX, int aY, int aZ) { @@ -283,7 +299,7 @@ public abstract class GT_Block_Ores_Abstract extends GT_Generic_Block implements if ((tTileEntity instanceof GT_TileEntity_Ores)) { return ((GT_TileEntity_Ores) tTileEntity).getDrops(getDroppedBlock(), aFortune); } - return mTemporaryTileEntity.get() == null ? new ArrayList() : ((GT_TileEntity_Ores) mTemporaryTileEntity.get()).getDrops(getDroppedBlock(), aFortune); + return mTemporaryTileEntity.get() == null ? new ArrayList<>() : ((GT_TileEntity_Ores) mTemporaryTileEntity.get()).getDrops(getDroppedBlock(), aFortune); } @Override @@ -293,6 +309,7 @@ public abstract class GT_Block_Ores_Abstract extends GT_Generic_Block implements public abstract ITexture[] getTextureSet(); //Must have 16 entries. + @SuppressWarnings({ "unchecked", "rawtypes" }) @Override public void getSubBlocks(Item aItem, CreativeTabs aTab, List aList) { for (int i = 0; i < GregTech_API.sGeneratedMaterials.length; i++) { diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Ores_UB1.java b/src/main/java/gregtech/common/blocks/GT_Block_Ores_UB1.java index 6749f8d136..f749b8ac5b 100644 --- a/src/main/java/gregtech/common/blocks/GT_Block_Ores_UB1.java +++ b/src/main/java/gregtech/common/blocks/GT_Block_Ores_UB1.java @@ -9,6 +9,7 @@ import gregtech.api.render.TextureFactory; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; +import net.minecraft.util.IIcon; public class GT_Block_Ores_UB1 extends GT_Block_Ores_Abstract { Block aUBBlock = GameRegistry.findBlock("UndergroundBiomes", "igneousStone"); @@ -27,6 +28,11 @@ public class GT_Block_Ores_UB1 extends GT_Block_Ores_Abstract { public OrePrefixes[] getProcessingPrefix() { //Must have 8 entries. return new OrePrefixes[]{OrePrefixes.oreRedgranite, OrePrefixes.oreBlackgranite, OrePrefixes.ore, OrePrefixes.ore, OrePrefixes.ore, OrePrefixes.oreBasalt, OrePrefixes.ore, OrePrefixes.ore}; } + + @Override + public IIcon getIcon(int side, int meta) { + return aUBBlock.getIcon(side, (meta / 1000) % 8); + } @Override public int getBaseBlockHarvestLevel(int aMeta) { diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Ores_UB2.java b/src/main/java/gregtech/common/blocks/GT_Block_Ores_UB2.java index 5d78ab0aa3..a1e0f69637 100644 --- a/src/main/java/gregtech/common/blocks/GT_Block_Ores_UB2.java +++ b/src/main/java/gregtech/common/blocks/GT_Block_Ores_UB2.java @@ -9,6 +9,7 @@ import gregtech.api.render.TextureFactory; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; +import net.minecraft.util.IIcon; public class GT_Block_Ores_UB2 extends GT_Block_Ores_Abstract { Block aUBBlock = GameRegistry.findBlock("UndergroundBiomes", "metamorphicStone"); @@ -27,6 +28,11 @@ public class GT_Block_Ores_UB2 extends GT_Block_Ores_Abstract { public OrePrefixes[] getProcessingPrefix() { //Must have 8 entries; an entry can be null to disable automatic recipes. return new OrePrefixes[]{OrePrefixes.ore, OrePrefixes.ore, OrePrefixes.oreMarble, OrePrefixes.ore, OrePrefixes.ore, OrePrefixes.ore, OrePrefixes.ore, OrePrefixes.ore}; } + + @Override + public IIcon getIcon(int side, int meta) { + return aUBBlock.getIcon(side, (meta / 1000) % 8); + } @Override public int getBaseBlockHarvestLevel(int aMeta) { diff --git a/src/main/java/gregtech/common/blocks/GT_Block_Ores_UB3.java b/src/main/java/gregtech/common/blocks/GT_Block_Ores_UB3.java index e4111af1c5..280b6450df 100644 --- a/src/main/java/gregtech/common/blocks/GT_Block_Ores_UB3.java +++ b/src/main/java/gregtech/common/blocks/GT_Block_Ores_UB3.java @@ -9,6 +9,7 @@ import gregtech.api.render.TextureFactory; import net.minecraft.block.Block; import net.minecraft.block.material.Material; import net.minecraft.init.Blocks; +import net.minecraft.util.IIcon; public class GT_Block_Ores_UB3 extends GT_Block_Ores_Abstract { Block aUBBlock = GameRegistry.findBlock("UndergroundBiomes", "sedimentaryStone"); @@ -27,6 +28,11 @@ public class GT_Block_Ores_UB3 extends GT_Block_Ores_Abstract { public OrePrefixes[] getProcessingPrefix() { //Must have 8 entries; an entry can be null to disable automatic recipes. return new OrePrefixes[]{OrePrefixes.ore, OrePrefixes.ore, OrePrefixes.ore, OrePrefixes.ore, OrePrefixes.ore, OrePrefixes.ore, OrePrefixes.ore, OrePrefixes.ore}; } + + @Override + public IIcon getIcon(int side, int meta) { + return aUBBlock.getIcon(side, (meta / 1000) % 8); + } @Override public int getBaseBlockHarvestLevel(int aMeta) { diff --git a/src/main/java/gregtech/common/render/GT_Renderer_Block.java b/src/main/java/gregtech/common/render/GT_Renderer_Block.java index eb2b68ac57..311da428f8 100644 --- a/src/main/java/gregtech/common/render/GT_Renderer_Block.java +++ b/src/main/java/gregtech/common/render/GT_Renderer_Block.java @@ -9,15 +9,20 @@ import gregtech.api.interfaces.metatileentity.IMetaTileEntity; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.interfaces.tileentity.IPipeRenderedTileEntity; import gregtech.api.interfaces.tileentity.ITexturedTileEntity; +import gregtech.api.objects.XSTR; import gregtech.common.blocks.GT_Block_Machines; import gregtech.common.blocks.GT_Block_Ores_Abstract; import gregtech.common.blocks.GT_TileEntity_Ores; import net.minecraft.block.Block; import net.minecraft.client.Minecraft; +import net.minecraft.client.particle.EffectRenderer; +import net.minecraft.client.particle.EntityDiggingFX; import net.minecraft.client.renderer.RenderBlocks; import net.minecraft.client.renderer.Tessellator; import net.minecraft.tileentity.TileEntity; import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + import org.lwjgl.opengl.GL11; import static gregtech.api.interfaces.metatileentity.IConnectable.CONNECTED_DOWN; @@ -447,6 +452,39 @@ public class GT_Renderer_Block implements ISimpleBlockRenderingHandler { return true; } + + public static void addHitEffects(EffectRenderer effectRenderer, Block block, World world, int x, int y, int z, int side) { + double rX = x + XSTR.XSTR_INSTANCE.nextDouble() * 0.8 + 0.1; + double rY = y + XSTR.XSTR_INSTANCE.nextDouble() * 0.8 + 0.1; + double rZ = z + XSTR.XSTR_INSTANCE.nextDouble() * 0.8 + 0.1; + if (side == 0) { + rY = y - 0.1; + } else if (side == 1) { + rY = y + 1.1; + } else if (side == 2) { + rZ = z - 0.1; + } else if (side == 3) { + rZ = z + 1.1; + } else if (side == 4) { + rX = x - 0.1; + } else if (side == 5) { + rX = x + 1.1; + } + effectRenderer.addEffect((new EntityDiggingFX(world, rX, rY, rZ, 0.0, 0.0, 0.0, block, block.getDamageValue(world, x, y, z), side)).applyColourMultiplier(x, y, z).multiplyVelocity(0.2F).multipleParticleScaleBy(0.6F)); + } + + public static void addDestroyEffects(EffectRenderer effectRenderer, Block block, World world, int x, int y, int z) { + for (int iX = 0; iX < 4; ++iX) { + for (int iY = 0; iY < 4; ++iY) { + for (int iZ = 0; iZ < 4; ++iZ) { + double bX = x + (iX + 0.5) / 4.0; + double bY = y + (iY + 0.5) / 4.0; + double bZ = z + (iZ + 0.5) / 4.0; + effectRenderer.addEffect((new EntityDiggingFX(world, bX, bY, bZ, bX - x - 0.5, bY - y - 0.5, bZ - z - 0.5, block, block.getDamageValue(world, x, y, z))).applyColourMultiplier(x, y, z)); + } + } + } + } @Override public void renderInventoryBlock(Block aBlock, int aMeta, int aModelID, RenderBlocks aRenderer) { |