Fix model registration. Moved items reg to event.

This commit is contained in:
drcrazy 2018-10-03 17:34:03 +03:00
parent e9c2857db8
commit 4ea5d2a818
7 changed files with 495 additions and 540 deletions

View file

@ -1,109 +0,0 @@
/*
* This file is part of TechReborn, licensed under the MIT License (MIT).
*
* Copyright (c) 2018 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.TechReborn;
import techreborn.blocks.fluid.BlockFluidTechReborn;
import techreborn.init.ModFluids;
/**
* @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.getTranslationKey().substring(5).toLowerCase();
Item item = Item.getItemFromBlock(block);
ModelResourceLocation location = new ModelResourceLocation(
new ResourceLocation(TechReborn.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;
}
});
}
}

View file

@ -0,0 +1,331 @@
/*
* This file is part of TechReborn, licensed under the MIT License (MIT).
*
* Copyright (c) 2018 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 java.util.Arrays;
import java.util.Map;
import com.google.common.collect.Maps;
import net.minecraft.block.Block;
import net.minecraft.block.properties.IProperty;
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.DefaultStateMapper;
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.Mod;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import reborncore.client.models.RebornModelRegistry;
import techreborn.TechReborn;
import techreborn.blocks.fluid.BlockFluidTechReborn;
import techreborn.client.render.ModelDynamicCell;
import techreborn.config.ConfigTechReborn;
import techreborn.init.ModFluids;
import techreborn.init.TRContent;
import techreborn.init.TRContent.Cables;
import techreborn.init.TRContent.Dusts;
import techreborn.init.TRContent.Gems;
import techreborn.init.TRContent.Ingots;
import techreborn.init.TRContent.MachineBlocks;
import techreborn.init.TRContent.Nuggets;
import techreborn.init.TRContent.Ores;
import techreborn.init.TRContent.Parts;
import techreborn.init.TRContent.Plates;
import techreborn.init.TRContent.SmallDusts;
import techreborn.init.TRContent.StorageBlocks;
import techreborn.init.TRContent.Upgrades;
/**
* @author drcrazy
*
*/
@SideOnly(Side.CLIENT)
@Mod.EventBusSubscriber(modid = TechReborn.MOD_ID)
public class ModelRegistryEventHandler {
@SubscribeEvent
public static void registerModels(ModelRegistryEvent event) {
registerBlocks();
registerFluidBlocks();
registerItems();
ModelDynamicCell.init();
RebornModelRegistry.registerModels(TechReborn.MOD_ID);
}
private static void registerBlocks() {
register(TRContent.REFINED_IRON_FENCE, "iron_fence");
register(TRContent.RUBBER_SAPLING, "misc/rubber_sapling");
ResourceLocation oresRL = new ResourceLocation(TechReborn.MOD_ID, "ore");
for (Ores value : Ores.values()) {
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(value.block), 0, new ModelResourceLocation(oresRL, "type=" + value.name));
ModelLoader.setCustomStateMapper(value.block, new DefaultStateMapper() {
@Override
protected ModelResourceLocation getModelResourceLocation(IBlockState state) {
return new ModelResourceLocation(oresRL, "type=" + value.name);
}
});
}
ResourceLocation storageRL = new ResourceLocation(TechReborn.MOD_ID, "storage_block");
for (StorageBlocks value : StorageBlocks.values()) {
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(value.block), 0, new ModelResourceLocation(storageRL, "type=" + value.name));
ModelLoader.setCustomStateMapper(value.block, new DefaultStateMapper() {
@Override
protected ModelResourceLocation getModelResourceLocation(IBlockState state) {
return new ModelResourceLocation(storageRL, "type=" + value.name);
}
});
}
ResourceLocation machineBlockRL = new ResourceLocation(TechReborn.MOD_ID, "machine_block");
for (MachineBlocks value : MachineBlocks.values()) {
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(value.frame), 0, new ModelResourceLocation(machineBlockRL, "type=" + value.name + "_machine_frame"));
ModelLoader.setCustomStateMapper(value.frame, new DefaultStateMapper() {
@Override
protected ModelResourceLocation getModelResourceLocation(IBlockState state) {
return new ModelResourceLocation(machineBlockRL, "type=" + value.name + "_machine_frame");
}
});
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(value.casing), 0, new ModelResourceLocation(machineBlockRL, "type=" + value.name + "_machine_casing"));
ModelLoader.setCustomStateMapper(value.casing, new DefaultStateMapper() {
@Override
protected ModelResourceLocation getModelResourceLocation(IBlockState state) {
return new ModelResourceLocation(machineBlockRL, "type=" + value.name + "_machine_casing");
}
});
}
ResourceLocation cableRL = new ResourceLocation(TechReborn.MOD_ID, "cable_inv");
for (Cables value : Cables.values()) {
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(value.block), 0,
new ModelResourceLocation(cableRL, "type=" + value.name));
ModelLoader.setCustomStateMapper(value.block, new DefaultStateMapper() {
@Override
protected ModelResourceLocation getModelResourceLocation(IBlockState state) {
Map<IProperty<?>, Comparable<?>> map = Maps.newLinkedHashMap(state.getProperties());
String property = this.getPropertyString(map) + ",ztype=" + value.name;
return new ModelResourceLocation(new ResourceLocation(TechReborn.MOD_ID,
"cable_" + (value.cableThickness == 5 ? "thick" : "thin")), property);
}
});
}
}
private static void registerFluidBlocks() {
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 registerItems() {
// Armor
register(TRContent.CLOAKING_DEVICE, "armor/cloaking_device");
register(TRContent.LAPOTRONIC_ORBPACK, "armor/lapotronic_orbpack");
register(TRContent.LITHIUM_ION_BATPACK, "armor/lithium_batpack");
// Battery
register(TRContent.RED_CELL_BATTERY, "battery/re_battery");
register(TRContent.LITHIUM_ION_BATTERY, "battery/lithium_battery");
register(TRContent.ENERGY_CRYSTAL, "battery/energy_crystal");
register(TRContent.LAPOTRON_CRYSTAL, "battery/lapotron_crystal");
register(TRContent.LAPOTRONIC_ORB, "battery/lapotronic_orb");
// Tools
register(TRContent.INDUSTRIAL_CHAINSAW, "tool/industrial_chainsaw");
register(TRContent.INDUSTRIAL_DRILL, "tool/industrial_drill");
register(TRContent.INDUSTRIAL_JACKHAMMER, "tool/industrial_jackhammer");
register(TRContent.DEBUG_TOOL, "tool/debug");
register(TRContent.ADVANCED_CHAINSAW, "tool/advanced_chainsaw");
register(TRContent.ADVANCED_DRILL, "tool/advanced_drill");
register(TRContent.ADVANCED_JACKHAMMER, "tool/advanced_jackhammer");
register(TRContent.ELECTRIC_TREE_TAP, "tool/electric_treetap");
register(TRContent.NANOSABER, "tool/nanosaber");
register(TRContent.OMNI_TOOL, "tool/omni_tool");
register(TRContent.ROCK_CUTTER, "tool/rock_cutter");
register(TRContent.BASIC_CHAINSAW, "tool/basic_chainsaw");
register(TRContent.BASIC_DRILL, "tool/basic_drill");
register(TRContent.BASIC_JACKHAMMER, "tool/basic_jackhammer");
register(TRContent.TREE_TAP, "tool/treetap");
register(TRContent.WRENCH, "tool/wrench");
// Other
register(TRContent.FREQUENCY_TRANSMITTER, "misc/frequency_transmitter");
register(TRContent.SCRAP_BOX, "misc/scrapbox");
register(TRContent.MANUAL, "misc/manual");
// Gem armor & tools
if (ConfigTechReborn.enableGemArmorAndTools) {
ResourceLocation armourRL = new ResourceLocation(TechReborn.MOD_ID, "items/armour");
registerBlockstateMultiItem(armourRL, TRContent.RUBY_HELMET, "ruby_helmet");
registerBlockstateMultiItem(armourRL, TRContent.RUBY_CHESTPLATE, "ruby_chestplate");
registerBlockstateMultiItem(armourRL, TRContent.RUBY_LEGGINGS, "ruby_leggings");
registerBlockstateMultiItem(armourRL, TRContent.RUBY_BOOTS, "ruby_boots");
registerBlockstateMultiItem(armourRL, TRContent.SAPPHIRE_HELMET, "sapphire_helmet");
registerBlockstateMultiItem(armourRL, TRContent.SAPPHIRE_CHESTPLATE, "sapphire_chestplate");
registerBlockstateMultiItem(armourRL, TRContent.SAPPHIRE_LEGGINGS, "sapphire_leggings");
registerBlockstateMultiItem(armourRL, TRContent.SAPPHIRE_BOOTS, "sapphire_boots");
registerBlockstateMultiItem(armourRL, TRContent.PERIDOT_HELMET, "peridot_helmet");
registerBlockstateMultiItem(armourRL, TRContent.PERIDOT_CHESTPLATE, "peridot_chestplate");
registerBlockstateMultiItem(armourRL, TRContent.PERIDOT_LEGGINGS, "peridot_leggings");
registerBlockstateMultiItem(armourRL, TRContent.PERIDOT_BOOTS, "peridot_boots");
registerBlockstateMultiItem(armourRL, TRContent.BRONZE_HELMET, "bronze_helmet");
registerBlockstateMultiItem(armourRL, TRContent.BRONZE_CHESTPLATE, "bronze_chestplate");
registerBlockstateMultiItem(armourRL, TRContent.BRONZE_LEGGINGS, "bronze_leggings");
registerBlockstateMultiItem(armourRL, TRContent.BRONZE_BOOTS, "bronze_boots");
ResourceLocation toolRL = new ResourceLocation(TechReborn.MOD_ID, "items/tool");
registerBlockstateMultiItem(toolRL, TRContent.RUBY_PICKAXE, "ruby_pickaxe");
registerBlockstateMultiItem(toolRL, TRContent.RUBY_SWORD, "ruby_sword");
registerBlockstateMultiItem(toolRL, TRContent.RUBY_AXE, "ruby_axe");
registerBlockstateMultiItem(toolRL, TRContent.RUBY_SPADE, "ruby_spade");
registerBlockstateMultiItem(toolRL, TRContent.RUBY_HOE, "ruby_hoe");
registerBlockstateMultiItem(toolRL, TRContent.SAPPHIRE_PICKAXE, "sapphire_pickaxe");
registerBlockstateMultiItem(toolRL, TRContent.SAPPHIRE_SWORD, "sapphire_sword");
registerBlockstateMultiItem(toolRL, TRContent.SAPPHIRE_AXE, "sapphire_axe");
registerBlockstateMultiItem(toolRL, TRContent.SAPPHIRE_SPADE, "sapphire_spade");
registerBlockstateMultiItem(toolRL, TRContent.SAPPHIRE_HOE, "sapphire_hoe");
registerBlockstateMultiItem(toolRL, TRContent.PERIDOT_PICKAXE, "peridot_pickaxe");
registerBlockstateMultiItem(toolRL, TRContent.PERIDOT_SWORD, "peridot_sword");
registerBlockstateMultiItem(toolRL, TRContent.PERIDOT_AXE, "peridot_axe");
registerBlockstateMultiItem(toolRL, TRContent.PERIDOT_SPADE, "peridot_spade");
registerBlockstateMultiItem(toolRL, TRContent.PERIDOT_HOE, "peridot_hoe");
registerBlockstateMultiItem(toolRL, TRContent.BRONZE_PICKAXE, "bronze_pickaxe");
registerBlockstateMultiItem(toolRL, TRContent.BRONZE_SWORD, "bronze_sword");
registerBlockstateMultiItem(toolRL, TRContent.BRONZE_AXE, "bronze_axe");
registerBlockstateMultiItem(toolRL, TRContent.BRONZE_SPADE, "bronze_spade");
registerBlockstateMultiItem(toolRL, TRContent.BRONZE_HOE, "bronze_hoe");
}
ResourceLocation dustsRL = new ResourceLocation(TechReborn.MOD_ID, "items/material/dust");
Arrays.stream(Dusts.values()).forEach(value -> registerBlockstateMultiItem(dustsRL, value.item, value.name));
ResourceLocation dustsSmallRL = new ResourceLocation(TechReborn.MOD_ID, "items/material/small_dust");
Arrays.stream(SmallDusts.values()).forEach(value -> registerBlockstateMultiItem(dustsSmallRL, value.item, value.name));
ResourceLocation gemsRL = new ResourceLocation(TechReborn.MOD_ID, "items/material/gem");
Arrays.stream(Gems.values()).forEach(value -> registerBlockstateMultiItem(gemsRL, value.item, value.name));
ResourceLocation ingotsRL = new ResourceLocation(TechReborn.MOD_ID, "items/material/ingot");
Arrays.stream(Ingots.values()).forEach(value -> registerBlockstateMultiItem(ingotsRL, value.item, value.name));
ResourceLocation nuggetsRL = new ResourceLocation(TechReborn.MOD_ID, "items/material/nugget");
Arrays.stream(Nuggets.values()).forEach(value -> registerBlockstateMultiItem(nuggetsRL, value.item, value.name));
ResourceLocation partsRL = new ResourceLocation(TechReborn.MOD_ID, "items/material/part");
Arrays.stream(Parts.values()).forEach(value -> registerBlockstateMultiItem(partsRL, value.item, value.name));
ResourceLocation platesRL = new ResourceLocation(TechReborn.MOD_ID, "items/material/plate");
Arrays.stream(Plates.values()).forEach(value -> registerBlockstateMultiItem(platesRL, value.item, value.name));
ResourceLocation upgradeRL = new ResourceLocation(TechReborn.MOD_ID, "items/misc/upgrades");
Arrays.stream(Upgrades.values()).forEach(value -> registerBlockstateMultiItem(upgradeRL, value.item, value.name));
}
private static void registerFluidBlockModel(BlockFluidTechReborn block) {
String name = block.getTranslationKey().substring(5).toLowerCase();
Item item = Item.getItemFromBlock(block);
ModelResourceLocation location = new ModelResourceLocation(
new ResourceLocation(TechReborn.MOD_ID, "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;
}
});
}
private static void register(Block block, String name) {
register(block, 0, name);
}
private static void register(Block block, int meta, String name) {
register(Item.getItemFromBlock(block), meta, name);
}
private static void register(Item item, String name) {
register(item, 0, name);
}
private static void register(Item item, int meta, String name) {
ResourceLocation loc = new ResourceLocation(TechReborn.MOD_ID, name);
ModelLoader.setCustomModelResourceLocation(item, meta,
new ModelResourceLocation(loc, "inventory"));
}
private static void registerBlockstateMultiItem(ResourceLocation RL, Item item, String variantName) {
ModelLoader.setCustomModelResourceLocation(item, 0, new ModelResourceLocation(RL, "type=" + variantName));
}
}

