Move commonly used API systems to a plugin based system
Create a class that implements IBloodMagicPlugin and annotate it with `@BloodMagicPlugin`. The `register` method will be called during init. Currently implemented systems: - Blacklisting - Teleposer - Teleposer (entity) - Transposition - Well of Suffering - Green Grove - Setting sacrificial values - Adding altar components
This commit is contained in:
parent
5fcdd978d7
commit
554c9852e6
86 changed files with 528 additions and 496 deletions
134
src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagic.java
Normal file
134
src/main/java/WayofTime/bloodmagic/core/RegistrarBloodMagic.java
Normal file
|
@ -0,0 +1,134 @@
|
|||
package WayofTime.bloodmagic.core;
|
||||
|
||||
import WayofTime.bloodmagic.BloodMagic;
|
||||
import WayofTime.bloodmagic.api.orb.BloodOrb;
|
||||
import WayofTime.bloodmagic.api.registry.OrbRegistry;
|
||||
import WayofTime.bloodmagic.entity.mob.*;
|
||||
import WayofTime.bloodmagic.entity.projectile.*;
|
||||
import WayofTime.bloodmagic.potion.PotionBloodMagic;
|
||||
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
|
||||
import net.minecraft.init.MobEffects;
|
||||
import net.minecraft.potion.Potion;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.event.ModelRegistryEvent;
|
||||
import net.minecraftforge.client.model.ModelLoader;
|
||||
import net.minecraftforge.event.RegistryEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.registry.EntityEntry;
|
||||
import net.minecraftforge.fml.common.registry.EntityRegistry;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import net.minecraftforge.registries.IForgeRegistry;
|
||||
import net.minecraftforge.registries.RegistryBuilder;
|
||||
|
||||
@Mod.EventBusSubscriber(modid = BloodMagic.MODID)
|
||||
@GameRegistry.ObjectHolder(BloodMagic.MODID)
|
||||
public class RegistrarBloodMagic {
|
||||
|
||||
@GameRegistry.ObjectHolder("weak")
|
||||
public static final BloodOrb ORB_WEAK = new BloodOrb("", 0, 0);
|
||||
@GameRegistry.ObjectHolder("apprentice")
|
||||
public static final BloodOrb ORB_APPRENTICE = new BloodOrb("", 0, 0);
|
||||
@GameRegistry.ObjectHolder("magician")
|
||||
public static final BloodOrb ORB_MAGICIAN = new BloodOrb("", 0, 0);
|
||||
@GameRegistry.ObjectHolder("master")
|
||||
public static final BloodOrb ORB_MASTER = new BloodOrb("", 0, 0);
|
||||
@GameRegistry.ObjectHolder("archmage")
|
||||
public static final BloodOrb ORB_ARCHMAGE = new BloodOrb("", 0, 0);
|
||||
@GameRegistry.ObjectHolder("transcendent")
|
||||
public static final BloodOrb ORB_TRANSCENDENT = new BloodOrb("", 0, 0);
|
||||
|
||||
public static final Potion BOOST = MobEffects.HASTE;
|
||||
public static final Potion WHIRLWIND = MobEffects.HASTE;
|
||||
public static final Potion PLANAR_BINDING = MobEffects.HASTE;
|
||||
public static final Potion SOUL_SNARE = MobEffects.HASTE;
|
||||
public static final Potion SOUL_FRAY = MobEffects.HASTE;
|
||||
public static final Potion FIRE_FUSE = MobEffects.HASTE;
|
||||
public static final Potion CONSTRICT = MobEffects.HASTE;
|
||||
public static final Potion PLANT_LEECH = MobEffects.HASTE;
|
||||
public static final Potion DEAFNESS = MobEffects.HASTE;
|
||||
public static final Potion BOUNCE = MobEffects.HASTE;
|
||||
public static final Potion CLING = MobEffects.HASTE;
|
||||
public static final Potion SACRIFICIAL_LAMB = MobEffects.HASTE;
|
||||
|
||||
public static IForgeRegistry<BloodOrb> BLOOD_ORBS = null;
|
||||
|
||||
@SubscribeEvent
|
||||
public static void registerBloodOrbs(RegistryEvent.Register<BloodOrb> event) {
|
||||
event.getRegistry().registerAll(
|
||||
new BloodOrb("weak", 1, 5000).setRegistryName("weak"),
|
||||
new BloodOrb("apprentice", 2, 25000).setRegistryName("apprentice"),
|
||||
new BloodOrb("magician", 3, 150000).setRegistryName("magician"),
|
||||
new BloodOrb("master", 4, 1000000).setRegistryName("master"),
|
||||
new BloodOrb("archmage", 5, 10000000).setRegistryName("archmage"),
|
||||
new BloodOrb("transcendent", 6, 30000000).setRegistryName("transcendent")
|
||||
);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void registerPotions(RegistryEvent.Register<Potion> event) {
|
||||
event.getRegistry().registerAll(
|
||||
new PotionBloodMagic("Boost", false, 0xFFFFFF, 0, 1).setRegistryName("boost"),
|
||||
new PotionBloodMagic("Planar Binding", false, 0, 2, 0).setRegistryName("planar_binding"),
|
||||
new PotionBloodMagic("Soul Snare", false, 0xFFFFFF, 3, 0).setRegistryName("soul_snare"),
|
||||
new PotionBloodMagic("Soul Fray", true, 0xFFFFFF, 4, 0).setRegistryName("soul_fray"),
|
||||
new PotionBloodMagic("Fire Fuse", true, 0xFF3333, 5, 0).setRegistryName("fire_fuse"),
|
||||
new PotionBloodMagic("Constriction", true, 0x000000, 6, 0).setRegistryName("constriction"),
|
||||
new PotionBloodMagic("Plant Leech", true, 0x000000, 7, 0).setRegistryName("plant_leech"),
|
||||
new PotionBloodMagic("Deaf", true, 0x000000, 0, 1).setRegistryName("deafness"),
|
||||
new PotionBloodMagic("Bounce", false, 0x000000, 1, 1).setRegistryName("bounce"),
|
||||
new PotionBloodMagic("Cling", false, 0x000000, 2, 1).setRegistryName("cling"),
|
||||
new PotionBloodMagic("S. Lamb", false, 0x000000, 3, 1).setRegistryName("sacrificial_lamb")
|
||||
);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void registerEntities(RegistryEvent.Register<EntityEntry> event) {
|
||||
int entities = 0;
|
||||
EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "blood_light"), EntityBloodLight.class, "BloodLight", ++entities, BloodMagic.instance, 16*4, 3, true);
|
||||
EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "soul_snare"), EntitySoulSnare.class, "SoulSnare", ++entities, BloodMagic.instance, 16*4, 3, true);
|
||||
EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "soul_arrow"), EntitySentientArrow.class, "SoulArrow", ++entities, BloodMagic.instance, 16*4, 3, true);
|
||||
EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "meteor"), EntityMeteor.class, "Meteor", ++entities, BloodMagic.instance, 16*4, 3, true);
|
||||
EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "sentient_specter"), EntitySentientSpecter.class, "SentientSpecter", ++entities, BloodMagic.instance, 16*4, 3, true);
|
||||
EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "mimic"), EntityMimic.class, "Mimic", ++entities, BloodMagic.instance, 16*4, 3, true);
|
||||
EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "corrupted_zombie"), EntityCorruptedZombie.class, "CorruptedZombie", ++entities, BloodMagic.instance, 16*4, 3, true);
|
||||
EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "corrupted_sheep"), EntityCorruptedSheep.class, "CorruptedSheep", ++entities, BloodMagic.instance, 16*4, 3, true);
|
||||
EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "corrupted_chicken"), EntityCorruptedChicken.class, "CorruptedChicken", ++entities, BloodMagic.instance, 16*4, 3, true);
|
||||
EntityRegistry.registerModEntity(new ResourceLocation(BloodMagic.MODID, "corrupted_spider"), EntityCorruptedSpider.class, "CorruptedSpider", ++entities, BloodMagic.instance, 16*4, 3, true);
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onRegistryCreation(RegistryEvent.NewRegistry event) {
|
||||
BLOOD_ORBS = new RegistryBuilder<BloodOrb>()
|
||||
.setName(new ResourceLocation(BloodMagic.MODID, "blood_orb"))
|
||||
.setIDRange(0, Short.MAX_VALUE)
|
||||
.setType(BloodOrb.class)
|
||||
.addCallback((IForgeRegistry.AddCallback<BloodOrb>) (owner, stage, id, obj, oldObj) -> OrbRegistry.tierMap.put(obj.getTier(), OrbRegistry.getOrbStack(obj)))
|
||||
.create();
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SubscribeEvent
|
||||
public static void registerModels(ModelRegistryEvent event) {
|
||||
for (BloodOrb orb : BLOOD_ORBS) {
|
||||
ModelResourceLocation modelLocation = orb.getModelLocation();
|
||||
if (modelLocation == null)
|
||||
modelLocation = new ModelResourceLocation(orb.getRegistryName(), "inventory");
|
||||
|
||||
ModelLoader.registerItemVariants(RegistrarBloodMagicItems.BLOOD_ORB, modelLocation);
|
||||
}
|
||||
|
||||
ModelLoader.setCustomMeshDefinition(RegistrarBloodMagicItems.BLOOD_ORB, stack -> {
|
||||
if (!stack.hasTagCompound())
|
||||
return new ModelResourceLocation(ORB_WEAK.getRegistryName(), "inventory");
|
||||
|
||||
BloodOrb orb = BLOOD_ORBS.getValue(new ResourceLocation(stack.getTagCompound().getString("orb")));
|
||||
if (orb == null || orb.getModelLocation() == null)
|
||||
return new ModelResourceLocation(ORB_WEAK.getRegistryName(), "inventory");
|
||||
|
||||
return orb.getModelLocation();
|
||||
});
|
||||
}
|
||||
}
|
|
@ -0,0 +1,176 @@
|
|||
package WayofTime.bloodmagic.core;
|
||||
|
||||
import WayofTime.bloodmagic.block.*;
|
||||
import com.google.common.collect.Sets;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.material.Material;
|
||||
import net.minecraft.init.Blocks;
|
||||
import net.minecraftforge.event.RegistryEvent;
|
||||
import net.minecraftforge.fluids.FluidRegistry;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import WayofTime.bloodmagic.BloodMagic;
|
||||
import WayofTime.bloodmagic.block.enums.EnumDemonBlock1;
|
||||
import WayofTime.bloodmagic.block.enums.EnumDemonBlock2;
|
||||
import WayofTime.bloodmagic.block.enums.EnumDemonBlock3;
|
||||
import WayofTime.bloodmagic.block.enums.EnumSubWillType;
|
||||
import WayofTime.bloodmagic.block.enums.EnumSubWillType1;
|
||||
import WayofTime.bloodmagic.block.enums.EnumSubWillType2;
|
||||
import WayofTime.bloodmagic.block.enums.EnumSubWillType3;
|
||||
import WayofTime.bloodmagic.block.enums.EnumWillWall;
|
||||
import WayofTime.bloodmagic.tile.TileAlchemyArray;
|
||||
import WayofTime.bloodmagic.tile.TileAlchemyTable;
|
||||
import WayofTime.bloodmagic.tile.TileAltar;
|
||||
import WayofTime.bloodmagic.tile.TileBloodTank;
|
||||
import WayofTime.bloodmagic.tile.TileDemonCrucible;
|
||||
import WayofTime.bloodmagic.tile.TileDemonCrystal;
|
||||
import WayofTime.bloodmagic.tile.TileDemonCrystallizer;
|
||||
import WayofTime.bloodmagic.tile.TileDemonPylon;
|
||||
import WayofTime.bloodmagic.tile.TileDimensionalPortal;
|
||||
import WayofTime.bloodmagic.tile.TileImperfectRitualStone;
|
||||
import WayofTime.bloodmagic.tile.TileIncenseAltar;
|
||||
import WayofTime.bloodmagic.tile.TileInversionPillar;
|
||||
import WayofTime.bloodmagic.tile.TileMasterRitualStone;
|
||||
import WayofTime.bloodmagic.tile.TileMimic;
|
||||
import WayofTime.bloodmagic.tile.TilePhantomBlock;
|
||||
import WayofTime.bloodmagic.tile.TileSoulForge;
|
||||
import WayofTime.bloodmagic.tile.TileSpectralBlock;
|
||||
import WayofTime.bloodmagic.tile.TileTeleposer;
|
||||
import WayofTime.bloodmagic.tile.routing.TileInputRoutingNode;
|
||||
import WayofTime.bloodmagic.tile.routing.TileItemRoutingNode;
|
||||
import WayofTime.bloodmagic.tile.routing.TileMasterRoutingNode;
|
||||
import WayofTime.bloodmagic.tile.routing.TileOutputRoutingNode;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
@Mod.EventBusSubscriber(modid = BloodMagic.MODID)
|
||||
@GameRegistry.ObjectHolder(BloodMagic.MODID)
|
||||
@SuppressWarnings("unused")
|
||||
public class RegistrarBloodMagicBlocks
|
||||
{
|
||||
public static final Block ALTAR = Blocks.AIR;
|
||||
public static final Block BLOOD_RUNE = Blocks.AIR;
|
||||
public static final Block RITUAL_CONTROLLER = Blocks.AIR;
|
||||
public static final Block RITUAL_STONE = Blocks.AIR;
|
||||
public static final Block BLOOD_LIGHT = Blocks.AIR;
|
||||
public static final Block TELEPOSER = Blocks.AIR;
|
||||
public static final Block ALCHEMY_ARRAY = Blocks.AIR;
|
||||
public static final Block SPECTRAL = Blocks.AIR;
|
||||
public static final Block PHANTOM = Blocks.AIR;
|
||||
public static final Block SOUL_FORGE = Blocks.AIR;
|
||||
public static final Block INCENSE_ALTAR = Blocks.AIR;
|
||||
public static final Block DEMON_CRUCIBLE = Blocks.AIR;
|
||||
public static final Block DEMON_PYLON = Blocks.AIR;
|
||||
public static final Block DEMON_CRYSTALLIZER = Blocks.AIR;
|
||||
public static final Block DEMON_CRYSTAL = Blocks.AIR;
|
||||
public static final Block ALCHEMY_TABLE = Blocks.AIR;
|
||||
public static final Block LIFE_ESSENCE = Blocks.AIR;
|
||||
public static final Block DECORATIVE_BRICK = Blocks.AIR;
|
||||
public static final Block PATH = Blocks.AIR;
|
||||
public static final Block MASTER_ROUTING_NODE = Blocks.AIR;
|
||||
public static final Block INPUT_ROUTING_NODE = Blocks.AIR;
|
||||
public static final Block OUTPUT_ROUTING_NODE = Blocks.AIR;
|
||||
public static final Block ITEM_ROUTING_NODE = Blocks.AIR;
|
||||
public static final Block DIMENSIONAL_PORTAL = Blocks.AIR;
|
||||
public static final Block BLOOD_TANK = Blocks.AIR;
|
||||
public static final Block MIMIC = Blocks.AIR;
|
||||
public static final Block DEMON_BRICK_1 = Blocks.AIR;
|
||||
public static final Block DEMON_BRICK_2 = Blocks.AIR;
|
||||
public static final Block DEMON_EXTRAS = Blocks.AIR;
|
||||
public static final Block DEMON_PILLAR_1 = Blocks.AIR;
|
||||
public static final Block DEMON_PILLAR_2 = Blocks.AIR;
|
||||
public static final Block DEMON_PILLAR_CAP_1 = Blocks.AIR;
|
||||
public static final Block DEMON_PILLAR_CAP_2 = Blocks.AIR;
|
||||
public static final Block DEMON_PILLAR_CAP_3 = Blocks.AIR;
|
||||
public static final Block DEMON_LIGHT = Blocks.AIR;
|
||||
public static final Block DEMON_WALL_1 = Blocks.AIR;
|
||||
public static final Block DEMON_STAIRS_1 = Blocks.AIR;
|
||||
public static final Block DEMON_STAIRS_2 = Blocks.AIR;
|
||||
public static final Block DEMON_STAIRS_3 = Blocks.AIR;
|
||||
public static final Block INVERSION_PILLAR = Blocks.AIR;
|
||||
public static final Block INVERSION_PILLAR_END = Blocks.AIR;
|
||||
|
||||
static Set<Block> blocks;
|
||||
|
||||
@SubscribeEvent
|
||||
public static void registerBlocks(RegistryEvent.Register<Block> event)
|
||||
{
|
||||
FluidRegistry.registerFluid(BlockLifeEssence.getLifeEssence());
|
||||
FluidRegistry.addBucketForFluid(BlockLifeEssence.getLifeEssence());
|
||||
|
||||
blocks = Sets.newHashSet(
|
||||
new BlockAltar().setRegistryName("altar"),
|
||||
new BlockBloodRune().setRegistryName("blood_rune"),
|
||||
new BlockRitualController().setRegistryName("ritual_controller"),
|
||||
new BlockRitualStone().setRegistryName("ritual_stone"),
|
||||
new BlockBloodLight().setRegistryName("blood_light"),
|
||||
new BlockTeleposer().setRegistryName("teleposer"),
|
||||
new BlockAlchemyArray().setRegistryName("alchemy_array"),
|
||||
new BlockSpectral().setRegistryName("spectral"),
|
||||
new BlockPhantom().setRegistryName("phantom"),
|
||||
new BlockSoulForge().setRegistryName("soul_forge"),
|
||||
new BlockIncenseAltar().setRegistryName("incense_altar"),
|
||||
new BlockDemonCrucible().setRegistryName("demon_crucible"),
|
||||
new BlockDemonPylon().setRegistryName("demon_pylon"),
|
||||
new BlockDemonCrystallizer().setRegistryName("demon_crystallizer"),
|
||||
new BlockDemonCrystal().setRegistryName("demon_crystal"),
|
||||
new BlockAlchemyTable().setRegistryName("alchemy_table"),
|
||||
new BlockLifeEssence().setRegistryName("life_essence"),
|
||||
new BlockDecorative().setRegistryName("decorative_brick"),
|
||||
new BlockPath().setRegistryName("path"),
|
||||
new BlockMasterRoutingNode().setRegistryName("master_routing_node"),
|
||||
new BlockInputRoutingNode().setRegistryName("input_routing_node"),
|
||||
new BlockOutputRoutingNode().setRegistryName("output_routing_node"),
|
||||
new BlockItemRoutingNode().setRegistryName("item_routing_node"),
|
||||
new BlockDimensionalPortal().setRegistryName("dimensional_portal"),
|
||||
new BlockBloodTank().setRegistryName("blood_tank"),
|
||||
new BlockMimic().setRegistryName("mimic"),
|
||||
new BlockDemonBase<>("bricks1", EnumDemonBlock1.class).setRegistryName("demon_brick_1"),
|
||||
new BlockDemonBase<>("bricks2", EnumDemonBlock2.class).setRegistryName("demon_brick_2"),
|
||||
new BlockDemonBase<>("extras", EnumDemonBlock3.class).setRegistryName("demon_extras"),
|
||||
new BlockDemonPillarBase<>("pillar1", Material.ROCK, EnumSubWillType.class).setRegistryName("demon_pillar_1"),
|
||||
new BlockDemonPillarBase<>("pillar2", Material.ROCK, EnumSubWillType.class).setRegistryName("demon_pillar_2"),
|
||||
new BlockDemonPillarCapBase<>("pillarCap1", Material.ROCK, EnumSubWillType1.class).setRegistryName("demon_pillar_cap_1"),
|
||||
new BlockDemonPillarCapBase<>("pillarCap2", Material.ROCK, EnumSubWillType2.class).setRegistryName("demon_pillar_cap_2"),
|
||||
new BlockDemonPillarCapBase<>("pillarCap3", Material.ROCK, EnumSubWillType3.class).setRegistryName("demon_pillar_cap_3"),
|
||||
new BlockDemonLight().setRegistryName("demon_light"),
|
||||
new BlockDemonWallBase<>("wall1", Material.ROCK, EnumWillWall.class).setRegistryName("demon_wall_1"),
|
||||
new BlockDemonStairsBase<>("stairs1", Material.ROCK, EnumSubWillType1.class).setRegistryName("demon_stairs_1"),
|
||||
new BlockDemonStairsBase<>("stairs2", Material.ROCK, EnumSubWillType2.class).setRegistryName("demon_stairs_2"),
|
||||
new BlockDemonStairsBase<>("stairs3", Material.ROCK, EnumSubWillType3.class).setRegistryName("demon_stairs_3"),
|
||||
new BlockInversionPillar().setRegistryName("inversion_pillar"),
|
||||
new BlockInversionPillarEnd().setRegistryName("inversion_pillar_end")
|
||||
);
|
||||
|
||||
event.getRegistry().registerAll(blocks.toArray(new Block[0]));
|
||||
|
||||
registerTiles();
|
||||
}
|
||||
|
||||
private static void registerTiles() {
|
||||
GameRegistry.registerTileEntity(TileAltar.class, BloodMagic.MODID + ":" + TileAltar.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileImperfectRitualStone.class, BloodMagic.MODID + ":" + TileImperfectRitualStone.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileMasterRitualStone.class, BloodMagic.MODID + ":" + TileMasterRitualStone.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileAlchemyArray.class, BloodMagic.MODID + ":" + TileAlchemyArray.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileSpectralBlock.class, BloodMagic.MODID + ":" + TileSpectralBlock.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TilePhantomBlock.class, BloodMagic.MODID + ":" + TilePhantomBlock.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileTeleposer.class, BloodMagic.MODID + ":" + TileTeleposer.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileSoulForge.class, BloodMagic.MODID + ":" + TileSoulForge.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileMasterRoutingNode.class, BloodMagic.MODID + ":" + TileMasterRoutingNode.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileInputRoutingNode.class, BloodMagic.MODID + ":" + TileInputRoutingNode.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileOutputRoutingNode.class, BloodMagic.MODID + ":" + TileOutputRoutingNode.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileItemRoutingNode.class, BloodMagic.MODID + ":" + TileItemRoutingNode.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileIncenseAltar.class, BloodMagic.MODID + ":" + TileIncenseAltar.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileDemonCrucible.class, BloodMagic.MODID + ":" + TileDemonCrucible.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileDemonPylon.class, BloodMagic.MODID + ":" + TileDemonPylon.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileDemonCrystallizer.class, BloodMagic.MODID + ":" + TileDemonCrystallizer.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileDemonCrystal.class, BloodMagic.MODID + ":" + TileDemonCrystal.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileAlchemyTable.class, BloodMagic.MODID + ":" + TileAlchemyTable.class.getSimpleName());
|
||||
|
||||
GameRegistry.registerTileEntity(TileDimensionalPortal.class, BloodMagic.MODID + ":" + TileDimensionalPortal.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileBloodTank.class, BloodMagic.MODID + ":" + TileBloodTank.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileMimic.class, BloodMagic.MODID + ":" + TileMimic.class.getSimpleName());
|
||||
GameRegistry.registerTileEntity(TileInversionPillar.class, BloodMagic.MODID + ":" + TileInversionPillar.class.getSimpleName());
|
||||
}
|
||||
}
|
|
@ -0,0 +1,231 @@
|
|||
package WayofTime.bloodmagic.core;
|
||||
|
||||
import WayofTime.bloodmagic.block.IBMBlock;
|
||||
import WayofTime.bloodmagic.client.IVariantProvider;
|
||||
import com.google.common.collect.Sets;
|
||||
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
|
||||
import net.minecraft.init.Items;
|
||||
import net.minecraft.inventory.EntityEquipmentSlot;
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraftforge.client.event.ModelRegistryEvent;
|
||||
import net.minecraftforge.client.model.ModelLoader;
|
||||
import net.minecraftforge.common.util.EnumHelper;
|
||||
import net.minecraftforge.event.RegistryEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.registry.GameRegistry;
|
||||
import net.minecraftforge.fml.relauncher.Side;
|
||||
import net.minecraftforge.fml.relauncher.SideOnly;
|
||||
import WayofTime.bloodmagic.BloodMagic;
|
||||
import WayofTime.bloodmagic.item.*;
|
||||
import WayofTime.bloodmagic.item.alchemy.ItemCuttingFluid;
|
||||
import WayofTime.bloodmagic.item.alchemy.ItemLivingArmourPointsUpgrade;
|
||||
import WayofTime.bloodmagic.item.armour.ItemLivingArmour;
|
||||
import WayofTime.bloodmagic.item.armour.ItemSentientArmour;
|
||||
import WayofTime.bloodmagic.item.gear.ItemPackSacrifice;
|
||||
import WayofTime.bloodmagic.item.gear.ItemPackSelfSacrifice;
|
||||
import WayofTime.bloodmagic.item.routing.ItemFluidRouterFilter;
|
||||
import WayofTime.bloodmagic.item.routing.ItemNodeRouter;
|
||||
import WayofTime.bloodmagic.item.routing.ItemRouterFilter;
|
||||
import WayofTime.bloodmagic.item.sigil.*;
|
||||
import WayofTime.bloodmagic.item.soul.*;
|
||||
import org.apache.commons.lang3.tuple.Pair;
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
@Mod.EventBusSubscriber(modid = BloodMagic.MODID)
|
||||
@GameRegistry.ObjectHolder(BloodMagic.MODID)
|
||||
@SuppressWarnings("unchecked")
|
||||
public class RegistrarBloodMagicItems
|
||||
{
|
||||
public static final Item BLOOD_ORB = Items.AIR;
|
||||
public static final Item ACTIVATION_CRYSTAL = Items.AIR;
|
||||
public static final Item SLATE = Items.AIR;
|
||||
public static final Item INSCRIPTION_TOOL = Items.AIR;
|
||||
public static final Item SACRIFICIAL_DAGGER = Items.AIR;
|
||||
public static final Item PACK_SELF_SACRIFICE = Items.AIR;
|
||||
public static final Item PACK_SACRIFICE = Items.AIR;
|
||||
public static final Item DAGGER_OF_SACRIFICE = Items.AIR;
|
||||
public static final Item RITUAL_DIVINER = Items.AIR;
|
||||
public static final Item RITUAL_READER = Items.AIR;
|
||||
public static final Item LAVA_CRYSTAL = Items.AIR;
|
||||
public static final Item BOUND_SWORD = Items.AIR;
|
||||
public static final Item BOUND_PICKAXE = Items.AIR;
|
||||
public static final Item BOUND_AXE = Items.AIR;
|
||||
public static final Item BOUND_SHOVEL = Items.AIR;
|
||||
public static final Item SIGIL_DIVINATION = Items.AIR;
|
||||
public static final Item SIGIL_AIR = Items.AIR;
|
||||
public static final Item SIGIL_WATER = Items.AIR;
|
||||
public static final Item SIGIL_LAVA = Items.AIR;
|
||||
public static final Item SIGIL_VOID = Items.AIR;
|
||||
public static final Item SIGIL_GREEN_GROVE = Items.AIR;
|
||||
public static final Item SIGIL_BLOOD_LIGHT = Items.AIR;
|
||||
public static final Item SIGIL_ELEMENTAL_AFFINITY = Items.AIR;
|
||||
public static final Item SIGIL_HASTE = Items.AIR;
|
||||
public static final Item SIGIL_MAGNETISM = Items.AIR;
|
||||
public static final Item SIGIL_SUPPRESSION = Items.AIR;
|
||||
public static final Item SIGIL_FAST_MINER = Items.AIR;
|
||||
public static final Item SIGIL_SEER = Items.AIR;
|
||||
public static final Item SIGIL_ENDER_SEVERANCE = Items.AIR;
|
||||
public static final Item SIGIL_WHIRLWIND = Items.AIR;
|
||||
public static final Item SIGIL_PHANTOM_BRIDGE = Items.AIR;
|
||||
public static final Item SIGIL_COMPRESSION = Items.AIR;
|
||||
public static final Item SIGIL_HOLDING = Items.AIR;
|
||||
public static final Item SIGIL_TELEPOSITION = Items.AIR;
|
||||
public static final Item SIGIL_TRANSPOSITION = Items.AIR;
|
||||
public static final Item SIGIL_CLAW = Items.AIR;
|
||||
public static final Item SIGIL_BOUNCE = Items.AIR;
|
||||
public static final Item SIGIL_FROST = Items.AIR;
|
||||
public static final Item ITEM_COMPONENT = Items.AIR;
|
||||
public static final Item ITEM_DEMON_CRYSTAL = Items.AIR;
|
||||
public static final Item TELEPOSITION_FOCUS = Items.AIR;
|
||||
public static final Item EXPERIENCE_TOME = Items.AIR;
|
||||
public static final Item BLOOD_SHARD = Items.AIR;
|
||||
public static final Item LIVING_ARMOUR_HELMET = Items.AIR;
|
||||
public static final Item LIVING_ARMOUR_CHEST = Items.AIR;
|
||||
public static final Item LIVING_ARMOUR_LEGS = Items.AIR;
|
||||
public static final Item LIVING_ARMOUR_BOOTS = Items.AIR;
|
||||
public static final Item SENTIENT_ARMOUR_HELMET = Items.AIR;
|
||||
public static final Item SENTIENT_ARMOUR_CHEST = Items.AIR;
|
||||
public static final Item SENTIENT_ARMOUR_LEGS = Items.AIR;
|
||||
public static final Item SENTIENT_ARMOUR_BOOTS = Items.AIR;
|
||||
public static final Item ALTAR_MAKER = Items.AIR;
|
||||
public static final Item UPGRADE_TOME = Items.AIR;
|
||||
public static final Item UPGRADE_TRAINER = Items.AIR;
|
||||
public static final Item ARCANE_ASHES = Items.AIR;
|
||||
public static final Item MONSTER_SOUL = Items.AIR;
|
||||
public static final Item SOUL_GEM = Items.AIR;
|
||||
public static final Item SOUL_SNARE = Items.AIR;
|
||||
public static final Item SENTIENT_SWORD = Items.AIR;
|
||||
public static final Item SENTIENT_BOW = Items.AIR;
|
||||
public static final Item SENTIENT_ARMOUR_GEM = Items.AIR;
|
||||
public static final Item SENTIENT_AXE = Items.AIR;
|
||||
public static final Item SENTIENT_PICKAXE = Items.AIR;
|
||||
public static final Item SENTIENT_SHOVEL = Items.AIR;
|
||||
public static final Item NODE_ROUTER = Items.AIR;
|
||||
public static final Item BASE_ITEM_FILTER = Items.AIR;
|
||||
public static final Item BASE_FLUID_FILTER = Items.AIR;
|
||||
public static final Item CUTTING_FLUID = Items.AIR;
|
||||
public static final Item SANGUINE_BOOK = Items.AIR;
|
||||
public static final Item ITEM_POINTS_UPGRADE = Items.AIR;
|
||||
public static final Item DEMON_WILL_GAUGE = Items.AIR;
|
||||
public static final Item POTION_FLASK = Items.AIR;
|
||||
|
||||
public static Item.ToolMaterial BOUND_TOOL_MATERIAL = EnumHelper.addToolMaterial("bound", 4, 1, 10, 8, 50);
|
||||
public static Item.ToolMaterial SOUL_TOOL_MATERIAL = EnumHelper.addToolMaterial("demonic", 4, 520, 7, 8, 50);
|
||||
|
||||
private static Set<Item> items;
|
||||
|
||||
@SubscribeEvent
|
||||
public static void registerItems(RegistryEvent.Register<Item> event)
|
||||
{
|
||||
items = Sets.newHashSet(
|
||||
new ItemBloodOrb().setRegistryName("blood_orb"),
|
||||
new ItemActivationCrystal().setRegistryName("activation_crystal"),
|
||||
new ItemSlate().setRegistryName("slate"),
|
||||
new ItemInscriptionTool().setRegistryName("inscription_tool"),
|
||||
new ItemSacrificialDagger().setRegistryName("sacrificial_dagger"),
|
||||
new ItemPackSacrifice().setRegistryName("sacrificial_pack"),
|
||||
new ItemPackSelfSacrifice().setRegistryName("pack_of_sacrifice"),
|
||||
new ItemDaggerOfSacrifice().setRegistryName("dagger_of_sacrifice"),
|
||||
new ItemRitualDiviner().setRegistryName("ritual_diviner"),
|
||||
new ItemRitualReader().setRegistryName("ritual_reader"),
|
||||
new ItemLavaCrystal().setRegistryName("lava_crystal"),
|
||||
new ItemBoundSword().setRegistryName("bound_sword"),
|
||||
new ItemBoundPickaxe().setRegistryName("bound_pickaxe"),
|
||||
new ItemBoundAxe().setRegistryName("bound_axe"),
|
||||
new ItemBoundShovel().setRegistryName("bound_shovel"),
|
||||
new ItemSigilDivination().setRegistryName("sigil_divination"),
|
||||
new ItemSigilAir().setRegistryName("sigil_air"),
|
||||
new ItemSigilWater().setRegistryName("sigil_water"),
|
||||
new ItemSigilLava().setRegistryName("sigil_lava"),
|
||||
new ItemSigilVoid().setRegistryName("sigil_void"),
|
||||
new ItemSigilGreenGrove().setRegistryName("sigil_growth"),
|
||||
new ItemSigilBloodLight().setRegistryName("sigil_light"),
|
||||
new ItemSigilElementalAffinity().setRegistryName("sigil_elemental"),
|
||||
new ItemSigilMagnetism().setRegistryName("sigil_magnetism"),
|
||||
new ItemSigilSuppression().setRegistryName("sigil_suppression"),
|
||||
new ItemSigilHaste().setRegistryName("sigil_haste"),
|
||||
new ItemSigilFastMiner().setRegistryName("sigil_fast_miner"),
|
||||
new ItemSigilSeer().setRegistryName("sigil_seer"),
|
||||
new ItemSigilPhantomBridge().setRegistryName("sigil_bridge"),
|
||||
new ItemSigilWhirlwind().setRegistryName("sigil_whirlwind"),
|
||||
new ItemSigilCompression().setRegistryName("sigil_compression"),
|
||||
new ItemSigilEnderSeverance().setRegistryName("sigil_severance"),
|
||||
new ItemSigilHolding().setRegistryName("sigil_holding"),
|
||||
new ItemSigilTeleposition().setRegistryName("sigil_teleposition"),
|
||||
new ItemSigilTransposition().setRegistryName("sigil_transposition"),
|
||||
new ItemSigilClaw().setRegistryName("sigil_claw"),
|
||||
new ItemSigilBounce().setRegistryName("sigil_bounce"),
|
||||
new ItemSigilFrost().setRegistryName("sigil_frost"),
|
||||
new ItemComponent().setRegistryName("component"),
|
||||
new ItemDemonCrystal().setRegistryName("demon_crystal"),
|
||||
new ItemTelepositionFocus().setRegistryName("teleposition_focus"),
|
||||
new ItemExperienceBook().setRegistryName("experience_book"),
|
||||
new ItemBloodShard().setRegistryName("blood_shard"),
|
||||
new ItemLivingArmour(EntityEquipmentSlot.HEAD).setRegistryName("living_helm"),
|
||||
new ItemLivingArmour(EntityEquipmentSlot.CHEST).setRegistryName("living_chest"),
|
||||
new ItemLivingArmour(EntityEquipmentSlot.LEGS).setRegistryName("living_leggings"),
|
||||
new ItemLivingArmour(EntityEquipmentSlot.FEET).setRegistryName("living_boots"),
|
||||
new ItemSentientArmour(EntityEquipmentSlot.HEAD).setRegistryName("sentient_helm"),
|
||||
new ItemSentientArmour(EntityEquipmentSlot.CHEST).setRegistryName("sentient_chest"),
|
||||
new ItemSentientArmour(EntityEquipmentSlot.LEGS).setRegistryName("sentient_leggings"),
|
||||
new ItemSentientArmour(EntityEquipmentSlot.FEET).setRegistryName("sentient_boots"),
|
||||
new ItemAltarMaker().setRegistryName("altar_maker"),
|
||||
new ItemUpgradeTome().setRegistryName("upgrade_tome"),
|
||||
new ItemUpgradeTrainer().setRegistryName("upgrade_trainer"),
|
||||
new ItemArcaneAshes().setRegistryName("arcane_ashes"),
|
||||
new ItemMonsterSoul().setRegistryName("monster_soul"),
|
||||
new ItemSoulGem().setRegistryName("soul_gem"),
|
||||
new ItemSoulSnare().setRegistryName("soul_snare"),
|
||||
new ItemSentientSword().setRegistryName("sentient_sword"),
|
||||
new ItemSentientBow().setRegistryName("sentient_bow"),
|
||||
new ItemSentientArmourGem().setRegistryName("armour_gem"),
|
||||
new ItemSentientAxe().setRegistryName("sentient_axe"),
|
||||
new ItemSentientPickaxe().setRegistryName("sentient_pickaxe"),
|
||||
new ItemSentientShovel().setRegistryName("sentient_shovel"),
|
||||
new ItemNodeRouter().setRegistryName("node_router"),
|
||||
new ItemRouterFilter().setRegistryName("router_filter"),
|
||||
new ItemFluidRouterFilter().setRegistryName("fluid_router_filter"),
|
||||
new ItemCuttingFluid().setRegistryName("cutting_fluid"),
|
||||
new ItemSanguineBook().setRegistryName("sanguine_book"),
|
||||
new ItemLivingArmourPointsUpgrade().setRegistryName("living_armor_point_upgrade"),
|
||||
new ItemDemonWillGauge().setRegistryName("demon_will_gauge"),
|
||||
new ItemPotionFlask().setRegistryName("potion_flask")
|
||||
);
|
||||
|
||||
RegistrarBloodMagicBlocks.blocks.stream().filter(block -> block instanceof IBMBlock && ((IBMBlock) block).getItem() != null).forEach(block -> {
|
||||
IBMBlock bmBlock = (IBMBlock) block;
|
||||
items.add(bmBlock.getItem().setRegistryName(block.getRegistryName()));
|
||||
});
|
||||
|
||||
event.getRegistry().registerAll(items.toArray(new Item[0]));
|
||||
}
|
||||
|
||||
@SideOnly(Side.CLIENT)
|
||||
@SubscribeEvent
|
||||
public static void registerRenders(ModelRegistryEvent event)
|
||||
{
|
||||
items.stream().filter(i -> i instanceof IVariantProvider).forEach(item -> {
|
||||
IVariantProvider variantProvider = (IVariantProvider) item;
|
||||
for (Pair<Integer, String> variant : variantProvider.getVariants())
|
||||
ModelLoader.setCustomModelResourceLocation(item, variant.getLeft(), new ModelResourceLocation(item.getRegistryName(), variant.getRight()));
|
||||
});
|
||||
|
||||
RegistrarBloodMagicBlocks.blocks.stream().filter(i -> i instanceof IVariantProvider).forEach(block -> {
|
||||
IVariantProvider variantProvider = (IVariantProvider) block;
|
||||
for (Pair<Integer, String> variant : variantProvider.getVariants())
|
||||
ModelLoader.setCustomModelResourceLocation(Item.getItemFromBlock(block), variant.getLeft(), new ModelResourceLocation(block.getRegistryName(), variant.getRight()));
|
||||
});
|
||||
|
||||
final ResourceLocation holdingLoc = new ResourceLocation("bloodmagic", "item/ItemSigilHolding");
|
||||
ModelLoader.setCustomMeshDefinition(SIGIL_HOLDING, stack -> {
|
||||
if (stack.hasTagCompound() && stack.getTagCompound().hasKey("color"))
|
||||
return new ModelResourceLocation(holdingLoc, "type=color");
|
||||
return new ModelResourceLocation(holdingLoc, "type=normal");
|
||||
});
|
||||
ModelLoader.registerItemVariants(SIGIL_HOLDING, new ModelResourceLocation(holdingLoc, "type=normal"));
|
||||
ModelLoader.registerItemVariants(SIGIL_HOLDING, new ModelResourceLocation(holdingLoc, "type=color"));
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue