diff options
| author | NotAPenguin <michiel.vandeginste@gmail.com> | 2024-09-02 23:17:17 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-09-02 23:17:17 +0200 |
| commit | 1b820de08a05070909a267e17f033fcf58ac8710 (patch) | |
| tree | 02831a025986a06b20f87e5bcc69d1e0c639a342 /src/main/java/tectech/thing/block | |
| parent | afd3fd92b6a6ab9ab0d0dc3214e6bc8ff7a86c9b (diff) | |
| download | GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.gz GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.tar.bz2 GT5-Unofficial-1b820de08a05070909a267e17f033fcf58ac8710.zip | |
The Great Renaming (#3014)
* move kekztech to a single root dir
* move detrav to a single root dir
* move gtnh-lanthanides to a single root dir
* move tectech and delete some gross reflection in gt++
* remove more reflection inside gt5u
* delete more reflection in gt++
* fix imports
* move bartworks and bwcrossmod
* fix proxies
* move galactigreg and ggfab
* move gtneioreplugin
* try to fix gt++ bee loader
* apply the rename rules to BW
* apply rename rules to bwcrossmod
* apply rename rules to detrav scanner mod
* apply rename rules to galacticgreg
* apply rename rules to ggfab
* apply rename rules to goodgenerator
* apply rename rules to gtnh-lanthanides
* apply rename rules to gt++
* apply rename rules to kekztech
* apply rename rules to kubatech
* apply rename rules to tectech
* apply rename rules to gt
apply the rename rules to gt
* fix tt import
* fix mui hopefully
* fix coremod except intergalactic
* rename assline recipe class
* fix a class name i stumbled on
* rename StructureUtility to GTStructureUtility to prevent conflict with structurelib
* temporary rename of GTTooltipDataCache to old name
* fix gt client/server proxy names
Diffstat (limited to 'src/main/java/tectech/thing/block')
15 files changed, 1365 insertions, 0 deletions
diff --git a/src/main/java/tectech/thing/block/BlockEOHRender.java b/src/main/java/tectech/thing/block/BlockEOHRender.java new file mode 100644 index 0000000000..db70a4a956 --- /dev/null +++ b/src/main/java/tectech/thing/block/BlockEOHRender.java @@ -0,0 +1,78 @@ +package tectech.thing.block; + +import java.util.ArrayList; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import tectech.TecTech; + +public class BlockEOHRender extends Block { + + public BlockEOHRender() { + super(Material.iron); + this.setResistance(20f); + this.setHardness(-1.0f); + this.setCreativeTab(TecTech.creativeTabTecTech); + this.setBlockName("Eye of Harmony Renderer"); + this.setLightLevel(100.0f); + registerOther(this); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + blockIcon = iconRegister.registerIcon("gregtech:iconsets/TRANSPARENT"); + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean canRenderInPass(int a) { + return true; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean hasTileEntity(int metadata) { + return true; + } + + @Override + public TileEntity createTileEntity(World world, int metadata) { + return new TileEntityEyeOfHarmony(); + } + + public static void registerOther(Block block) { + String name = block.getUnlocalizedName() + .substring( + block.getUnlocalizedName() + .indexOf(".") + 1); + GameRegistry.registerBlock(block, name.substring(name.indexOf(":") + 1)); + } + + @Override + public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int meta, int fortune) { + return new ArrayList<>(); + } + + @Override + public boolean isCollidable() { + return false; + } + +} diff --git a/src/main/java/tectech/thing/block/BlockForgeOfGods.java b/src/main/java/tectech/thing/block/BlockForgeOfGods.java new file mode 100644 index 0000000000..a53299f229 --- /dev/null +++ b/src/main/java/tectech/thing/block/BlockForgeOfGods.java @@ -0,0 +1,71 @@ +package tectech.thing.block; + +import java.util.ArrayList; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import tectech.TecTech; + +public class BlockForgeOfGods extends Block { + + public BlockForgeOfGods() { + super(Material.iron); + this.setResistance(20f); + this.setHardness(-1.0f); + this.setCreativeTab(TecTech.creativeTabTecTech); + this.setBlockName("Forge of the Gods Renderer"); + this.setLightLevel(100.0f); + if (TecTech.configTecTech.ENABLE_GOD_FORGE) { + registerOther(this); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + blockIcon = iconRegister.registerIcon("gregtech:iconsets/TRANSPARENT"); + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean canRenderInPass(int a) { + return true; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean hasTileEntity(int metadata) { + return true; + } + + @Override + public TileEntity createTileEntity(World world, int metadata) { + return new TileEntityForgeOfGods(); + } + + public static void registerOther(Block block) { + GameRegistry.registerBlock(block, "ForgeOfGodsRenderBlock"); + } + + @Override + public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int meta, int fortune) { + return new ArrayList<>(); + } + +} diff --git a/src/main/java/tectech/thing/block/BlockGodforgeGlass.java b/src/main/java/tectech/thing/block/BlockGodforgeGlass.java new file mode 100644 index 0000000000..e29e815212 --- /dev/null +++ b/src/main/java/tectech/thing/block/BlockGodforgeGlass.java @@ -0,0 +1,106 @@ +package tectech.thing.block; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import eu.usrv.yamcore.blocks.BlockBase; +import gregtech.api.GregTechAPI; +import tectech.Reference; +import tectech.TecTech; + +public class BlockGodforgeGlass extends BlockBase { + + public static IIcon Icon; + public static int renderID; + public static BlockGodforgeGlass INSTANCE; + + public BlockGodforgeGlass() { + super(Material.iron); + setBlockBounds(0, 0, 0, 1, 1, 1); + setBlockName("spatiallyTranscendentGravitationalLens"); + setHarvestLevel("wrench", 3); + setHardness(50); + setResistance(30); + setLightOpacity(0); + setStepSound(Block.soundTypeGlass); + setBlockTextureName(Reference.MODID + ":blockSpatiallyTranscendentGravitationalLens"); + setCreativeTab(TecTech.creativeTabTecTech); + } + + @Override + public boolean isBeaconBase(IBlockAccess worldObj, int x, int y, int z, int beaconX, int beaconY, int beaconZ) { + return true; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean getCanBlockGrass() { + return false; + } + + @Override + public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() { + return 1; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess worldIn, int x, int y, int z, int side) { + Block block = worldIn.getBlock(x, y, z); + return block != this; + } + + @Override + public int getRenderType() { + return renderID; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + Icon = blockIcon; + } + + public static void run() { + INSTANCE = new BlockGodforgeGlass(); + GameRegistry.registerBlock(INSTANCE, ItemGodForgeGlass.class, INSTANCE.getUnlocalizedName()); + GregTechAPI.registerMachineBlock(INSTANCE, -1); + } + + @Override + public void breakBlock(World aWorld, int aX, int aY, int aZ, Block aBlock, int aMeta) { + if (GregTechAPI.isMachineBlock(this, aMeta)) { + GregTechAPI.causeMachineUpdate(aWorld, aX, aY, aZ); + } + } + + @Override + public void onBlockAdded(World aWorld, int aX, int aY, int aZ) { + if (GregTechAPI.isMachineBlock(this, aWorld.getBlockMetadata(aX, aY, aZ))) { + GregTechAPI.causeMachineUpdate(aWorld, aX, aY, aZ); + } + } +} diff --git a/src/main/java/tectech/thing/block/BlockQuantumGlass.java b/src/main/java/tectech/thing/block/BlockQuantumGlass.java new file mode 100644 index 0000000000..fa0b6c4681 --- /dev/null +++ b/src/main/java/tectech/thing/block/BlockQuantumGlass.java @@ -0,0 +1,110 @@ +package tectech.thing.block; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import eu.usrv.yamcore.blocks.BlockBase; +import gregtech.api.GregTechAPI; +import tectech.Reference; +import tectech.TecTech; + +/** + * Created by danie_000 on 17.12.2016. + */ +public final class BlockQuantumGlass extends BlockBase { + + public static IIcon stuff; + public static int renderID; + public static BlockQuantumGlass INSTANCE; + + public BlockQuantumGlass() { + super(Material.iron); + setBlockBounds(0, 0, 0, 1, 1, 1); + setBlockName("quantumGlass"); + setHarvestLevel("wrench", 3); + setHardness(50); + setResistance(30); + setLightOpacity(0); + setStepSound(Block.soundTypeMetal); + setBlockTextureName(Reference.MODID + ":blockQuantumGlass"); + setCreativeTab(TecTech.creativeTabTecTech); + } + + @Override + public boolean isBeaconBase(IBlockAccess worldObj, int x, int y, int z, int beaconX, int beaconY, int beaconZ) { + return true; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean getCanBlockGrass() { + return false; + } + + @Override + public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() { + return 1; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess worldIn, int x, int y, int z, int side) { + Block block = worldIn.getBlock(x, y, z); + return block != this; // && super.shouldSideBeRendered(worldIn, x, y, z, + // side); + } + + @Override + public int getRenderType() { + return renderID; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + stuff = blockIcon; + } + + public static void run() { + INSTANCE = new BlockQuantumGlass(); + GameRegistry.registerBlock(INSTANCE, ItemQuantumGlass.class, INSTANCE.getUnlocalizedName()); + GregTechAPI.registerMachineBlock(INSTANCE, -1); + } + + @Override + public void breakBlock(World aWorld, int aX, int aY, int aZ, Block aBlock, int aMeta) { + if (GregTechAPI.isMachineBlock(this, aMeta)) { + GregTechAPI.causeMachineUpdate(aWorld, aX, aY, aZ); + } + } + + @Override + public void onBlockAdded(World aWorld, int aX, int aY, int aZ) { + if (GregTechAPI.isMachineBlock(this, aWorld.getBlockMetadata(aX, aY, aZ))) { + GregTechAPI.causeMachineUpdate(aWorld, aX, aY, aZ); + } + } +} diff --git a/src/main/java/tectech/thing/block/BlockQuantumStuff.java b/src/main/java/tectech/thing/block/BlockQuantumStuff.java new file mode 100644 index 0000000000..bdbdb35510 --- /dev/null +++ b/src/main/java/tectech/thing/block/BlockQuantumStuff.java @@ -0,0 +1,103 @@ +package tectech.thing.block; + +import java.util.ArrayList; +import java.util.Random; + +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import eu.usrv.yamcore.blocks.BlockBase; +import tectech.Reference; + +/** + * Created by danie_000 on 17.12.2016. + */ +public final class BlockQuantumStuff extends BlockBase { + + public static IIcon stuff; + public static int renderID; + public static BlockQuantumStuff INSTANCE; + + public BlockQuantumStuff() { + super(Material.iron); + setBlockBounds(0, 0, 0, 1, 1, 1); + setBlockName("quantumStuff"); + setHarvestLevel("wrench", 0); + setHardness(500); + setResistance(1); + setLightOpacity(0); + setBlockTextureName(Reference.MODID + ":blockQuantumStuff"); + } + + @Override + public boolean isBeaconBase(IBlockAccess worldObj, int x, int y, int z, int beaconX, int beaconY, int beaconZ) { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + stuff = blockIcon; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean getCanBlockGrass() { + return false; + } + + @Override + public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() { + return 1; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess worldIn, int x, int y, int z, int side) { + return false; + } + + @Override + public int getRenderType() { + return renderID; + } + + public static void run() { + INSTANCE = new BlockQuantumStuff(); + GameRegistry.registerBlock(INSTANCE, INSTANCE.getUnlocalizedName()); + } + + @Override + public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) { + return new ArrayList<>(); + } + + @Override + public Item getItemDropped(int meta, Random random, int fortune) { + return null; + } +} diff --git a/src/main/java/tectech/thing/block/BlockReactorSim.java b/src/main/java/tectech/thing/block/BlockReactorSim.java new file mode 100644 index 0000000000..745db9084f --- /dev/null +++ b/src/main/java/tectech/thing/block/BlockReactorSim.java @@ -0,0 +1,94 @@ +package tectech.thing.block; + +import net.minecraft.block.Block; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import cpw.mods.fml.common.registry.GameRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ic2.core.IC2; +import ic2.core.IHasGui; +import ic2.core.block.TileEntityBlock; +import tectech.Reference; +import tectech.thing.tileEntity.TileEntityReactorSim; + +/** + * Created by danie_000 on 30.09.2017. + */ +public class BlockReactorSim extends Block implements ITileEntityProvider { + + public static BlockReactorSim INSTANCE; + public static IIcon stuff; + + public BlockReactorSim() { + super(Material.iron); + setBlockBounds(0, 0, 0, 1, 1, 1); + setBlockName("reactorSim"); + setHarvestLevel("wrench", 3); + setHardness(50); + setResistance(30); + setLightOpacity(0); + setStepSound(Block.soundTypeMetal); + setBlockTextureName(Reference.MODID + ":blockReactorSimulator"); + } + + @Override + public boolean isOpaqueCube() { + return true; + } + + @Override + public boolean getCanBlockGrass() { + return true; + } + + @Override + public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + super.registerBlockIcons(reg); + stuff = blockIcon; + } + + public static void run() { + INSTANCE = new BlockReactorSim(); + GameRegistry.registerBlock(INSTANCE, ItemReactorSim.class, INSTANCE.getUnlocalizedName()); + GameRegistry.registerTileEntity(TileEntityReactorSim.class, Reference.MODID + "_reactorSim"); + } + + @Override + public TileEntity createNewTileEntity(World worldIn, int meta) { + return new TileEntityReactorSim(); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entityPlayer, int side, float a, + float b, float c) { + if (entityPlayer.isSneaking()) { + return false; + } else { + TileEntity te = world.getTileEntity(x, y, z); + return te instanceof IHasGui + && (!IC2.platform.isSimulating() || IC2.platform.launchGui(entityPlayer, (IHasGui) te)); + } + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block srcBlock) { + TileEntity te = world.getTileEntity(x, y, z); + if (te instanceof TileEntityBlock) { + ((TileEntityBlock) te).onNeighborUpdate(srcBlock); + } + } +} diff --git a/src/main/java/tectech/thing/block/ItemGodForgeGlass.java b/src/main/java/tectech/thing/block/ItemGodForgeGlass.java new file mode 100644 index 0000000000..c4c355cc19 --- /dev/null +++ b/src/main/java/tectech/thing/block/ItemGodForgeGlass.java @@ -0,0 +1,31 @@ +package tectech.thing.block; + +import static net.minecraft.util.StatCollector.translateToLocal; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; + +import tectech.util.CommonValues; + +public class ItemGodForgeGlass extends ItemBlock { + + public static ItemGodForgeGlass INSTANCE; + + public ItemGodForgeGlass(Block block) { + super(block); + } + + @Override + public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List<String> aList, boolean aF3_H) { + aList.add(CommonValues.GODFORGE_MARK); + aList.add(translateToLocal("tile.godforgeGlass.desc.0")); + aList.add( + EnumChatFormatting.AQUA.toString() + EnumChatFormatting.BOLD + + translateToLocal("tile.godforgeGlass.desc.1")); + } +} diff --git a/src/main/java/tectech/thing/block/ItemQuantumGlass.java b/src/main/java/tectech/thing/block/ItemQuantumGlass.java new file mode 100644 index 0000000000..441c7363e4 --- /dev/null +++ b/src/main/java/tectech/thing/block/ItemQuantumGlass.java @@ -0,0 +1,34 @@ +package tectech.thing.block; + +import static net.minecraft.util.StatCollector.translateToLocal; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; + +import tectech.util.CommonValues; + +/** + * Created by Tec on 11.04.2017. + */ +public class ItemQuantumGlass extends ItemBlock { + + public static ItemQuantumGlass INSTANCE; + + public ItemQuantumGlass(Block block) { + super(block); + } + + @Override + public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List<String> aList, boolean aF3_H) { + aList.add(CommonValues.TEC_MARK_EM); + aList.add(translateToLocal("tile.quantumGlass.desc.0")); // Dense yet transparent + aList.add( + EnumChatFormatting.AQUA.toString() + EnumChatFormatting.BOLD + + translateToLocal("tile.quantumGlass.desc.1")); // Glassy & Classy + } +} diff --git a/src/main/java/tectech/thing/block/ItemReactorSim.java b/src/main/java/tectech/thing/block/ItemReactorSim.java new file mode 100644 index 0000000000..bd4bcffde2 --- /dev/null +++ b/src/main/java/tectech/thing/block/ItemReactorSim.java @@ -0,0 +1,37 @@ +package tectech.thing.block; + +import static net.minecraft.util.StatCollector.translateToLocal; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraft.util.EnumChatFormatting; + +import tectech.util.CommonValues; + +/** + * Created by danie_000 on 30.09.2017. + */ +public class ItemReactorSim extends ItemBlock { + + public static ItemQuantumGlass INSTANCE; + + public ItemReactorSim(Block block) { + super(block); + } + + @Override + public void addInformation(ItemStack aStack, EntityPlayer aPlayer, List<String> aList, boolean aF3_H) { + aList.add(CommonValues.TEC_MARK_GENERAL); + aList.add(translateToLocal("tile.reactorSim.desc.0")); // Fission Reaction Uncertainty Resolver 9001 + aList.add( + EnumChatFormatting.AQUA.toString() + EnumChatFormatting.BOLD + translateToLocal("tile.reactorSim.desc.1")); // Explodes, + // but + // not + // as + // much... + } +} diff --git a/src/main/java/tectech/thing/block/RenderForgeOfGods.java b/src/main/java/tectech/thing/block/RenderForgeOfGods.java new file mode 100644 index 0000000000..976dd6da8e --- /dev/null +++ b/src/main/java/tectech/thing/block/RenderForgeOfGods.java @@ -0,0 +1,65 @@ +package tectech.thing.block; + +import static tectech.Reference.MODID; +import static tectech.rendering.EOH.EOHRenderingUtils.renderStarLayer; +import static tectech.rendering.EOH.EOHTileEntitySR.STAR_LAYER_0; +import static tectech.rendering.EOH.EOHTileEntitySR.STAR_LAYER_1; +import static tectech.rendering.EOH.EOHTileEntitySR.STAR_LAYER_2; + +import java.awt.Color; + +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.model.AdvancedModelLoader; +import net.minecraftforge.client.model.IModelCustom; + +import org.lwjgl.opengl.GL11; + +public class RenderForgeOfGods extends TileEntitySpecialRenderer { + + public static IModelCustom starModel; + + public RenderForgeOfGods() { + starModel = AdvancedModelLoader.loadModel(new ResourceLocation(MODID, "models/Star.obj")); + } + + @Override + public void renderTileEntityAt(TileEntity tile, double x, double y, double z, float timeSinceLastTick) { + if (!(tile instanceof TileEntityForgeOfGods)) return; + + { + GL11.glPushMatrix(); + GL11.glTranslated(x + 0.5, y + 0.5, z + 0.5); + GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); + GL11.glDisable(GL11.GL_LIGHTING); + GL11.glDisable(GL11.GL_BLEND); + + // Innermost layer should be opaque + enableOpaqueColorInversion(); + renderStarLayer(0, STAR_LAYER_0, new Color(1.0f, 0.4f, 0.05f, 1.0f), 1.0f, 25); + disableOpaqueColorInversion(); + + enablePseudoTransparentColorInversion(); + renderStarLayer(1, STAR_LAYER_1, new Color(1.0f, 0.4f, 0.05f, 1.0f), 0.4f, 25); + renderStarLayer(2, STAR_LAYER_2, new Color(1.0f, 0.4f, 0.05f, 1.0f), 0.2f, 25); + + GL11.glPopAttrib(); + GL11.glPopMatrix(); + } + } + + public static void enablePseudoTransparentColorInversion() { + GL11.glEnable(GL11.GL_COLOR_LOGIC_OP); + GL11.glLogicOp(GL11.GL_OR_INVERTED); + } + + public static void enableOpaqueColorInversion() { + GL11.glEnable(GL11.GL_COLOR_LOGIC_OP); + GL11.glLogicOp(GL11.GL_COPY_INVERTED); + } + + public static void disableOpaqueColorInversion() { + GL11.glDisable(GL11.GL_COLOR_LOGIC_OP); + } +} diff --git a/src/main/java/tectech/thing/block/RenderGodforgeGlass.java b/src/main/java/tectech/thing/block/RenderGodforgeGlass.java new file mode 100644 index 0000000000..12c0327f65 --- /dev/null +++ b/src/main/java/tectech/thing/block/RenderGodforgeGlass.java @@ -0,0 +1,122 @@ +package tectech.thing.block; + +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +import org.lwjgl.opengl.GL11; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; + +public class RenderGodforgeGlass implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + Tessellator tessellator = Tessellator.instance; + GL11.glPushMatrix(); + // Get icons from custom register (useful for renderers and fluids) + IIcon side = BlockGodforgeGlass.Icon; + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1.0F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, side); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, side); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, side); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(-1.0F, 0.0F, 0.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, side); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, side); + tessellator.draw(); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, side); + tessellator.draw(); + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, + RenderBlocks renderer) { + + renderer.renderStandardBlock(block, x, y, z); + Tessellator tes = Tessellator.instance; + tes.setNormal(0F, 1F, 0F); + tes.setBrightness(15728880); + tes.setColorOpaque_F(0F, 1F, 1F); + IIcon side = BlockGodforgeGlass.Icon; + + // South + if (world.getBlock(x, y, z + 1) + .getClass() != BlockGodforgeGlass.class) { + tes.addVertexWithUV(x, y, z + 0.999, side.getMinU(), side.getMaxV()); // 0.999 instead of 1 for fighting + // (textures overlapping) + tes.addVertexWithUV(x, y + 1, z + 0.999, side.getMinU(), side.getMinV()); + tes.addVertexWithUV(x + 1, y + 1, z + 0.999, side.getMaxU(), side.getMinV()); + tes.addVertexWithUV(x + 1, y, z + 0.999, side.getMaxU(), side.getMaxV()); + } + // East + if (world.getBlock(x + 1, y, z) + .getClass() != BlockGodforgeGlass.class) { + tes.addVertexWithUV(x + 0.999, y, z + 1, side.getMinU(), side.getMaxV()); + tes.addVertexWithUV(x + 0.999, y + 1, z + 1, side.getMinU(), side.getMinV()); + tes.addVertexWithUV(x + 0.999, y + 1, z, side.getMaxU(), side.getMinV()); + tes.addVertexWithUV(x + 0.999, y, z, side.getMaxU(), side.getMaxV()); + } + // North + if (world.getBlock(x, y, z - 1) + .getClass() != BlockGodforgeGlass.class) { + tes.addVertexWithUV(x + 1, y, z + 0.001, side.getMinU(), side.getMaxV()); + tes.addVertexWithUV(x + 1, y + 1, z + 0.001, side.getMinU(), side.getMinV()); + tes.addVertexWithUV(x, y + 1, z + 0.001, side.getMaxU(), side.getMinV()); + tes.addVertexWithUV(x, y, z + 0.001, side.getMaxU(), side.getMaxV()); + } + // West + if (world.getBlock(x - 1, y, z) + .getClass() != BlockGodforgeGlass.class) { + tes.addVertexWithUV(x + 0.001, y, z, side.getMinU(), side.getMaxV()); + |
