From 1b820de08a05070909a267e17f033fcf58ac8710 Mon Sep 17 00:00:00 2001 From: NotAPenguin Date: Mon, 2 Sep 2024 23:17:17 +0200 Subject: 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 --- .../java/bartworks/common/blocks/BWBlocks.java | 134 ++++ .../bartworks/common/blocks/BWBlocksGlass.java | 187 +++++ .../bartworks/common/blocks/BWBlocksGlass2.java | 179 +++++ .../common/blocks/BWMachineBlockContainer.java | 43 ++ .../blocks/BWMultipleTileEntityContainer.java | 164 ++++ .../common/blocks/BWTileEntityContainer.java | 204 +++++ .../bartworks/common/blocks/BlockBioFluid.java | 92 +++ .../bartworks/common/commands/ChangeConfig.java | 72 ++ .../common/commands/ClearCraftingCache.java | 39 + .../common/commands/GetWorkingDirectory.java | 37 + .../common/commands/PrintRecipeListToFile.java | 62 ++ src/main/java/bartworks/common/commands/RunGC.java | 38 + .../java/bartworks/common/commands/SummonRuin.java | 46 ++ .../bartworks/common/configs/ConfigHandler.java | 301 ++++++++ .../java/bartworks/common/items/BWItemBlocks.java | 84 +++ .../common/items/ItemCircuitProgrammer.java | 236 ++++++ .../java/bartworks/common/items/ItemLabModule.java | 41 + .../java/bartworks/common/items/ItemLabParts.java | 150 ++++ .../bartworks/common/items/ItemRockCutter.java | 183 +++++ .../common/items/ItemSimpleWindMeter.java | 76 ++ .../bartworks/common/items/ItemStonageRotors.java | 162 ++++ .../bartworks/common/items/ItemTeslaStaff.java | 141 ++++ .../bartworks/common/items/SimpleIconItem.java | 35 + .../bartworks/common/items/SimpleSubItemClass.java | 69 ++ .../common/loaders/ArtificialMicaLine.java | 191 +++++ .../bartworks/common/loaders/BioCultureLoader.java | 104 +++ .../java/bartworks/common/loaders/BioItemList.java | 106 +++ .../bartworks/common/loaders/BioLabLoader.java | 23 + .../bartworks/common/loaders/BioRecipeLoader.java | 211 ++++++ .../ElectricImplosionCompressorRecipes.java | 229 ++++++ .../java/bartworks/common/loaders/FluidLoader.java | 145 ++++ .../bartworks/common/loaders/ItemRegistry.java | 654 ++++++++++++++++ .../common/loaders/LocalisationLoader.java | 62 ++ .../common/loaders/RadioHatchMaterialLoader.java | 365 +++++++++ .../bartworks/common/loaders/RecipeLoader.java | 59 ++ .../common/loaders/RegisterGlassTiers.java | 118 +++ .../common/loaders/RegisterServerCommands.java | 34 + .../common/loaders/StaticRecipeChangeLoaders.java | 562 ++++++++++++++ .../common/loaders/recipes/Assembler.java | 270 +++++++ .../common/loaders/recipes/AssemblyLine.java | 81 ++ .../common/loaders/recipes/Autoclave.java | 40 + .../common/loaders/recipes/Centrifuge.java | 141 ++++ .../common/loaders/recipes/ChemicalBath.java | 83 ++ .../common/loaders/recipes/ChemicalReactor.java | 28 + .../common/loaders/recipes/CraftingRecipes.java | 468 ++++++++++++ .../common/loaders/recipes/Electrolyzer.java | 151 ++++ .../common/loaders/recipes/Extractor.java | 44 ++ .../common/loaders/recipes/FakeRecipes.java | 11 + .../common/loaders/recipes/FluidHeater.java | 26 + .../common/loaders/recipes/FluidSolidifier.java | 102 +++ .../common/loaders/recipes/FormingPress.java | 76 ++ .../common/loaders/recipes/LaserEngraver.java | 27 + .../bartworks/common/loaders/recipes/Mixer.java | 62 ++ .../common/loaders/recipes/Pulverizer.java | 97 +++ .../common/loaders/recipes/PyrolyseOven.java | 27 + src/main/java/bartworks/common/net/BWNetwork.java | 170 +++++ .../common/net/CircuitProgrammerPacket.java | 88 +++ src/main/java/bartworks/common/net/EICPacket.java | 60 ++ .../java/bartworks/common/net/MetaBlockPacket.java | 108 +++ .../bartworks/common/net/OreDictCachePacket.java | 71 ++ .../java/bartworks/common/net/RendererPacket.java | 99 +++ .../bartworks/common/net/ServerJoinedPacket.java | 61 ++ .../classic/TileEntityDimIDBridge.java | 24 + .../classic/TileEntityHeatedWaterPump.java | 375 +++++++++ .../tileentities/classic/TileEntityRotorBlock.java | 41 + .../tileentities/debug/MTECreativeScanner.java | 70 ++ .../common/tileentities/multis/MTEBioVat.java | 834 +++++++++++++++++++++ .../multis/MTECircuitAssemblyLine.java | 672 +++++++++++++++++ .../multis/MTEDeepEarthHeatingPump.java | 336 +++++++++ .../multis/MTEElectricImplosionCompressor.java | 565 ++++++++++++++ .../multis/MTEHighTempGasCooledReactor.java | 619 +++++++++++++++ .../common/tileentities/multis/MTELESU.java | 590 +++++++++++++++ .../common/tileentities/multis/MTEManualTrafo.java | 363 +++++++++ .../multis/MTEThoriumHighTempReactor.java | 416 ++++++++++ .../common/tileentities/multis/MTEWindmill.java | 637 ++++++++++++++++ .../multis/mega/MTEMegaBlastFurnace.java | 430 +++++++++++ .../multis/mega/MTEMegaChemicalReactor.java | 278 +++++++ .../multis/mega/MTEMegaDistillTower.java | 446 +++++++++++ .../multis/mega/MTEMegaOilCracker.java | 465 ++++++++++++ .../multis/mega/MTEMegaVacuumFreezer.java | 533 +++++++++++++ .../multis/mega/MegaMultiBlockBase.java | 212 ++++++ .../tiered/GT_MetaTileEntity_RadioHatch.java | 494 ++++++++++++ .../tileentities/tiered/MTEAcidGenerator.java | 155 ++++ .../common/tileentities/tiered/MTEBioLab.java | 405 ++++++++++ .../tiered/MTECompressedFluidHatch.java | 57 ++ .../common/tileentities/tiered/MTEDiode.java | 125 +++ .../tileentities/tiered/MTEEnergyDistributor.java | 72 ++ .../tileentities/tiered/MTEGiantOutputHatch.java | 41 + .../tiered/MTEHumongousInputHatch.java | 41 + 89 files changed, 17325 insertions(+) create mode 100644 src/main/java/bartworks/common/blocks/BWBlocks.java create mode 100644 src/main/java/bartworks/common/blocks/BWBlocksGlass.java create mode 100644 src/main/java/bartworks/common/blocks/BWBlocksGlass2.java create mode 100644 src/main/java/bartworks/common/blocks/BWMachineBlockContainer.java create mode 100644 src/main/java/bartworks/common/blocks/BWMultipleTileEntityContainer.java create mode 100644 src/main/java/bartworks/common/blocks/BWTileEntityContainer.java create mode 100644 src/main/java/bartworks/common/blocks/BlockBioFluid.java create mode 100644 src/main/java/bartworks/common/commands/ChangeConfig.java create mode 100644 src/main/java/bartworks/common/commands/ClearCraftingCache.java create mode 100644 src/main/java/bartworks/common/commands/GetWorkingDirectory.java create mode 100644 src/main/java/bartworks/common/commands/PrintRecipeListToFile.java create mode 100644 src/main/java/bartworks/common/commands/RunGC.java create mode 100644 src/main/java/bartworks/common/commands/SummonRuin.java create mode 100644 src/main/java/bartworks/common/configs/ConfigHandler.java create mode 100644 src/main/java/bartworks/common/items/BWItemBlocks.java create mode 100644 src/main/java/bartworks/common/items/ItemCircuitProgrammer.java create mode 100644 src/main/java/bartworks/common/items/ItemLabModule.java create mode 100644 src/main/java/bartworks/common/items/ItemLabParts.java create mode 100644 src/main/java/bartworks/common/items/ItemRockCutter.java create mode 100644 src/main/java/bartworks/common/items/ItemSimpleWindMeter.java create mode 100644 src/main/java/bartworks/common/items/ItemStonageRotors.java create mode 100644 src/main/java/bartworks/common/items/ItemTeslaStaff.java create mode 100644 src/main/java/bartworks/common/items/SimpleIconItem.java create mode 100644 src/main/java/bartworks/common/items/SimpleSubItemClass.java create mode 100644 src/main/java/bartworks/common/loaders/ArtificialMicaLine.java create mode 100644 src/main/java/bartworks/common/loaders/BioCultureLoader.java create mode 100644 src/main/java/bartworks/common/loaders/BioItemList.java create mode 100644 src/main/java/bartworks/common/loaders/BioLabLoader.java create mode 100644 src/main/java/bartworks/common/loaders/BioRecipeLoader.java create mode 100644 src/main/java/bartworks/common/loaders/ElectricImplosionCompressorRecipes.java create mode 100644 src/main/java/bartworks/common/loaders/FluidLoader.java create mode 100644 src/main/java/bartworks/common/loaders/ItemRegistry.java create mode 100644 src/main/java/bartworks/common/loaders/LocalisationLoader.java create mode 100644 src/main/java/bartworks/common/loaders/RadioHatchMaterialLoader.java create mode 100644 src/main/java/bartworks/common/loaders/RecipeLoader.java create mode 100644 src/main/java/bartworks/common/loaders/RegisterGlassTiers.java create mode 100644 src/main/java/bartworks/common/loaders/RegisterServerCommands.java create mode 100644 src/main/java/bartworks/common/loaders/StaticRecipeChangeLoaders.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/Assembler.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/AssemblyLine.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/Autoclave.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/Centrifuge.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/ChemicalBath.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/ChemicalReactor.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/CraftingRecipes.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/Electrolyzer.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/Extractor.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/FakeRecipes.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/FluidHeater.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/FluidSolidifier.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/FormingPress.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/LaserEngraver.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/Mixer.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/Pulverizer.java create mode 100644 src/main/java/bartworks/common/loaders/recipes/PyrolyseOven.java create mode 100644 src/main/java/bartworks/common/net/BWNetwork.java create mode 100644 src/main/java/bartworks/common/net/CircuitProgrammerPacket.java create mode 100644 src/main/java/bartworks/common/net/EICPacket.java create mode 100644 src/main/java/bartworks/common/net/MetaBlockPacket.java create mode 100644 src/main/java/bartworks/common/net/OreDictCachePacket.java create mode 100644 src/main/java/bartworks/common/net/RendererPacket.java create mode 100644 src/main/java/bartworks/common/net/ServerJoinedPacket.java create mode 100644 src/main/java/bartworks/common/tileentities/classic/TileEntityDimIDBridge.java create mode 100644 src/main/java/bartworks/common/tileentities/classic/TileEntityHeatedWaterPump.java create mode 100644 src/main/java/bartworks/common/tileentities/classic/TileEntityRotorBlock.java create mode 100644 src/main/java/bartworks/common/tileentities/debug/MTECreativeScanner.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/MTEBioVat.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/MTECircuitAssemblyLine.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/MTEDeepEarthHeatingPump.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/MTEElectricImplosionCompressor.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/MTEHighTempGasCooledReactor.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/MTELESU.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/MTEManualTrafo.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/MTEThoriumHighTempReactor.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/MTEWindmill.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/mega/MTEMegaBlastFurnace.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/mega/MTEMegaChemicalReactor.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/mega/MTEMegaDistillTower.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/mega/MTEMegaOilCracker.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/mega/MTEMegaVacuumFreezer.java create mode 100644 src/main/java/bartworks/common/tileentities/multis/mega/MegaMultiBlockBase.java create mode 100644 src/main/java/bartworks/common/tileentities/tiered/GT_MetaTileEntity_RadioHatch.java create mode 100644 src/main/java/bartworks/common/tileentities/tiered/MTEAcidGenerator.java create mode 100644 src/main/java/bartworks/common/tileentities/tiered/MTEBioLab.java create mode 100644 src/main/java/bartworks/common/tileentities/tiered/MTECompressedFluidHatch.java create mode 100644 src/main/java/bartworks/common/tileentities/tiered/MTEDiode.java create mode 100644 src/main/java/bartworks/common/tileentities/tiered/MTEEnergyDistributor.java create mode 100644 src/main/java/bartworks/common/tileentities/tiered/MTEGiantOutputHatch.java create mode 100644 src/main/java/bartworks/common/tileentities/tiered/MTEHumongousInputHatch.java (limited to 'src/main/java/bartworks/common') 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 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 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[] tileEntityArray; + + @SideOnly(Side.CLIENT) + protected IIcon[] texture; + + public BWMultipleTileEntityContainer(Material p_i45386_1_, Class[] 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 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 tileEntity; + + public BWTileEntityContainer(Material p_i45386_1_, Class 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(); + } +} diff --git a/src/main/java/bartworks/common/commands/ChangeConfig.java b/src/main/java/bartworks/common/commands/ChangeConfig.java new file mode 100644 index 0000000000..8e7edc765f --- /dev/null +++ b/src/main/java/bartworks/common/commands/ChangeConfig.java @@ -0,0 +1,72 @@ +/* + * 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.commands; + +import java.lang.reflect.Field; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.ChatComponentText; + +import bartworks.common.configs.ConfigHandler; + +public class ChangeConfig extends CommandBase { + + @Override + public String getCommandName() { + return "bwcfg"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "bwcfg "; + } + + @Override + @SuppressWarnings("rawtypes") + public void processCommand(ICommandSender sender, String[] args) { + try { + Field f = ConfigHandler.class.getField(args[0]); + Class c = f.getType(); + if (c.equals(int.class)) { + int l; + try { + l = Integer.parseInt(args[1]); + } catch (NumberFormatException e) { + sender.addChatMessage(new ChatComponentText("you need to enter a number!")); + return; + } + f.setInt(null, l); + } else if (c.equals(long.class)) { + long l; + try { + l = Long.parseLong(args[1]); + } catch (NumberFormatException e) { + sender.addChatMessage(new ChatComponentText("you need to enter a number!")); + return; + } + f.setLong(null, l); + } else if (c.equals(boolean.class)) { + if ("true".equalsIgnoreCase(args[1]) || "1".equalsIgnoreCase(args[1])) f.setBoolean(null, true); + else if ("false".equalsIgnoreCase(args[1]) || "0".equalsIgnoreCase(args[1])) f.setBoolean(null, false); + else { + sender.addChatMessage(new ChatComponentText("booleans need to be set to true or false")); + } + } + sender.addChatMessage(new ChatComponentText("Set " + args[0] + " to " + args[1])); + } catch (Exception e) { + e.printStackTrace(); + } + } +} diff --git a/src/main/java/bartworks/common/commands/ClearCraftingCache.java b/src/main/java/bartworks/common/commands/ClearCraftingCache.java new file mode 100644 index 0000000000..9e164d12f7 --- /dev/null +++ b/src/main/java/bartworks/common/commands/ClearCraftingCache.java @@ -0,0 +1,39 @@ +/* + * 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.commands; + +import net.minecraft.command.CommandBase; +import net.minecraft.command.ICommandSender; +import net.minecraft.util.ChatComponentText; + +import bartworks.ASM.BWCoreStaticReplacementMethodes; + +public class ClearCraftingCache extends CommandBase { + + @Override + public String getCommandName() { + return "bwclr"; + } + + @Override + public String getCommandUsage(ICommandSender sender) { + return "bwclr"; + } + + @Override + public void processCommand(ICommandSender sender, String[] args) { + BWCoreStaticReplacementMethodes.clearRecentlyUsedRecipes(); + sender.addChatMessage(new ChatComponentText("Recipe Cache cleared ")); + } +} diff --git a/src/main/java/bartworks/common/commands/GetWorkingDirectory.java b/src/main/java/bartworks/common/commands/GetWorkingDirectory.java new file mode 100644 index 0000000000..b52e067dea --- /dev/null +++ b/src/main/java/bartworks/common/commands/GetWorkingDirectory.java @@ -0,0 +1,37 @@ +/* + * 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