View file

@ -7,12 +7,21 @@ import java.util.Arrays;
import net.minecraft.block.Block;
import net.minecraft.block.BlockSlab;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemSlab;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import reborncore.RebornRegistry;
import reborncore.common.blocks.BlockMachineBase;
import reborncore.common.util.BucketHandler;
import techreborn.TechReborn;
import techreborn.api.Reference;
import techreborn.blocks.BlockComputerCube;
import techreborn.blocks.BlockNuke;
import techreborn.blocks.BlockRefinedIronFence;
@ -23,14 +32,57 @@ import techreborn.blocks.BlockRubberPlank;
import techreborn.blocks.BlockRubberPlankSlab;
import techreborn.blocks.BlockRubberPlankStair;
import techreborn.blocks.BlockRubberSapling;
import techreborn.config.ConfigTechReborn;
import techreborn.init.ModRecipes;
import techreborn.init.TRContent;
import techreborn.init.TRContent.Cables;
import techreborn.init.TRContent.Dusts;
import techreborn.init.TRContent.Gems;
import techreborn.init.TRContent.Ingots;
import techreborn.init.TRContent.Machine;
import techreborn.init.TRContent.MachineBlocks;
import techreborn.init.TRContent.Nuggets;
import techreborn.init.TRContent.Ores;
import techreborn.init.TRContent.Parts;
import techreborn.init.TRContent.Plates;
import techreborn.init.TRContent.SmallDusts;
import techreborn.init.TRContent.SolarPanels;
import techreborn.init.TRContent.StorageBlocks;
import techreborn.init.TRContent.Upgrades;
import techreborn.itemblocks.ItemBlockRubberSapling;
import techreborn.items.DynamicCell;
import techreborn.items.ItemFrequencyTransmitter;
import techreborn.items.ItemManual;
import techreborn.items.ItemScrapBox;
import techreborn.items.armor.ItemCloakingDevice;
import techreborn.items.armor.ItemLapotronicOrbpack;
import techreborn.items.armor.ItemLithiumIonBatpack;
import techreborn.items.armor.ItemTRArmour;
import techreborn.items.battery.ItemEnergyCrystal;
import techreborn.items.battery.ItemLapotronCrystal;
import techreborn.items.battery.ItemLapotronicOrb;
import techreborn.items.battery.ItemLithiumIonBattery;
import techreborn.items.battery.ItemRedCellBattery;
import techreborn.items.tool.ItemDebugTool;
import techreborn.items.tool.ItemTreeTap;
import techreborn.items.tool.ItemWrench;
import techreborn.items.tool.advanced.ItemAdvancedChainsaw;
import techreborn.items.tool.advanced.ItemAdvancedDrill;
import techreborn.items.tool.advanced.ItemAdvancedJackhammer;
import techreborn.items.tool.advanced.ItemRockCutter;
import techreborn.items.tool.basic.ItemBasicChainsaw;
import techreborn.items.tool.basic.ItemBasicDrill;
import techreborn.items.tool.basic.ItemBasicJackhammer;
import techreborn.items.tool.basic.ItemElectricTreetap;
import techreborn.items.tool.industrial.ItemIndustrialChainsaw;
import techreborn.items.tool.industrial.ItemIndustrialDrill;
import techreborn.items.tool.industrial.ItemIndustrialJackhammer;
import techreborn.items.tool.industrial.ItemNanosaber;
import techreborn.items.tool.industrial.ItemOmniTool;
import techreborn.items.tool.vanilla.ItemTRAxe;
import techreborn.items.tool.vanilla.ItemTRHoe;
import techreborn.items.tool.vanilla.ItemTRSpade;
import techreborn.items.tool.vanilla.ItemTRSword;
import techreborn.utils.InitUtils;
/**
@ -43,7 +95,6 @@ public class RegistryEventHandler {
@SubscribeEvent
public static void registerBlocks(RegistryEvent.Register<Block> event) {
Arrays.stream(Ores.values()).forEach(value -> RebornRegistry.registerBlock(value.block));
Arrays.stream(StorageBlocks.values()).forEach(value -> RebornRegistry.registerBlock(value.block));
Arrays.stream(MachineBlocks.values()).forEach(value -> {
@ -76,5 +127,117 @@ public class RegistryEventHandler {
TechReborn.LOGGER.debug("TechReborns Blocks Loaded");
}
@SubscribeEvent
public static void registerItems(RegistryEvent.Register<Item> event) {
Arrays.stream(Ingots.values()).forEach(value -> RebornRegistry.registerItem(value.item));
Arrays.stream(Nuggets.values()).forEach(value -> RebornRegistry.registerItem(value.item));
Arrays.stream(Gems.values()).forEach(value -> RebornRegistry.registerItem(value.item));
Arrays.stream(Dusts.values()).forEach(value -> RebornRegistry.registerItem(value.item));
Arrays.stream(SmallDusts.values()).forEach(value -> RebornRegistry.registerItem(value.item));
Arrays.stream(Plates.values()).forEach(value -> RebornRegistry.registerItem(value.item));
Arrays.stream(Parts.values()).forEach(value -> RebornRegistry.registerItem(value.item));
Arrays.stream(Upgrades.values()).forEach(value -> RebornRegistry.registerItem(value.item));
// Gem armor & tools
if (ConfigTechReborn.enableGemArmorAndTools) {
//Todo: repair with tags
RebornRegistry.registerItem(TRContent.BRONZE_SWORD = InitUtils.setup(new ItemTRSword(Reference.BRONZE, "ingotBronze"), "bronze_sword"));
RebornRegistry.registerItem(TRContent.BRONZE_PICKAXE = InitUtils.setup(new ItemTRSword(Reference.BRONZE, "ingotBronze"), "bronze_pickaxe"));
RebornRegistry.registerItem(TRContent.BRONZE_SPADE = InitUtils.setup(new ItemTRSpade(Reference.BRONZE, "ingotBronze"), "bronze_spade"));
RebornRegistry.registerItem(TRContent.BRONZE_AXE = InitUtils.setup(new ItemTRAxe(Reference.BRONZE, "ingotBronze"), "bronze_axe"));
RebornRegistry.registerItem(TRContent.BRONZE_HOE = InitUtils.setup(new ItemTRHoe(Reference.BRONZE, "ingotBronze"), "bronze_hoe"));
RebornRegistry.registerItem(TRContent.BRONZE_HELMET = InitUtils.setup(new ItemTRArmour(Reference.BRONZE_ARMOUR, EntityEquipmentSlot.HEAD, "ingotBronze"), "bronze_helmet"));
RebornRegistry.registerItem(TRContent.BRONZE_CHESTPLATE = InitUtils.setup(new ItemTRArmour(Reference.BRONZE_ARMOUR, EntityEquipmentSlot.CHEST, "ingotBronze"), "bronze_chestplate"));
RebornRegistry.registerItem(TRContent.BRONZE_LEGGINGS = InitUtils.setup(new ItemTRArmour(Reference.BRONZE_ARMOUR, EntityEquipmentSlot.LEGS, "ingotBronze"), "bronze_leggings"));
RebornRegistry.registerItem(TRContent.BRONZE_BOOTS = InitUtils.setup(new ItemTRArmour(Reference.BRONZE_ARMOUR, EntityEquipmentSlot.FEET, "ingotBronze"), "bronze_boots"));
RebornRegistry.registerItem(TRContent.RUBY_SWORD = InitUtils.setup(new ItemTRSword(Reference.RUBY, "gemRuby"), "ruby_sword"));
RebornRegistry.registerItem(TRContent.RUBY_PICKAXE = InitUtils.setup(new ItemTRSword(Reference.RUBY, "gemRuby"), "ruby_pickaxe"));
RebornRegistry.registerItem(TRContent.RUBY_SPADE = InitUtils.setup(new ItemTRSpade(Reference.RUBY, "gemRuby"), "ruby_spade"));
RebornRegistry.registerItem(TRContent.RUBY_AXE = InitUtils.setup(new ItemTRAxe(Reference.RUBY, "gemRuby"), "ruby_axe"));
RebornRegistry.registerItem(TRContent.RUBY_HOE = InitUtils.setup(new ItemTRHoe(Reference.RUBY, "gemRuby"), "ruby_hoe"));
RebornRegistry.registerItem(TRContent.RUBY_HELMET = InitUtils.setup(new ItemTRArmour(Reference.RUBY_ARMOUR, EntityEquipmentSlot.HEAD, "gemRuby"), "ruby_helmet"));
RebornRegistry.registerItem(TRContent.RUBY_CHESTPLATE = InitUtils.setup(new ItemTRArmour(Reference.RUBY_ARMOUR, EntityEquipmentSlot.CHEST, "gemRuby"), "ruby_chestplate"));
RebornRegistry.registerItem(TRContent.RUBY_LEGGINGS = InitUtils.setup(new ItemTRArmour(Reference.RUBY_ARMOUR, EntityEquipmentSlot.LEGS, "gemRuby"), "ruby_leggings"));
RebornRegistry.registerItem(TRContent.RUBY_BOOTS = InitUtils.setup(new ItemTRArmour(Reference.RUBY_ARMOUR, EntityEquipmentSlot.FEET, "gemRuby"), "ruby_boots"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_SWORD = InitUtils.setup(new ItemTRSword(Reference.SAPPHIRE, "gemSapphire"), "sapphire_sword"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_PICKAXE = InitUtils.setup(new ItemTRSword(Reference.SAPPHIRE, "gemSapphire"), "sapphire_pickaxe"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_SPADE = InitUtils.setup(new ItemTRSpade(Reference.SAPPHIRE, "gemSapphire"), "sapphire_spade"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_AXE = InitUtils.setup(new ItemTRAxe(Reference.SAPPHIRE, "gemSapphire"), "sapphire_axe"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_HOE = InitUtils.setup(new ItemTRHoe(Reference.SAPPHIRE, "gemSapphire"), "sapphire_hoe"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_HELMET = InitUtils.setup(new ItemTRArmour(Reference.SAPPHIRE_ARMOUR, EntityEquipmentSlot.HEAD, "gemSapphire"), "sapphire_helmet"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_CHESTPLATE = InitUtils.setup(new ItemTRArmour(Reference.SAPPHIRE_ARMOUR, EntityEquipmentSlot.CHEST, "gemSapphire"), "sapphire_chestplate"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_LEGGINGS = InitUtils.setup(new ItemTRArmour(Reference.SAPPHIRE_ARMOUR, EntityEquipmentSlot.LEGS, "gemSapphire"), "sapphire_leggings"));
RebornRegistry.registerItem(TRContent.SAPPHIRE_BOOTS = InitUtils.setup(new ItemTRArmour(Reference.SAPPHIRE_ARMOUR, EntityEquipmentSlot.FEET, "gemSapphire"), "sapphire_boots"));
RebornRegistry.registerItem(TRContent.PERIDOT_SWORD = InitUtils.setup(new ItemTRSword(Reference.PERIDOT, "gemPeridot"), "peridot_sword"));
RebornRegistry.registerItem(TRContent.PERIDOT_PICKAXE = InitUtils.setup(new ItemTRSword(Reference.PERIDOT, "gemPeridot"), "peridot_pickaxe"));
RebornRegistry.registerItem(TRContent.PERIDOT_SPADE = InitUtils.setup(new ItemTRSpade(Reference.PERIDOT, "gemPeridot"), "peridot_spade"));
RebornRegistry.registerItem(TRContent.PERIDOT_AXE = InitUtils.setup(new ItemTRAxe(Reference.PERIDOT, "gemPeridot"), "peridot_axe"));
RebornRegistry.registerItem(TRContent.PERIDOT_HOE = InitUtils.setup(new ItemTRHoe(Reference.PERIDOT, "gemPeridot"), "peridot_hoe"));
RebornRegistry.registerItem(TRContent.PERIDOT_HELMET = InitUtils.setup(new ItemTRArmour(Reference.PERIDOT_ARMOUR, EntityEquipmentSlot.HEAD, "gemPeridot"), "peridot_helmet"));
RebornRegistry.registerItem(TRContent.PERIDOT_CHESTPLATE = InitUtils.setup(new ItemTRArmour(Reference.PERIDOT_ARMOUR, EntityEquipmentSlot.CHEST, "gemPeridot"), "peridot_chestplate"));
RebornRegistry.registerItem(TRContent.PERIDOT_LEGGINGS = InitUtils.setup(new ItemTRArmour(Reference.PERIDOT_ARMOUR, EntityEquipmentSlot.LEGS, "gemPeridot"), "peridot_leggings"));
RebornRegistry.registerItem(TRContent.PERIDOT_BOOTS = InitUtils.setup(new ItemTRArmour(Reference.PERIDOT_ARMOUR, EntityEquipmentSlot.FEET, "gemPeridot"), "peridot_boots"));
}
// Battery
RebornRegistry.registerItem(TRContent.RED_CELL_BATTERY = InitUtils.setup(new ItemRedCellBattery(), "red_cell_battery"));
RebornRegistry.registerItem(TRContent.LITHIUM_ION_BATTERY = InitUtils.setup(new ItemLithiumIonBattery(), "lithium_ion_battery"));
RebornRegistry.registerItem(TRContent.LITHIUM_ION_BATPACK = InitUtils.setup(new ItemLithiumIonBatpack(), "lithium_ion_batpack"));
RebornRegistry.registerItem(TRContent.ENERGY_CRYSTAL = InitUtils.setup(new ItemEnergyCrystal(), "energy_crystal"));
RebornRegistry.registerItem(TRContent.LAPOTRON_CRYSTAL = InitUtils.setup(new ItemLapotronCrystal(), "lapotron_crystal"));
RebornRegistry.registerItem(TRContent.LAPOTRONIC_ORB = InitUtils.setup(new ItemLapotronicOrb(), "lapotronic_orb"));
RebornRegistry.registerItem(TRContent.LAPOTRONIC_ORBPACK = InitUtils.setup(new ItemLapotronicOrbpack(), "lapotronic_orbpack"));
// Tools
RebornRegistry.registerItem(TRContent.TREE_TAP = InitUtils.setup(new ItemTreeTap(), "treetap"));
RebornRegistry.registerItem(TRContent.WRENCH = InitUtils.setup(new ItemWrench(), "wrench"));
RebornRegistry.registerItem(TRContent.BASIC_DRILL = InitUtils.setup(new ItemBasicDrill(), "basic_drill"));
RebornRegistry.registerItem(TRContent.BASIC_CHAINSAW = InitUtils.setup(new ItemBasicChainsaw(), "basic_chainsaw"));
RebornRegistry.registerItem(TRContent.BASIC_JACKHAMMER = InitUtils.setup(new ItemBasicJackhammer(), "basic_jackhammer"));
RebornRegistry.registerItem(TRContent.ELECTRIC_TREE_TAP = InitUtils.setup(new ItemElectricTreetap(), "electric_treetap"));
RebornRegistry.registerItem(TRContent.ADVANCED_DRILL = InitUtils.setup(new ItemAdvancedDrill(), "advanced_drill"));
RebornRegistry.registerItem(TRContent.ADVANCED_CHAINSAW = InitUtils.setup(new ItemAdvancedChainsaw(), "advanced_chainsaw"));
RebornRegistry.registerItem(TRContent.ADVANCED_JACKHAMMER = InitUtils.setup(new ItemAdvancedJackhammer(), "advanced_jackhammer"));
RebornRegistry.registerItem(TRContent.ROCK_CUTTER = InitUtils.setup(new ItemRockCutter(), "rock_cutter"));
RebornRegistry.registerItem(TRContent.INDUSTRIAL_DRILL = InitUtils.setup(new ItemIndustrialDrill(), "industrial_drill"));
RebornRegistry.registerItem(TRContent.INDUSTRIAL_CHAINSAW = InitUtils.setup(new ItemIndustrialChainsaw(), "industrial_chainsaw"));
RebornRegistry.registerItem(TRContent.INDUSTRIAL_JACKHAMMER = InitUtils.setup(new ItemIndustrialJackhammer(), "industrial_jackhammer"));
RebornRegistry.registerItem(TRContent.NANOSABER = InitUtils.setup(new ItemNanosaber(), "nanosaber"));
RebornRegistry.registerItem(TRContent.OMNI_TOOL = InitUtils.setup(new ItemOmniTool(), "omni_tool"));
// Armor
RebornRegistry.registerItem(TRContent.CLOAKING_DEVICE = InitUtils.setup(new ItemCloakingDevice(), "cloaking_device"));
// Other
RebornRegistry.registerItem(TRContent.FREQUENCY_TRANSMITTER = InitUtils.setup(new ItemFrequencyTransmitter(), "frequency_transmitter"));
RebornRegistry.registerItem(TRContent.SCRAP_BOX = InitUtils.setup(new ItemScrapBox(), "scrap_box"));
RebornRegistry.registerItem(TRContent.MANUAL = InitUtils.setup(new ItemManual(), "manual"));
RebornRegistry.registerItem(TRContent.DEBUG_TOOL = InitUtils.setup(new ItemDebugTool(), "debug_tool"));
RebornRegistry.registerItem(TRContent.CELL = InitUtils.setup(new DynamicCell(), "cell"));
MinecraftForge.EVENT_BUS.register(BucketHandler.INSTANCE);
// TODO: do we need this at all?
BlockMachineBase.advancedFrameStack = new ItemStack(TRContent.MachineBlocks.ADVANCED.getFrame());
BlockMachineBase.basicFrameStack = new ItemStack(TRContent.MachineBlocks.BASIC.getFrame());
TechReborn.LOGGER.debug("TechReborns Items Loaded");
}
@SubscribeEvent(priority = EventPriority.LOW)//LOW is used as we want it to load as late as possible, but before crafttweaker
public static void registerRecipes(RegistryEvent.Register<IRecipe> event) {
//Register ModRecipes
ModRecipes.init();
}
}