From 9d1e64b1b22b6ccd2ed17d678538831e79197c3e Mon Sep 17 00:00:00 2001 From: drcrazy Date: Mon, 13 Nov 2017 02:14:44 +0300 Subject: [PATCH] Fixed texture error for fluid itemblocks. --- .../blocks/fluid/BlockFluidTechReborn.java | 2 - .../blocks/generator/BlockSolarPanel.java | 1 + .../events/FluidBlockModelHandler.java | 109 ++++++++++++++++++ src/main/java/techreborn/init/ModFluids.java | 75 ++++++------ .../java/techreborn/proxies/ClientProxy.java | 21 +--- .../java/techreborn/proxies/CommonProxy.java | 5 - .../tiles/TileIronAlloyFurnace.java | 1 + .../assets/techreborn/blockstates/fluids.json | 16 +-- 8 files changed, 158 insertions(+), 72 deletions(-) create mode 100644 src/main/java/techreborn/events/FluidBlockModelHandler.java diff --git a/src/main/java/techreborn/blocks/fluid/BlockFluidTechReborn.java b/src/main/java/techreborn/blocks/fluid/BlockFluidTechReborn.java index 22e386670..be76bc2d6 100644 --- a/src/main/java/techreborn/blocks/fluid/BlockFluidTechReborn.java +++ b/src/main/java/techreborn/blocks/fluid/BlockFluidTechReborn.java @@ -31,7 +31,6 @@ import net.minecraft.util.EnumFacing; import net.minecraft.util.math.BlockPos; import net.minecraft.world.IBlockAccess; import net.minecraftforge.fluids.Fluid; -import techreborn.Core; public class BlockFluidTechReborn extends BlockFluidBase { @@ -41,7 +40,6 @@ public class BlockFluidTechReborn extends BlockFluidBase { super(fluid, material); setUnlocalizedName(name); this.name = name; - Core.proxy.registerFluidBlockRendering(this, name); } @Override diff --git a/src/main/java/techreborn/blocks/generator/BlockSolarPanel.java b/src/main/java/techreborn/blocks/generator/BlockSolarPanel.java index 3609e1795..f08f8acb5 100644 --- a/src/main/java/techreborn/blocks/generator/BlockSolarPanel.java +++ b/src/main/java/techreborn/blocks/generator/BlockSolarPanel.java @@ -56,6 +56,7 @@ public class BlockSolarPanel extends BaseTileBlock { ShootingStar.registerModel(new ModelCompound(ModInfo.MOD_ID, this, "machines/generators")); } + @Override protected BlockStateContainer createBlockState() { ACTIVE = PropertyBool.create("active"); return new BlockStateContainer(this, ACTIVE); diff --git a/src/main/java/techreborn/events/FluidBlockModelHandler.java b/src/main/java/techreborn/events/FluidBlockModelHandler.java new file mode 100644 index 000000000..5ba6ab1cb --- /dev/null +++ b/src/main/java/techreborn/events/FluidBlockModelHandler.java @@ -0,0 +1,109 @@ +/* + * This file is part of TechReborn, licensed under the MIT License (MIT). + * + * Copyright (c) 2017 TechReborn + * + * 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 techreborn.events; + +import net.minecraft.block.state.IBlockState; +import net.minecraft.client.renderer.ItemMeshDefinition; +import net.minecraft.client.renderer.block.model.ModelResourceLocation; +import net.minecraft.client.renderer.block.statemap.StateMapperBase; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.ResourceLocation; +import net.minecraftforge.client.event.ModelRegistryEvent; +import net.minecraftforge.client.model.ModelLoader; +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent; +import net.minecraftforge.fml.relauncher.Side; +import net.minecraftforge.fml.relauncher.SideOnly; +import techreborn.blocks.fluid.BlockFluidTechReborn; +import techreborn.init.ModFluids; +import techreborn.lib.ModInfo; + +/** + * @author drcrazy + * + */ +@SideOnly(Side.CLIENT) +public class FluidBlockModelHandler { + + @SubscribeEvent + public void registerModels(ModelRegistryEvent event) { + registerFluidBlockModel(ModFluids.BLOCK_BERYLLIUM); + registerFluidBlockModel(ModFluids.BLOCK_CALCIUM); + registerFluidBlockModel(ModFluids.BLOCK_CALCIUM_CARBONATE); + registerFluidBlockModel(ModFluids.BLOCK_CHLORITE); + registerFluidBlockModel(ModFluids.BLOCK_DEUTERIUM); + registerFluidBlockModel(ModFluids.BLOCK_GLYCERYL); + registerFluidBlockModel(ModFluids.BLOCK_HELIUM); + registerFluidBlockModel(ModFluids.BLOCK_HELIUM_3); + registerFluidBlockModel(ModFluids.BLOCK_HELIUMPLASMA); + registerFluidBlockModel(ModFluids.BLOCK_HYDROGEN); + registerFluidBlockModel(ModFluids.BLOCK_LITHIUM); + registerFluidBlockModel(ModFluids.BLOCK_MERCURY); + registerFluidBlockModel(ModFluids.BLOCK_METHANE); + registerFluidBlockModel(ModFluids.BLOCK_NITROCOAL_FUEL); + registerFluidBlockModel(ModFluids.BLOCK_NITROFUEL); + registerFluidBlockModel(ModFluids.BLOCK_NITROGEN); + registerFluidBlockModel(ModFluids.BLOCK_NITROGENDIOXIDE); + registerFluidBlockModel(ModFluids.BLOCK_POTASSIUM); + registerFluidBlockModel(ModFluids.BLOCK_SILICON); + registerFluidBlockModel(ModFluids.BLOCK_SODIUM); + registerFluidBlockModel(ModFluids.BLOCK_SODIUMPERSULFATE); + registerFluidBlockModel(ModFluids.BLOCK_TRITIUM); + registerFluidBlockModel(ModFluids.BLOCK_WOLFRAMIUM); + registerFluidBlockModel(ModFluids.BLOCK_CARBON); + registerFluidBlockModel(ModFluids.BLOCK_CARBON_FIBER); + registerFluidBlockModel(ModFluids.BLOCK_NITRO_CARBON); + registerFluidBlockModel(ModFluids.BLOCK_SULFUR); + registerFluidBlockModel(ModFluids.BLOCK_SODIUM_SULFIDE); + registerFluidBlockModel(ModFluids.BLOCK_DIESEL); + registerFluidBlockModel(ModFluids.BLOCK_NITRO_DIESEL); + registerFluidBlockModel(ModFluids.BLOCK_OIL); + registerFluidBlockModel(ModFluids.BLOCK_SULFURIC_ACID); + registerFluidBlockModel(ModFluids.BLOCK_COMPRESSED_AIR); + registerFluidBlockModel(ModFluids.BLOCK_ELECTROLYZED_WATER); + } + + private static void registerFluidBlockModel(BlockFluidTechReborn block) { + String name = block.getUnlocalizedName().substring(5).toLowerCase(); + Item item = Item.getItemFromBlock(block); + ModelResourceLocation location = new ModelResourceLocation( + new ResourceLocation(ModInfo.MOD_ID.toLowerCase(), "fluids"), name); + + ModelLoader.registerItemVariants(item); + ModelLoader.setCustomMeshDefinition(item, new ItemMeshDefinition() { + @Override + public ModelResourceLocation getModelLocation(ItemStack stack) { + return location; + } + }); + ModelLoader.setCustomStateMapper(block, new StateMapperBase() { + @Override + protected ModelResourceLocation getModelResourceLocation(IBlockState state) { + return location; + } + }); + } + +} diff --git a/src/main/java/techreborn/init/ModFluids.java b/src/main/java/techreborn/init/ModFluids.java index 132b9d0c0..cdfe404a1 100644 --- a/src/main/java/techreborn/init/ModFluids.java +++ b/src/main/java/techreborn/init/ModFluids.java @@ -29,7 +29,6 @@ import net.minecraft.block.material.Material; import net.minecraftforge.fluids.Fluid; import net.minecraftforge.fluids.FluidRegistry; import reborncore.RebornRegistry; -import techreborn.blocks.fluid.BlockFluidBase; import techreborn.blocks.fluid.BlockFluidTechReborn; import techreborn.blocks.fluid.TechRebornFluid; import techreborn.lib.ModInfo; @@ -37,113 +36,113 @@ import techreborn.lib.ModInfo; public class ModFluids { public static Fluid BERYLLIUM = new TechRebornFluid("fluidberylium"); - public static BlockFluidBase BLOCK_BERYLLIUM; + public static BlockFluidTechReborn BLOCK_BERYLLIUM; public static Fluid CALCIUM = new TechRebornFluid("fluidcalcium"); - public static BlockFluidBase BLOCK_CALCIUM; + public static BlockFluidTechReborn BLOCK_CALCIUM; public static Fluid CALCIUM_CARBONATE = new TechRebornFluid("fluidcalciumcarbonate"); - public static BlockFluidBase BLOCK_CALCIUM_CARBONATE; + public static BlockFluidTechReborn BLOCK_CALCIUM_CARBONATE; public static Fluid CHLORITE = new TechRebornFluid("fluidchlorite"); - public static BlockFluidBase BLOCK_CHLORITE; + public static BlockFluidTechReborn BLOCK_CHLORITE; public static Fluid DEUTERIUM = new TechRebornFluid("fluiddeuterium"); - public static BlockFluidBase BLOCK_DEUTERIUM; + public static BlockFluidTechReborn BLOCK_DEUTERIUM; public static Fluid GLYCERYL = new TechRebornFluid("fluidglyceryl"); - public static BlockFluidBase BLOCK_GLYCERYL; + public static BlockFluidTechReborn BLOCK_GLYCERYL; public static Fluid HELIUM = new TechRebornFluid("fluidhelium"); - public static BlockFluidBase BLOCK_HELIUM; + public static BlockFluidTechReborn BLOCK_HELIUM; public static Fluid HELIUM_3 = new TechRebornFluid("fluidhelium3"); - public static BlockFluidBase BLOCK_HELIUM_3; + public static BlockFluidTechReborn BLOCK_HELIUM_3; public static Fluid HELIUMPLASMA = new TechRebornFluid("fluidheliumplasma"); - public static BlockFluidBase BLOCK_HELIUMPLASMA; + public static BlockFluidTechReborn BLOCK_HELIUMPLASMA; public static Fluid HYDROGEN = new TechRebornFluid("fluidhydrogen"); - public static BlockFluidBase BLOCK_HYDROGEN; + public static BlockFluidTechReborn BLOCK_HYDROGEN; public static Fluid LITHIUM = new TechRebornFluid("fluidlithium"); - public static BlockFluidBase BLOCK_LITHIUM; + public static BlockFluidTechReborn BLOCK_LITHIUM; public static Fluid MERCURY = new TechRebornFluid("fluidmercury"); - public static BlockFluidBase BLOCK_MERCURY; + public static BlockFluidTechReborn BLOCK_MERCURY; public static Fluid METHANE = new TechRebornFluid("fluidmethane"); - public static BlockFluidBase BLOCK_METHANE; + public static BlockFluidTechReborn BLOCK_METHANE; public static Fluid NITROCOAL_FUEL = new TechRebornFluid("fluidnitrocoalfuel"); - public static BlockFluidBase BLOCK_NITROCOAL_FUEL; + public static BlockFluidTechReborn BLOCK_NITROCOAL_FUEL; public static Fluid NITROFUEL = new TechRebornFluid("fluidnitrofuel"); - public static BlockFluidBase BLOCK_NITROFUEL; + public static BlockFluidTechReborn BLOCK_NITROFUEL; public static Fluid NITROGEN = new TechRebornFluid("fluidnitrogen"); - public static BlockFluidBase BLOCK_NITROGEN; + public static BlockFluidTechReborn BLOCK_NITROGEN; public static Fluid NITROGENDIOXIDE = new TechRebornFluid("fluidnitrogendioxide"); - public static BlockFluidBase BLOCK_NITROGENDIOXIDE; + public static BlockFluidTechReborn BLOCK_NITROGENDIOXIDE; public static Fluid POTASSIUM = new TechRebornFluid("fluidpotassium"); - public static BlockFluidBase BLOCK_POTASSIUM; + public static BlockFluidTechReborn BLOCK_POTASSIUM; public static Fluid SILICON = new TechRebornFluid("fluidsilicon"); - public static BlockFluidBase BLOCK_SILICON; + public static BlockFluidTechReborn BLOCK_SILICON; public static Fluid SODIUM = new TechRebornFluid("fluidsodium"); - public static BlockFluidBase BLOCK_SODIUM; + public static BlockFluidTechReborn BLOCK_SODIUM; public static Fluid SODIUMPERSULFATE = new TechRebornFluid("fluidsodiumpersulfate"); - public static BlockFluidBase BLOCK_SODIUMPERSULFATE; + public static BlockFluidTechReborn BLOCK_SODIUMPERSULFATE; public static Fluid TRITIUM = new TechRebornFluid("fluidtritium"); - public static BlockFluidBase BLOCK_TRITIUM; + public static BlockFluidTechReborn BLOCK_TRITIUM; public static Fluid WOLFRAMIUM = new TechRebornFluid("fluidwolframium"); - public static BlockFluidBase BLOCK_WOLFRAMIUM; + public static BlockFluidTechReborn BLOCK_WOLFRAMIUM; public static Fluid CARBON = new TechRebornFluid("fluidcarbon"); - public static BlockFluidBase BLOCK_CARBON; + public static BlockFluidTechReborn BLOCK_CARBON; public static Fluid CARBON_FIBER = new TechRebornFluid("fluidcarbonfiber"); - public static BlockFluidBase BLOCK_CARBON_FIBER; + public static BlockFluidTechReborn BLOCK_CARBON_FIBER; public static Fluid NITRO_CARBON = new TechRebornFluid("fluidnitrocarbon"); - public static BlockFluidBase BLOCK_NITRO_CARBON; + public static BlockFluidTechReborn BLOCK_NITRO_CARBON; public static Fluid SULFUR = new TechRebornFluid("fluidSulfur"); - public static BlockFluidBase BLOCK_SULFUR; + public static BlockFluidTechReborn BLOCK_SULFUR; public static Fluid SODIUM_SULFIDE = new TechRebornFluid("fluidsodiumSulfide"); - public static BlockFluidBase BLOCK_SODIUM_SULFIDE; + public static BlockFluidTechReborn BLOCK_SODIUM_SULFIDE; public static Fluid DIESEL = new TechRebornFluid("fluiddiesel"); - public static BlockFluidBase BLOCK_DIESEL; + public static BlockFluidTechReborn BLOCK_DIESEL; public static Fluid NITRO_DIESEL = new TechRebornFluid("fluidnitrodiesel"); - public static BlockFluidBase BLOCK_NITRO_DIESEL; + public static BlockFluidTechReborn BLOCK_NITRO_DIESEL; public static Fluid OIL = new TechRebornFluid("fluidoil"); - public static BlockFluidBase BLOCK_OIL; + public static BlockFluidTechReborn BLOCK_OIL; public static Fluid SULFURIC_ACID = new TechRebornFluid("fluidsulfuricacid"); - public static BlockFluidBase BLOCK_SULFURIC_ACID; + public static BlockFluidTechReborn BLOCK_SULFURIC_ACID; public static Fluid COMPRESSED_AIR = new TechRebornFluid("fluidcompressedair"); - public static BlockFluidBase BLOCK_COMPRESSED_AIR; + public static BlockFluidTechReborn BLOCK_COMPRESSED_AIR; public static Fluid ELECTROLYZED_WATER = new TechRebornFluid("fluidelectrolyzedwater"); - public static BlockFluidBase BLOCK_ELECTROLYZED_WATER; + public static BlockFluidTechReborn BLOCK_ELECTROLYZED_WATER; public static void init() { FluidRegistry.registerFluid(BERYLLIUM); BLOCK_BERYLLIUM = new BlockFluidTechReborn(BERYLLIUM, Material.WATER, "techreborn.berylium"); - registerBlock(BLOCK_BERYLLIUM, - ModInfo.MOD_ID + "_" + BLOCK_BERYLLIUM.getUnlocalizedName().substring(5)); - + registerBlock(BLOCK_BERYLLIUM, ModInfo.MOD_ID + "_" + BLOCK_BERYLLIUM.getUnlocalizedName().substring(5)); + + FluidRegistry.registerFluid(CALCIUM); BLOCK_CALCIUM = new BlockFluidTechReborn(CALCIUM, Material.WATER, "techreborn.calcium"); registerBlock(BLOCK_CALCIUM, diff --git a/src/main/java/techreborn/proxies/ClientProxy.java b/src/main/java/techreborn/proxies/ClientProxy.java index d6a638c67..4827e4523 100644 --- a/src/main/java/techreborn/proxies/ClientProxy.java +++ b/src/main/java/techreborn/proxies/ClientProxy.java @@ -24,12 +24,8 @@ package techreborn.proxies; -import net.minecraft.block.Block; -import net.minecraft.block.state.IBlockState; import net.minecraft.client.Minecraft; -import net.minecraft.client.renderer.block.model.ModelResourceLocation; import net.minecraft.client.renderer.block.statemap.StateMap; -import net.minecraft.client.renderer.block.statemap.StateMapperBase; import net.minecraft.client.renderer.entity.Render; import net.minecraft.client.renderer.entity.RenderManager; import net.minecraft.util.text.TextFormatting; @@ -54,6 +50,7 @@ import techreborn.client.keybindings.KeyBindings; import techreborn.client.render.ModelDynamicCell; import techreborn.client.render.entitys.RenderNukePrimed; import techreborn.entities.EntityNukePrimed; +import techreborn.events.FluidBlockModelHandler; import techreborn.init.ModBlocks; import techreborn.items.ItemFrequencyTransmitter; import techreborn.lib.ModInfo; @@ -71,6 +68,7 @@ public class ClientProxy extends CommonProxy { ModelDynamicCell.init(); RegisterItemJsons.registerModels(); MinecraftForge.EVENT_BUS.register(new IconSupplier()); + MinecraftForge.EVENT_BUS.register(new FluidBlockModelHandler()); } @Override @@ -86,21 +84,6 @@ public class ClientProxy extends CommonProxy { ModelLoader.setCustomStateMapper(ModBlocks.RUBBER_LEAVES, rubberLeavesStateMap); } - @Override - public void registerFluidBlockRendering(Block block, String name) { - name = name.toLowerCase(); - super.registerFluidBlockRendering(block, name); - final ModelResourceLocation fluidLocation = new ModelResourceLocation(ModInfo.MOD_ID.toLowerCase() + ":fluids", name); - - // use a custom state mapper which will ignore the LEVEL property - ModelLoader.setCustomStateMapper(block, new StateMapperBase() { - @Override - protected ModelResourceLocation getModelResourceLocation(IBlockState state) { - return fluidLocation; - } - }); - } - @Override public boolean isCTMAvailable() { return isChiselAround; diff --git a/src/main/java/techreborn/proxies/CommonProxy.java b/src/main/java/techreborn/proxies/CommonProxy.java index a5c58d65a..6fe7ee856 100644 --- a/src/main/java/techreborn/proxies/CommonProxy.java +++ b/src/main/java/techreborn/proxies/CommonProxy.java @@ -24,7 +24,6 @@ package techreborn.proxies; -import net.minecraft.block.Block; import net.minecraftforge.fml.common.event.FMLInitializationEvent; import net.minecraftforge.fml.common.event.FMLPostInitializationEvent; import net.minecraftforge.fml.common.event.FMLPreInitializationEvent; @@ -57,10 +56,6 @@ public class CommonProxy implements ICompatModule { } - public void registerFluidBlockRendering(Block block, String name) { - - } - public boolean isCTMAvailable() { return false; } diff --git a/src/main/java/techreborn/tiles/TileIronAlloyFurnace.java b/src/main/java/techreborn/tiles/TileIronAlloyFurnace.java index c8dad0c4c..777ea73be 100644 --- a/src/main/java/techreborn/tiles/TileIronAlloyFurnace.java +++ b/src/main/java/techreborn/tiles/TileIronAlloyFurnace.java @@ -72,6 +72,7 @@ public class TileIronAlloyFurnace extends TileLegacyMachineBase /** * Returns the number of ticks that the supplied fuel item will keep the * furnace burning, or 0 if the item isn't fuel + * @param stack Itemstack of fuel * @return Integer Number of ticks */ public static int getItemBurnTime(ItemStack stack) { diff --git a/src/main/resources/assets/techreborn/blockstates/fluids.json b/src/main/resources/assets/techreborn/blockstates/fluids.json index 5bb6f7bc6..3fb4a77b5 100644 --- a/src/main/resources/assets/techreborn/blockstates/fluids.json +++ b/src/main/resources/assets/techreborn/blockstates/fluids.json @@ -1,12 +1,12 @@ { - "forge_marker": 1, - "variants": { - "techreborn.berylium": { - "model": "forge:fluid", - "custom": { - "fluid": "fluidberylium" - } - }, + "forge_marker": 1, + "defaults": { + "model": "forge:fluid" + }, + "variants": { + "techreborn.berylium": [{ + "custom": { "fluid": "fluidberylium" } + }], "techreborn.calcium": { "model": "forge:fluid", "custom": {