NaturesAura/src/main/java/de/ellpeck/naturesaura/reg/ModRegistry.java

260 lines
11 KiB
Java
Raw Normal View History

2018-10-13 20:35:18 +02:00
package de.ellpeck.naturesaura.reg;
2019-11-04 19:08:49 +01:00
import de.ellpeck.naturesaura.ModConfig;
2018-10-13 20:35:18 +02:00
import de.ellpeck.naturesaura.NaturesAura;
2019-11-04 19:08:49 +01:00
import de.ellpeck.naturesaura.blocks.*;
2020-01-21 23:02:39 +01:00
import de.ellpeck.naturesaura.entities.EntityEffectInhibitor;
import de.ellpeck.naturesaura.entities.EntityMoverMinecart;
2019-11-04 19:08:49 +01:00
import de.ellpeck.naturesaura.items.*;
import de.ellpeck.naturesaura.items.tools.*;
2020-01-21 23:02:39 +01:00
import de.ellpeck.naturesaura.potion.PotionBreathless;
2018-10-13 20:35:18 +02:00
import net.minecraft.block.Block;
2019-11-04 19:08:49 +01:00
import net.minecraft.block.SoundType;
import net.minecraft.block.material.Material;
2020-01-21 23:02:39 +01:00
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
2019-11-04 19:08:49 +01:00
import net.minecraft.inventory.EquipmentSlotType;
2019-10-20 22:30:49 +02:00
import net.minecraft.item.BlockItem;
2019-11-04 19:08:49 +01:00
import net.minecraft.item.Item;
2019-10-20 22:30:49 +02:00
import net.minecraft.potion.Effect;
2019-11-04 19:08:49 +01:00
import net.minecraft.tileentity.TileEntityType;
import net.minecraft.world.dimension.DimensionType;
import net.minecraftforge.event.RegistryEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
2018-10-13 20:35:18 +02:00
2020-01-22 01:32:26 +01:00
import java.util.HashSet;
import java.util.Set;
2018-10-13 20:35:18 +02:00
2020-01-22 01:32:26 +01:00
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.MOD)
2018-10-13 20:35:18 +02:00
public final class ModRegistry {
2020-01-22 01:32:26 +01:00
private static final Set<IModItem> ALL_ITEMS = new HashSet<>();
2018-10-13 20:35:18 +02:00
2018-11-29 17:58:47 +01:00
public static void add(IModItem item) {
2018-10-13 20:35:18 +02:00
ALL_ITEMS.add(item);
2020-01-22 01:32:26 +01:00
item.getRegistryEntry().setRegistryName(item.getBaseName());
2018-10-13 20:35:18 +02:00
}
2019-11-04 19:08:49 +01:00
@SubscribeEvent
public static void registerBlocks(RegistryEvent.Register<Block> event) {
2020-01-22 01:32:26 +01:00
BlockImpl temp;
2019-11-04 19:08:49 +01:00
event.getRegistry().registerAll(
new BlockAncientLog("ancient_log"),
new BlockAncientLog("ancient_bark"),
2020-01-22 01:32:26 +01:00
temp = new BlockImpl("ancient_planks", ModBlocks.prop(Material.WOOD).sound(SoundType.WOOD).hardnessAndResistance(2F)),
new BlockStairsNA("ancient_stairs", temp::getDefaultState, ModBlocks.prop(temp)),
new Slab("ancient_slab", ModBlocks.prop(temp)),
2019-11-04 19:08:49 +01:00
new BlockAncientLeaves(),
new BlockAncientSapling(),
new BlockNatureAltar(),
new BlockDecayedLeaves(),
new BlockGoldenLeaves(),
new BlockGoldPowder(),
new BlockWoodStand(),
2020-01-22 01:32:26 +01:00
temp = new BlockImpl("infused_stone", ModBlocks.prop(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(1.75F)),
new BlockStairsNA("infused_stairs", temp::getDefaultState, ModBlocks.prop(temp)),
new Slab("infused_slab", ModBlocks.prop(temp)),
temp = new BlockImpl("infused_brick", ModBlocks.prop(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(1.5F)),
new BlockStairsNA("infused_brick_stairs", temp::getDefaultState, ModBlocks.prop(temp)),
new Slab("infused_brick_slab", ModBlocks.prop(temp)),
2019-11-04 19:08:49 +01:00
new BlockFurnaceHeater(),
new BlockPotionGenerator(),
new BlockAuraDetector(),
new BlockImpl("conversion_catalyst", ModBlocks.prop(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(2.5F)),
new BlockImpl("crushing_catalyst", ModBlocks.prop(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(2.5F)),
new BlockFlowerGenerator(),
new BlockPlacer(),
new BlockHopperUpgrade(),
new BlockFieldCreator(),
new BlockOakGenerator(),
new BlockImpl("infused_iron_block", ModBlocks.prop(Material.IRON).sound(SoundType.METAL).hardnessAndResistance(3F)),
new BlockOfferingTable(),
new BlockPickupStopper(),
new BlockSpawnLamp(),
new BlockAnimalGenerator(),
new BlockEndFlower(),
new BlockGratedChute(),
new BlockAnimalSpawner(),
new BlockAutoCrafter(),
new BlockImpl("gold_brick", ModBlocks.prop(Material.ROCK).sound(SoundType.STONE).hardnessAndResistance(2F)),
new BlockMossGenerator(),
new BlockTimeChanger(),
new BlockGeneratorLimitRemover(),
new BlockEnderCrate(),
new BlockPowderPlacer(),
new BlockFireworkGenerator(),
new BlockProjectileGenerator(),
new BlockDimensionRail("overworld", DimensionType.OVERWORLD, DimensionType.THE_NETHER, DimensionType.THE_END),
new BlockDimensionRail("nether", DimensionType.THE_NETHER, DimensionType.OVERWORLD),
new BlockDimensionRail("end", DimensionType.THE_END, DimensionType.OVERWORLD)
);
if (ModConfig.enabledFeatures.rfConverter)
2019-11-04 19:08:49 +01:00
event.getRegistry().register(new BlockRFConverter());
if (ModConfig.enabledFeatures.chunkLoader)
2019-11-04 19:08:49 +01:00
event.getRegistry().register(new BlockChunkLoader());
}
@SubscribeEvent
public static void registerItems(RegistryEvent.Register<Item> event) {
2020-01-22 01:32:26 +01:00
for (IModItem block : ALL_ITEMS) {
if (block instanceof Block) {
BlockItem item = new BlockItem((Block) block, new Item.Properties().group(NaturesAura.CREATIVE_TAB));
item.setRegistryName(block.getBaseName());
event.getRegistry().register(item);
2019-11-04 19:08:49 +01:00
}
}
2020-01-22 01:32:26 +01:00
Item temp;
2019-11-04 19:08:49 +01:00
event.getRegistry().registerAll(
new Pickaxe("infused_iron_pickaxe", NAItemTier.INFUSED, 8, 3.2F),
new Axe("infused_iron_axe", NAItemTier.INFUSED, 8.25F, 3.2F),
new Shovel("infused_iron_shovel", NAItemTier.INFUSED, 8.25F, 3.2F),
new Hoe("infused_iron_hoe", NAItemTier.INFUSED, 3.2F),
new Sword("infused_iron_sword", NAItemTier.INFUSED, 3, 3), // TODO dmg and speed values need to be changed
2019-11-04 19:08:49 +01:00
new Armor("infused_iron_helmet", NAArmorMaterial.INFUSED, EquipmentSlotType.HEAD),
new Armor("infused_iron_chest", NAArmorMaterial.INFUSED, EquipmentSlotType.CHEST),
new Armor("infused_iron_pants", NAArmorMaterial.INFUSED, EquipmentSlotType.LEGS),
new Armor("infused_iron_shoes", NAArmorMaterial.INFUSED, EquipmentSlotType.FEET),
new Eye("eye"),
new Eye("eye_improved"),
new GoldFiber(),
new ItemImpl("gold_leaf"),
new ItemImpl("infused_iron"),
new ItemImpl("ancient_stick"),
new ColorChanger(),
new AuraCache("aura_cache", 400000),
new AuraCache("aura_trove", 1200000),
new ShockwaveCreator(),
new MultiblockMaker(),
2020-01-22 01:32:26 +01:00
temp = new ItemImpl("bottle_two_the_rebottling"),
new AuraBottle(temp),
2019-11-04 19:08:49 +01:00
new ItemImpl("farming_stencil"),
new ItemImpl("sky_ingot"),
new Glowing("calling_spirit"),
new EffectPowder(),
new BirthSpirit(),
new MoverMinecart(),
new RangeVisualizer(),
new ItemImpl("clock_hand"),
new ItemImpl("token_joy"),
new ItemImpl("token_fear"),
new ItemImpl("token_anger"),
new ItemImpl("token_sorrow"),
new ItemImpl("token_euphoria"),
new ItemImpl("token_terror"),
new ItemImpl("token_rage"),
new ItemImpl("token_grief"),
new EnderAccess(),
new CaveFinder()
);
}
@SubscribeEvent
public static void registerTiles(RegistryEvent.Register<TileEntityType<?>> event) {
2020-01-21 23:02:39 +01:00
for (IModItem item : ALL_ITEMS) {
2020-01-22 01:32:26 +01:00
if (item instanceof ModTileType)
event.getRegistry().register(((ModTileType) item).type);
2020-01-21 23:02:39 +01:00
}
2019-11-04 19:08:49 +01:00
}
@SubscribeEvent
public static void registerPotions(RegistryEvent.Register<Effect> event) {
2020-01-21 23:02:39 +01:00
event.getRegistry().registerAll(
new PotionBreathless()
);
}
2019-11-04 19:08:49 +01:00
2020-01-21 23:02:39 +01:00
@SubscribeEvent
public static void registerEntities(RegistryEvent.Register<EntityType<?>> event) {
event.getRegistry().registerAll(
EntityType.Builder.create(EntityMoverMinecart::new, EntityClassification.MISC)
.setTrackingRange(64).setUpdateInterval(3).immuneToFire().build(NaturesAura.MOD_ID + ":mover_minecart")
.setRegistryName("mover_cart"),
EntityType.Builder.create(EntityEffectInhibitor::new, EntityClassification.MISC)
.setTrackingRange(64).setUpdateInterval(20).immuneToFire().build(NaturesAura.MOD_ID + ":effect_inhibitor")
.setRegistryName("effect_inhibitor")
);
2019-11-04 19:08:49 +01:00
}
/*
2019-10-20 22:30:49 +02:00
private static void registerPotion(Effect potion, String name) {
potion.setRegistryName("potion." + NaturesAura.MOD_ID + "." + name + ".name");
2018-11-29 17:58:47 +01:00
potion.setRegistryName(NaturesAura.MOD_ID, name);
ForgeRegistries.POTIONS.register(potion);
}
2019-10-20 22:30:49 +02:00
private static void registerItem(Item item, String name, ItemGroup tab) {
2018-10-13 20:35:18 +02:00
item.setRegistryName(NaturesAura.MOD_ID, name);
ForgeRegistries.ITEMS.register(item);
2018-11-29 17:58:47 +01:00
item.setCreativeTab(tab);
2018-10-13 20:35:18 +02:00
}
2019-10-20 22:30:49 +02:00
private static void registerBlock(Block block, String name, BlockItem item, ItemGroup tab) {
2018-10-13 20:45:32 +02:00
block.setTranslationKey(NaturesAura.MOD_ID + "." + name);
2018-10-13 20:35:18 +02:00
block.setRegistryName(NaturesAura.MOD_ID, name);
ForgeRegistries.BLOCKS.register(block);
if (item != null) {
item.setRegistryName(block.getRegistryName());
ForgeRegistries.ITEMS.register(item);
}
2018-10-13 20:35:18 +02:00
block.setCreativeTab(tab);
2018-11-29 17:58:47 +01:00
}
2019-10-20 22:30:49 +02:00
private static ItemGroup getTab(IModItem item) {
2019-11-04 19:08:49 +01:00
if (item instanceof ICreativeItem) {
return ((ICreativeItem) item).getGroupToAdd();
}
2018-11-29 17:58:47 +01:00
return null;
2018-10-13 20:35:18 +02:00
}
2019-11-04 19:08:49 +01:00
public static void preInit(FMLCommonSetupEvent event) {
2018-10-13 20:35:18 +02:00
for (IModItem item : ALL_ITEMS) {
2018-11-29 17:58:47 +01:00
if (item instanceof Item) {
registerItem((Item) item, item.getBaseName(), getTab(item));
} else if (item instanceof Block) {
2018-10-13 20:35:18 +02:00
Block block = (Block) item;
2019-10-20 22:30:49 +02:00
BlockItem itemBlock;
2019-11-04 19:08:49 +01:00
if (item instanceof ICustomItemBlockProvider) {
2018-10-13 20:35:18 +02:00
itemBlock = ((ICustomItemBlockProvider) item).getItemBlock();
2019-11-04 19:08:49 +01:00
} else {
2019-10-20 22:30:49 +02:00
itemBlock = new BlockItem(block);
2019-11-04 19:08:49 +01:00
}
2018-10-13 20:35:18 +02:00
2018-11-29 17:58:47 +01:00
registerBlock(block, item.getBaseName(), itemBlock, getTab(item));
2019-11-04 19:08:49 +01:00
} else if (item instanceof Effect) {
2019-10-20 22:30:49 +02:00
registerPotion((Effect) item, item.getBaseName());
2019-11-04 19:08:49 +01:00
}
2018-10-13 20:35:18 +02:00
if (item instanceof IModelProvider) {
Map<ItemStack, ModelResourceLocation> models = ((IModelProvider) item).getModelLocations();
for (ItemStack stack : models.keySet())
NaturesAura.proxy.registerRenderer(stack, models.get(stack));
2018-10-13 20:35:18 +02:00
}
item.onPreInit(event);
}
}
*/
2018-10-13 20:35:18 +02:00
2020-01-22 01:32:26 +01:00
public static void init() {
2018-10-13 20:35:18 +02:00
for (IModItem item : ALL_ITEMS) {
2019-11-04 19:08:49 +01:00
if (item instanceof IColorProvidingBlock) {
2018-10-13 20:35:18 +02:00
NaturesAura.proxy.addColorProvidingBlock((IColorProvidingBlock) item);
2019-11-04 19:08:49 +01:00
}
if (item instanceof IColorProvidingItem) {
2018-10-13 20:35:18 +02:00
NaturesAura.proxy.addColorProvidingItem((IColorProvidingItem) item);
2019-11-04 19:08:49 +01:00
}
if (item instanceof ITESRProvider) {
NaturesAura.proxy.registerTESR((ITESRProvider) item);
2019-11-04 19:08:49 +01:00
}
2018-10-13 20:35:18 +02:00
}
}
}