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/bartworks/common/blocks | |
| 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/bartworks/common/blocks')
7 files changed, 1003 insertions, 0 deletions
diff --git a/src/main/java/bartworks/common/blocks/BWBlocks.java b/src/main/java/bartworks/common/blocks/BWBlocks.java new file mode 100644 index 0000000000..84d4a2f942 --- /dev/null +++ b/src/main/java/bartworks/common/blocks/BWBlocks.java @@ -0,0 +1,134 @@ +/* + * Copyright (c) 2018-2020 bartimaeusnek Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +package bartworks.common.blocks; + +import java.util.List; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EnumCreatureType; +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 bartworks.MainMod; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import gregtech.api.GregTechAPI; + +public class BWBlocks extends Block { + + @SideOnly(Side.CLIENT) + protected IIcon[] texture; + + String[] textureNames; + protected String name; + + public BWBlocks(String name, String[] texture) { + super(Material.anvil); + this.setHardness(15.0F); + this.setResistance(30.0F); + this.name = name; + this.textureNames = texture; + this.setCreativeTab(MainMod.GT2); + GregTechAPI.registerMachineBlock(this, -1); + } + + public BWBlocks(String name, String[] texture, CreativeTabs tabs) { + super(Material.anvil); + this.setHardness(15.0F); + this.setResistance(30.0F); + this.name = name; + this.textureNames = texture; + this.setCreativeTab(tabs); + GregTechAPI.registerMachineBlock(this, -1); + } + + public BWBlocks(String name, String[] texture, CreativeTabs tabs, Material material) { + super(material); + this.setHardness(15.0F); + this.setResistance(30.0F); + this.name = name; + this.textureNames = texture; + this.setCreativeTab(tabs); + GregTechAPI.registerMachineBlock(this, -1); + } + + @Override + public int damageDropped(int meta) { + return meta; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List<ItemStack> list) { + for (int i = 0; i < this.textureNames.length; i++) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return meta < this.texture.length ? this.texture[meta] : this.texture[0]; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister par1IconRegister) { + this.texture = new IIcon[this.textureNames.length]; + for (int i = 0; i < this.textureNames.length; i++) { + this.texture[i] = par1IconRegister.registerIcon(this.textureNames[i]); + } + } + + @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); + } + } + + @Override + public void breakBlock(World aWorld, int aX, int aY, int aZ, Block aBlock, int aMetaData) { + if (GregTechAPI.isMachineBlock(this, aMetaData)) { + GregTechAPI.causeMachineUpdate(aWorld, aX, aY, aZ); + } + } + + @Override + public String getUnlocalizedName() { + return this.name; + } + + @Override + public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) { + return false; + } + + @Override + public boolean canEntityDestroy(IBlockAccess world, int x, int y, int z, Entity entity) { + return false; + } + + @Override + public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) { + return false; + } +} diff --git a/src/main/java/bartworks/common/blocks/BWBlocksGlass.java b/src/main/java/bartworks/common/blocks/BWBlocksGlass.java new file mode 100644 index 0000000000..be3ffbf07e --- /dev/null +++ b/src/main/java/bartworks/common/blocks/BWBlocksGlass.java @@ -0,0 +1,187 @@ +/* + * Copyright (c) 2018-2020 bartimaeusnek Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +package bartworks.common.blocks; + +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.util.ForgeDirection; + +import bartworks.API.SideReference; +import bartworks.client.renderer.RendererGlassBlock; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class BWBlocksGlass extends BWBlocks { + + @SideOnly(Side.CLIENT) + private IIcon[] connectedTexture; + + private final boolean connectedTex; + private boolean fake; + private short[][] color = new short[this.textureNames.length][3]; + + public BWBlocksGlass(String name, String[] texture, CreativeTabs tabs) { + super(name, texture, tabs, Material.glass); + this.connectedTex = false; + } + + public BWBlocksGlass(String name, String[] texture, short[][] color, CreativeTabs tabs, boolean connectedTex, + boolean fake) { + super(name, texture, tabs, Material.glass); + this.connectedTex = connectedTex; + this.color = color; + this.fake = fake; + } + + public short[] getColor(int meta) { + return meta < this.texture.length ? this.color[meta] : this.color[0]; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess worldClient, int xCoord, int yCoord, int zCoord, int aSide) { + if (worldClient.getBlock(xCoord, yCoord, zCoord) instanceof BWBlocksGlass) return false; + return super.shouldSideBeRendered(worldClient, xCoord, yCoord, zCoord, aSide); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return meta < this.texture.length ? this.texture[meta] : this.texture[0]; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister par1IconRegister) { + if (!this.connectedTex) { + this.texture = new IIcon[this.textureNames.length]; + for (int i = 0; i < this.textureNames.length; i++) { + this.texture[i] = par1IconRegister.registerIcon(this.textureNames[i]); + } + return; + } + this.texture = new IIcon[this.textureNames.length]; + this.connectedTexture = new IIcon[16]; + for (int i = 0; i < this.textureNames.length; i++) { + this.texture[i] = par1IconRegister.registerIcon(this.textureNames[i]); + String[] splitname = this.textureNames[0].split(":"); + for (int j = 0; j < 16; j++) { + this.connectedTexture[j] = par1IconRegister + .registerIcon(splitname[0] + ":connectedTex/" + splitname[1] + '/' + splitname[1] + '_' + j); + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess worldClient, int xCoord, int yCoord, int zCoord, int aSide) { + if (!this.connectedTex) return super.getIcon(worldClient, xCoord, yCoord, zCoord, aSide); + + ForgeDirection dir = ForgeDirection.getOrientation(aSide); + byte sides = 0; + switch (dir) { + case UP: + case DOWN: { + if (worldClient.getBlock(xCoord, yCoord, zCoord - 1) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0001); + if (worldClient.getBlock(xCoord, yCoord, zCoord + 1) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0010); + if (worldClient.getBlock(xCoord - 1, yCoord, zCoord) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0100); + if (worldClient.getBlock(xCoord + 1, yCoord, zCoord) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b1000); + break; + } + case EAST: { + if (worldClient.getBlock(xCoord, yCoord + 1, zCoord) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0001); + if (worldClient.getBlock(xCoord, yCoord - 1, zCoord) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0010); + if (worldClient.getBlock(xCoord, yCoord, zCoord + 1) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0100); + if (worldClient.getBlock(xCoord, yCoord, zCoord - 1) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b1000); + break; + } + case WEST: { + if (worldClient.getBlock(xCoord, yCoord + 1, zCoord) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0001); + if (worldClient.getBlock(xCoord, yCoord - 1, zCoord) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0010); + if (worldClient.getBlock(xCoord, yCoord, zCoord - 1) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0100); + if (worldClient.getBlock(xCoord, yCoord, zCoord + 1) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b1000); + break; + } + case NORTH: { + if (worldClient.getBlock(xCoord, yCoord + 1, zCoord) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0001); + if (worldClient.getBlock(xCoord, yCoord - 1, zCoord) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0010); + if (worldClient.getBlock(xCoord + 1, yCoord, zCoord) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0100); + if (worldClient.getBlock(xCoord - 1, yCoord, zCoord) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b1000); + break; + } + case SOUTH: { + if (worldClient.getBlock(xCoord, yCoord + 1, zCoord) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0001); + if (worldClient.getBlock(xCoord, yCoord - 1, zCoord) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0010); + if (worldClient.getBlock(xCoord - 1, yCoord, zCoord) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b0100); + if (worldClient.getBlock(xCoord + 1, yCoord, zCoord) instanceof BWBlocksGlass) + sides = (byte) (sides | 0b1000); + break; + } + case UNKNOWN: + default: { + break; + } + } + return this.connectedTexture[sides]; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() { + return 1; + } + + @Override + public int getRenderType() { + if (!this.fake && SideReference.Side.Client) return RendererGlassBlock.renderID; + return 0; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + protected boolean canSilkHarvest() { + return false; + } +} diff --git a/src/main/java/bartworks/common/blocks/BWBlocksGlass2.java b/src/main/java/bartworks/common/blocks/BWBlocksGlass2.java new file mode 100644 index 0000000000..4c0d928049 --- /dev/null +++ b/src/main/java/bartworks/common/blocks/BWBlocksGlass2.java @@ -0,0 +1,179 @@ +package bartworks.common.blocks; + +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.util.ForgeDirection; + +import bartworks.API.SideReference; +import bartworks.client.renderer.RendererGlassBlock; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class BWBlocksGlass2 extends BWBlocks { + + @SideOnly(Side.CLIENT) + private IIcon[] connectedTexture; + + private final boolean connectedTex; + private boolean fake; + private short[][] color = new short[this.textureNames.length][3]; + + public BWBlocksGlass2(String name, String[] texture, CreativeTabs tabs) { + super(name, texture, tabs, Material.glass); + this.connectedTex = false; + } + + public BWBlocksGlass2(String name, String[] texture, short[][] color, CreativeTabs tabs, boolean connectedTex, + boolean fake) { + super(name, texture, tabs, Material.glass); + this.connectedTex = connectedTex; + this.color = color; + this.fake = fake; + } + + public short[] getColor(int meta) { + return meta < this.texture.length ? this.color[meta] : this.color[0]; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess worldClient, int xCoord, int yCoord, int zCoord, int aSide) { + if (worldClient.getBlock(xCoord, yCoord, zCoord) instanceof BWBlocksGlass2) return false; + return super.shouldSideBeRendered(worldClient, xCoord, yCoord, zCoord, aSide); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return meta < this.texture.length ? this.texture[meta] : this.texture[0]; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister par1IconRegister) { + if (!this.connectedTex) { + this.texture = new IIcon[this.textureNames.length]; + for (int i = 0; i < this.textureNames.length; i++) { + this.texture[i] = par1IconRegister.registerIcon(this.textureNames[i]); + } + return; + } + this.texture = new IIcon[this.textureNames.length]; + this.connectedTexture = new IIcon[16]; + for (int i = 0; i < this.textureNames.length; i++) { + this.texture[i] = par1IconRegister.registerIcon(this.textureNames[i]); + String[] splitname = this.textureNames[0].split(":"); + for (int j = 0; j < 16; j++) { + this.connectedTexture[j] = par1IconRegister.registerIcon( + splitname[0] + ":connectedTex/" + + "BoronSilicateGlassBlock" + + '/' + + "BoronSilicateGlassBlock" + + '_' + + j); + } + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess worldClient, int xCoord, int yCoord, int zCoord, int aSide) { + if (!this.connectedTex) return super.getIcon(worldClient, xCoord, yCoord, zCoord, aSide); + + ForgeDirection dir = ForgeDirection.getOrientation(aSide); + byte sides = 0; + switch (dir) { + case UP: + case DOWN: { + if (worldClient.getBlock(xCoord, yCoord, zCoord - 1) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0001); + if (worldClient.getBlock(xCoord, yCoord, zCoord + 1) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0010); + if (worldClient.getBlock(xCoord - 1, yCoord, zCoord) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0100); + if (worldClient.getBlock(xCoord + 1, yCoord, zCoord) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b1000); + break; + } + case EAST: { + if (worldClient.getBlock(xCoord, yCoord + 1, zCoord) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0001); + if (worldClient.getBlock(xCoord, yCoord - 1, zCoord) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0010); + if (worldClient.getBlock(xCoord, yCoord, zCoord + 1) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0100); + if (worldClient.getBlock(xCoord, yCoord, zCoord - 1) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b1000); + break; + } + case WEST: { + if (worldClient.getBlock(xCoord, yCoord + 1, zCoord) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0001); + if (worldClient.getBlock(xCoord, yCoord - 1, zCoord) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0010); + if (worldClient.getBlock(xCoord, yCoord, zCoord - 1) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0100); + if (worldClient.getBlock(xCoord, yCoord, zCoord + 1) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b1000); + break; + } + case NORTH: { + if (worldClient.getBlock(xCoord, yCoord + 1, zCoord) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0001); + if (worldClient.getBlock(xCoord, yCoord - 1, zCoord) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0010); + if (worldClient.getBlock(xCoord + 1, yCoord, zCoord) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0100); + if (worldClient.getBlock(xCoord - 1, yCoord, zCoord) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b1000); + break; + } + case SOUTH: { + if (worldClient.getBlock(xCoord, yCoord + 1, zCoord) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0001); + if (worldClient.getBlock(xCoord, yCoord - 1, zCoord) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0010); + if (worldClient.getBlock(xCoord - 1, yCoord, zCoord) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b0100); + if (worldClient.getBlock(xCoord + 1, yCoord, zCoord) instanceof BWBlocksGlass2) + sides = (byte) (sides | 0b1000); + break; + } + case UNKNOWN: + default: { + break; + } + } + return this.connectedTexture[sides]; + } + + @Override + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() { + return 1; + } + + @Override + public int getRenderType() { + if (!this.fake && SideReference.Side.Client) return RendererGlassBlock.renderID; + return 0; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + protected boolean canSilkHarvest() { + return false; + } +} diff --git a/src/main/java/bartworks/common/blocks/BWMachineBlockContainer.java b/src/main/java/bartworks/common/blocks/BWMachineBlockContainer.java new file mode 100644 index 0000000000..1c652a0984 --- /dev/null +++ b/src/main/java/bartworks/common/blocks/BWMachineBlockContainer.java @@ -0,0 +1,43 @@ +/* + * Copyright (c) 2018-2020 bartimaeusnek Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +package bartworks.common.blocks; + +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; + +import gregtech.api.GregTechAPI; + +public class BWMachineBlockContainer extends BWTileEntityContainer { + + public BWMachineBlockContainer(Material p_i45386_1_, Class<? extends TileEntity> tileEntity, String blockName) { + super(p_i45386_1_, tileEntity, blockName); + GregTechAPI.registerMachineBlock(this, -1); + } + + @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); + } + } + + @Override + public void breakBlock(World aWorld, int aX, int aY, int aZ, Block aBlock, int aMetaData) { + if (GregTechAPI.isMachineBlock(this, aMetaData)) { + GregTechAPI.causeMachineUpdate(aWorld, aX, aY, aZ); + } + } +} diff --git a/src/main/java/bartworks/common/blocks/BWMultipleTileEntityContainer.java b/src/main/java/bartworks/common/blocks/BWMultipleTileEntityContainer.java new file mode 100644 index 0000000000..ad7bbcf5c9 --- /dev/null +++ b/src/main/java/bartworks/common/blocks/BWMultipleTileEntityContainer.java @@ -0,0 +1,164 @@ +/* + * Copyright (c) 2018-2020 bartimaeusnek Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +package bartworks.common.blocks; + +import java.util.List; + +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.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.EnumCreatureType; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import com.gtnewhorizons.modularui.api.UIInfos; +import com.gtnewhorizons.modularui.api.screen.ITileWithModularUI; + +import bartworks.MainMod; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ic2.api.tile.IWrenchable; +import ic2.core.IC2; +import ic2.core.IHasGui; + +public class BWMultipleTileEntityContainer extends BlockContainer { + + protected final String[] textureNames; + protected final String name; + protected final Class<? extends TileEntity>[] tileEntityArray; + + @SideOnly(Side.CLIENT) + protected IIcon[] texture; + + public BWMultipleTileEntityContainer(Material p_i45386_1_, Class<? extends TileEntity>[] tileEntity, + String blockName, String[] textureNames, CreativeTabs tabs) { + super(p_i45386_1_); + this.setHardness(15.0F); + this.setResistance(30.0F); + this.tileEntityArray = tileEntity; + this.name = blockName; + this.textureNames = textureNames; + this.setCreativeTab(tabs); + this.setBlockName(blockName); + this.setBlockTextureName(MainMod.MOD_ID + ":" + blockName); + } + + @Override + public boolean onBlockActivated(World worldObj, int x, int y, int z, EntityPlayer player, int side, float subX, + float subY, float subZ) { + if (worldObj.isRemote) { + return true; + } + if (!player.isSneaking()) { + TileEntity tile = worldObj.getTileEntity(x, y, z); + if (tile instanceof IHasGui) { + return worldObj.isRemote || IC2.platform.launchGui(player, (IHasGui) tile); + } + if (tile instanceof ITileWithModularUI && !worldObj.isRemote) { + UIInfos.TILE_MODULAR_UI.open(player, worldObj, x, y, z); + } + } + + return false; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack itemStack) { + TileEntity tile = world.getTileEntity(x, y, z); + if (tile instanceof IWrenchable tile2 && itemStack != null) { + int meta = itemStack.getItemDamage(); + world.setBlockMetadataWithNotify(x, y, z, meta, 2); + if (entity != null) { + int face = MathHelper.floor_double(entity.rotationYaw * 4.0f / 360.0f + 0.5) & 0x3; + switch (face) { + case 0: + tile2.setFacing((short) 2); + break; + case 1: + tile2.setFacing((short) 5); + break; + case 2: + tile2.setFacing((short) 3); + break; + case 3: + tile2.setFacing((short) 4); + break; + } + } + } + } + + @Override + public int damageDropped(int meta) { + return meta; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item item, CreativeTabs tab, List<ItemStack> list) { + for (int i = 0; i < this.textureNames.length; i++) { + list.add(new ItemStack(item, 1, i)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return meta < this.texture.length ? this.texture[meta] : this.texture[0]; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister par1IconRegister) { + this.texture = new IIcon[this.textureNames.length]; + for (int i = 0; i < this.textureNames.length; i++) { + this.texture[i] = par1IconRegister.registerIcon(this.textureNames[i]); + } + } + + @Override + public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) { + return false; + } + + @Override + public boolean canEntityDestroy(IBlockAccess world, int x, int y, int z, Entity entity) { + return false; + } + + @Override + public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) { + return false; + } + + @Override + public TileEntity createNewTileEntity(World worldIn, int meta) { + try { + return this.tileEntityArray[meta].getConstructor() + .newInstance(); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } +} diff --git a/src/main/java/bartworks/common/blocks/BWTileEntityContainer.java b/src/main/java/bartworks/common/blocks/BWTileEntityContainer.java new file mode 100644 index 0000000000..2a699f8340 --- /dev/null +++ b/src/main/java/bartworks/common/blocks/BWTileEntityContainer.java @@ -0,0 +1,204 @@ +/* + * Copyright (c) 2018-2020 bartimaeusnek Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +package bartworks.common.blocks; + +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.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.EnumCreatureType; +import net.minecraft.entity.item.EntityItem; +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.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.fluids.IFluidContainerItem; + +import com.gtnewhorizons.modularui.api.UIInfos; +import com.gtnewhorizons.modularui.api.screen.ITileWithModularUI; + +import bartworks.API.ITileAddsInformation; +import bartworks.API.ITileDropsContent; +import bartworks.API.ITileHasDifferentTextureSides; +import bartworks.MainMod; +import bartworks.common.tileentities.classic.TileEntityHeatedWaterPump; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import ic2.api.tile.IWrenchable; +import ic2.core.IC2; +import ic2.core.IHasGui; + +public class BWTileEntityContainer extends BlockContainer implements ITileAddsInformation { + + protected Class<? extends TileEntity> tileEntity; + + public BWTileEntityContainer(Material p_i45386_1_, Class<? extends TileEntity> tileEntity, String blockName) { + super(p_i45386_1_); + this.tileEntity = tileEntity; + this.setHardness(15.0F); + this.setResistance(30.0F); + this.setCreativeTab(MainMod.BWT); + this.setBlockName(blockName); + this.setBlockTextureName(MainMod.MOD_ID + ":" + blockName); + } + + @Override + public boolean onBlockActivated(World worldObj, int x, int y, int z, EntityPlayer player, int side, float subX, + float subY, float subZ) { + if (worldObj.isRemote) { + return false; + } + TileEntity tile = worldObj.getTileEntity(x, y, z); + if (tile instanceof TileEntityHeatedWaterPump) { + if (player.getHeldItem() != null && (player.getHeldItem() + .getItem() + .equals(Items.bucket) + || player.getHeldItem() + .getItem() instanceof IFluidContainerItem) + && ((TileEntityHeatedWaterPump) tile).drain(1000, false) != null) + if (player.getHeldItem() + .getItem() + .equals(Items.bucket) && ((TileEntityHeatedWaterPump) tile).drain(1000, false).amount == 1000) { + ((TileEntityHeatedWaterPump) tile).drain(1000, true); + player.getHeldItem().stackSize--; + if (player.getHeldItem().stackSize <= 0) + player.inventory.setInventorySlotContents(player.inventory.currentItem, null); + player.inventory.addItemStackToInventory(new ItemStack(Items.water_bucket)); + return true; + } + } + if (!player.isSneaking()) { + if (tile instanceof IHasGui) { + return worldObj.isRemote || IC2.platform.launchGui(player, (IHasGui) tile); + } + if (tile instanceof ITileWithModularUI) { + if (!worldObj.isRemote) { + UIInfos.TILE_MODULAR_UI.open(player, worldObj, x, y, z); + } + return true; + } + } + return false; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack itemStack) { + TileEntity tile = world.getTileEntity(x, y, z); + if (tile instanceof IWrenchable tile2 && itemStack != null) { + int meta = itemStack.getItemDamage(); + world.setBlockMetadataWithNotify(x, y, z, meta, 2); + if (entity != null) { + int face = MathHelper.floor_double(entity.rotationYaw * 4.0f / 360.0f + 0.5) & 0x3; + switch (face) { + case 0: + tile2.setFacing((short) 2); + break; + case 1: + tile2.setFacing((short) 5); + break; + case 2: + tile2.setFacing((short) 3); + break; + case 3: + tile2.setFacing((short) 4); + break; + } + } + } + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int meta) { + TileEntity t = world.getTileEntity(x, y, z); + if (t instanceof ITileDropsContent) { + int[] dropSlots = ((ITileDropsContent) t).getDropSlots(); + for (int dropSlot : dropSlots) { + if (((ITileDropsContent) t).getStackInSlot(dropSlot) != null) world.spawnEntityInWorld( + new EntityItem(world, x, y, z, ((TileEntityHeatedWaterPump) t).getStackInSlot(dropSlot))); + } + } + super.breakBlock(world, x, y, z, block, meta); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + if (!ITileHasDifferentTextureSides.class.isAssignableFrom(this.tileEntity)) return super.getIcon(side, meta); + try { + return ((ITileHasDifferentTextureSides) this.tileEntity.getConstructor() + .newInstance()).getTextureForSide(side, meta); + } catch (Exception e) { + e.printStackTrace(); + return super.getIcon(side, meta); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister par1IconRegister) { + if (ITileHasDifferentTextureSides.class.isAssignableFrom(this.tileEntity)) { + try { + ((ITileHasDifferentTextureSides) this.tileEntity.getConstructor() + .newInstance()).registerBlockIcons(par1IconRegister); + } catch (Exception e) { + e.printStackTrace(); + } + } else super.registerBlockIcons(par1IconRegister); + } + + @Override + public TileEntity createNewTileEntity(World worldIn, int meta) { + try { + return this.tileEntity.getConstructor() + .newInstance(); + } catch (Exception e) { + e.printStackTrace(); + } + return null; + } + + @Override + public boolean canBeReplacedByLeaves(IBlockAccess world, int x, int y, int z) { + return false; + } + + @Override + public boolean canEntityDestroy(IBlockAccess world, int x, int y, int z, Entity entity) { + return false; + } + + @Override + public boolean canCreatureSpawn(EnumCreatureType type, IBlockAccess world, int x, int y, int z) { + return false; + } + + @Override + public String[] getInfoData() { + if (ITileAddsInformation.class.isAssignableFrom(this.tileEntity)) { + try { + return ((ITileAddsInformation) this.tileEntity.getConstructor() + .newInstance()).getInfoData(); + } catch (Exception e) { + e.printStackTrace(); + } + } + return new String[0]; + } +} diff --git a/src/main/java/bartworks/common/blocks/BlockBioFluid.java b/src/main/java/bartworks/common/blocks/BlockBioFluid.java new file mode 100644 index 0000000000..df18ed4a9d --- /dev/null +++ b/src/main/java/bartworks/common/blocks/BlockBioFluid.java @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2018-2020 bartimaeusnek Permission is hereby granted, free of charge, to any person obtaining a copy of + * this software and associated documentation files (the "Software"), to deal in the Software without restriction, + * including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + * copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following + * conditions: The above copyright notice and this permission notice shall be included in all copies or substantial + * portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, + * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN + * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + * DEALINGS IN THE SOFTWARE. + */ + +package bartworks.common.blocks; + +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.fluids.BlockFluidBase; +import net.minecraftforge.fluids.FluidStack; + +import bartworks.common.loaders.FluidLoader; +import bartworks.common.tileentities.classic.TileEntityDimIDBridge; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; + +public class BlockBioFluid extends BlockFluidBase implements ITileEntityProvider { + + public BlockBioFluid() { + super(FluidLoader.ff, Material.water); + this.setBlockName("BioFluidBlock"); + // this.setCreativeTab(MainMod.BioTab); + this.textureName = "gregtech:fluids/fluid.molten.autogenerated"; + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister reg) { + FluidLoader.autogenIIcon = this.blockIcon = reg.registerIcon(this.getTextureName()); + } + + @Override + public int getQuantaValue(IBlockAccess world, int x, int y, int z) { + return 0; + } + + @Override + public boolean canCollideCheck(int meta, boolean fullHit) { + return false; + } + + @Override + public int getMaxRenderHeightMeta() { + return 0; + } + + @Override + public int getRenderType() { + return FluidLoader.renderID; + } + + @Override + public FluidStack drain(World world, int x, int y, int z, boolean doDrain) { + return null; + } + + @Override + public boolean canDrain(World world, int x, int y, int z) { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess worldIn, int x, int y, int z, int side) { + return FluidLoader.autogenIIcon; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return FluidLoader.autogenIIcon; + } + + @Override + public TileEntity createNewTileEntity(World worldIn, int meta) { + return new TileEntityDimIDBridge(); + } +} |
