2018-10-13 20:35:18 +02:00
|
|
|
package de.ellpeck.naturesaura.reg;
|
|
|
|
|
2020-01-23 16:05:52 +01:00
|
|
|
import de.ellpeck.naturesaura.Helper;
|
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-23 16:05:52 +01:00
|
|
|
import de.ellpeck.naturesaura.blocks.tiles.ModTileEntities;
|
2020-01-21 23:02:39 +01:00
|
|
|
import de.ellpeck.naturesaura.entities.EntityEffectInhibitor;
|
|
|
|
import de.ellpeck.naturesaura.entities.EntityMoverMinecart;
|
2020-01-23 16:05:52 +01:00
|
|
|
import de.ellpeck.naturesaura.entities.ModEntities;
|
2019-11-04 19:08:49 +01:00
|
|
|
import de.ellpeck.naturesaura.items.*;
|
|
|
|
import de.ellpeck.naturesaura.items.tools.*;
|
2020-01-23 16:05:52 +01:00
|
|
|
import de.ellpeck.naturesaura.misc.BlockLootProvider;
|
|
|
|
import de.ellpeck.naturesaura.misc.BlockTagProvider;
|
|
|
|
import de.ellpeck.naturesaura.misc.ItemTagProvider;
|
|
|
|
import de.ellpeck.naturesaura.potion.ModPotions;
|
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-23 16:05:52 +01:00
|
|
|
import net.minecraft.data.DataGenerator;
|
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;
|
2020-01-23 16:05:52 +01:00
|
|
|
import net.minecraftforge.fml.event.lifecycle.GatherDataEvent;
|
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-23 16:05:52 +01:00
|
|
|
public 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)
|
|
|
|
);
|
|
|
|
|
2020-01-21 17:46:32 +01:00
|
|
|
if (ModConfig.enabledFeatures.rfConverter)
|
2019-11-04 19:08:49 +01:00
|
|
|
event.getRegistry().register(new BlockRFConverter());
|
2020-01-21 17:46:32 +01:00
|
|
|
if (ModConfig.enabledFeatures.chunkLoader)
|
2019-11-04 19:08:49 +01:00
|
|
|
event.getRegistry().register(new BlockChunkLoader());
|
2020-01-23 16:05:52 +01:00
|
|
|
|
|
|
|
Helper.populateObjectHolders(ModBlocks.class, event.getRegistry());
|
2019-11-04 19:08:49 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@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),
|
2020-01-21 17:46:32 +01:00
|
|
|
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()
|
|
|
|
);
|
2020-01-23 16:05:52 +01:00
|
|
|
Helper.populateObjectHolders(ModItems.class, event.getRegistry());
|
2019-11-04 19:08:49 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
@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
|
|
|
}
|
2020-01-23 16:05:52 +01:00
|
|
|
Helper.populateObjectHolders(ModTileEntities.class, event.getRegistry());
|
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()
|
|
|
|
);
|
2020-01-23 16:05:52 +01:00
|
|
|
Helper.populateObjectHolders(ModPotions.class, event.getRegistry());
|
2020-01-21 23:02:39 +01:00
|
|
|
}
|
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")
|
|
|
|
);
|
2020-01-23 16:05:52 +01:00
|
|
|
Helper.populateObjectHolders(ModEntities.class, event.getRegistry());
|
2018-11-29 17:58:47 +01:00
|
|
|
}
|
|
|
|
|
2020-01-23 16:05:52 +01:00
|
|
|
@SubscribeEvent
|
|
|
|
public static void gatherData(GatherDataEvent event) {
|
|
|
|
DataGenerator generator = event.getGenerator();
|
|
|
|
generator.addProvider(new BlockLootProvider(generator));
|
|
|
|
generator.addProvider(new BlockTagProvider(generator));
|
|
|
|
generator.addProvider(new ItemTagProvider(generator));
|
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) {
|
2020-01-23 16:05:52 +01:00
|
|
|
if (item instanceof IColorProvidingBlock)
|
2018-10-13 20:35:18 +02:00
|
|
|
NaturesAura.proxy.addColorProvidingBlock((IColorProvidingBlock) item);
|
2020-01-23 16:05:52 +01:00
|
|
|
if (item instanceof IColorProvidingItem)
|
2018-10-13 20:35:18 +02:00
|
|
|
NaturesAura.proxy.addColorProvidingItem((IColorProvidingItem) item);
|
2020-01-23 16:05:52 +01:00
|
|
|
if (item instanceof ITESRProvider)
|
2018-11-21 20:36:55 +01:00
|
|
|
NaturesAura.proxy.registerTESR((ITESRProvider) item);
|
2018-10-13 20:35:18 +02:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|