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:
Nicholas Ignoffo 2017-08-15 18:14:28 -07:00
parent 5fcdd978d7
commit 554c9852e6
86 changed files with 528 additions and 496 deletions

View file

@ -10,7 +10,7 @@ import WayofTime.bloodmagic.api.ritual.IMasterRitualStone;
import WayofTime.bloodmagic.api.ritual.Ritual;
import WayofTime.bloodmagic.api.ritual.RitualComponent;
import WayofTime.bloodmagic.block.BlockBloodRune;
import WayofTime.bloodmagic.registry.RegistrarBloodMagicBlocks;
import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks;
import WayofTime.bloodmagic.util.Utils;
import net.minecraft.block.Block;
import net.minecraft.entity.effect.EntityLightningBolt;

View file

@ -30,7 +30,7 @@ import WayofTime.bloodmagic.api.ritual.Ritual;
import WayofTime.bloodmagic.api.ritual.RitualComponent;
import WayofTime.bloodmagic.api.soul.EnumDemonWillType;
import WayofTime.bloodmagic.demonAura.WorldDemonWillHandler;
import WayofTime.bloodmagic.registry.RegistrarBloodMagicBlocks;
import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks;
import WayofTime.bloodmagic.util.Utils;
public class RitualCrushing extends Ritual

View file

@ -4,6 +4,7 @@ import java.util.ArrayList;
import java.util.List;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.api_impl.BloodMagicAPI;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.passive.EntityAnimal;
import net.minecraft.entity.player.EntityPlayer;
@ -20,6 +21,8 @@ import WayofTime.bloodmagic.api.ritual.IMasterRitualStone;
import WayofTime.bloodmagic.api.ritual.Ritual;
import WayofTime.bloodmagic.api.ritual.RitualComponent;
import WayofTime.bloodmagic.tile.TileDemonCrystal;
import net.minecraftforge.fml.common.registry.EntityEntry;
import net.minecraftforge.fml.common.registry.EntityRegistry;
public class RitualForsakenSoul extends Ritual
{
@ -116,29 +119,31 @@ public class RitualForsakenSoul extends Ritual
for (EntityLivingBase entity : entities)
{
if (!ConfigHandler.wellOfSufferingBlacklist.contains(entity.getClass().getSimpleName()))
EntityEntry entityEntry = EntityRegistry.getEntry(entity.getClass());
if (BloodMagicAPI.INSTANCE.getBlacklist().getSacrifice().contains(entityEntry.getRegistryName()))
continue;
if (entity.isEntityAlive() && !(entity instanceof EntityPlayer))
{
if (entity.isEntityAlive() && !(entity instanceof EntityPlayer))
if (entity.attackEntityFrom(DamageSource.OUT_OF_WORLD, 1))
{
if (entity.attackEntityFrom(DamageSource.OUT_OF_WORLD, 1))
if (!entity.isEntityAlive())
{
if (!entity.isEntityAlive())
int uniqueness = calculateUniqueness(entity);
double modifier = 1;
if (entity instanceof EntityAnimal && !entity.isCollided)
{
int uniqueness = calculateUniqueness(entity);
double modifier = 1;
if (entity instanceof EntityAnimal && !entity.isCollided)
{
modifier = 4;
}
modifier = 4;
}
willBuffer += modifier * getWillForUniqueness(uniqueness) / HEALTH_THRESHOLD * entity.getMaxHealth();
crystalBuffer += modifier * entity.getMaxHealth() / HEALTH_THRESHOLD;
willBuffer += modifier * getWillForUniqueness(uniqueness) / HEALTH_THRESHOLD * entity.getMaxHealth();
crystalBuffer += modifier * entity.getMaxHealth() / HEALTH_THRESHOLD;
totalEffects++;
if (totalEffects >= maxEffects)
{
break;
}
totalEffects++;
if (totalEffects >= maxEffects)
{
break;
}
}
}

View file

@ -5,6 +5,8 @@ import java.util.List;
import java.util.Random;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.api_impl.BloodMagicAPI;
import WayofTime.bloodmagic.core.RegistrarBloodMagic;
import net.minecraft.block.Block;
import net.minecraft.block.BlockFarmland;
import net.minecraft.block.IGrowable;
@ -19,7 +21,6 @@ import net.minecraft.util.text.ITextComponent;
import net.minecraft.util.text.TextComponentTranslation;
import net.minecraft.world.World;
import net.minecraftforge.common.IPlantable;
import WayofTime.bloodmagic.api.BloodMagicAPI;
import WayofTime.bloodmagic.api.ritual.AreaDescriptor;
import WayofTime.bloodmagic.api.ritual.EnumRuneType;
import WayofTime.bloodmagic.api.ritual.IMasterRitualStone;
@ -28,7 +29,6 @@ import WayofTime.bloodmagic.api.ritual.RitualComponent;
import WayofTime.bloodmagic.api.soul.DemonWillHolder;
import WayofTime.bloodmagic.api.soul.EnumDemonWillType;
import WayofTime.bloodmagic.demonAura.WorldDemonWillHandler;
import WayofTime.bloodmagic.registry.ModPotions;
import WayofTime.bloodmagic.util.Utils;
public class RitualGreenGrove extends Ritual
@ -104,15 +104,14 @@ public class RitualGreenGrove extends Ritual
for (BlockPos newPos : growingRange.getContainedPositions(pos))
{
IBlockState state = world.getBlockState(newPos);
Block block = state.getBlock();
if (!BloodMagicAPI.greenGroveBlacklist.contains(block))
if (!BloodMagicAPI.INSTANCE.getBlacklist().getGreenGrove().contains(state))
{
if (block instanceof IPlantable || block instanceof IGrowable)
if (state.getBlock() instanceof IGrowable)
{
if (world.rand.nextDouble() < growthChance)
{
block.updateTick(world, newPos, state, new Random());
state.getBlock().updateTick(world, newPos, state, new Random());
IBlockState newState = world.getBlockState(newPos);
if (!newState.equals(state))
{
@ -214,12 +213,12 @@ public class RitualGreenGrove extends Ritual
continue;
}
if (entityLiving.isPotionActive(ModPotions.plantLeech) || !entityLiving.isPotionApplicable(new PotionEffect(ModPotions.plantLeech)))
if (entityLiving.isPotionActive(RegistrarBloodMagic.PLANT_LEECH) || !entityLiving.isPotionApplicable(new PotionEffect(RegistrarBloodMagic.PLANT_LEECH)))
{
continue;
}
entityLiving.addPotionEffect(new PotionEffect(ModPotions.plantLeech, 200, 0));
entityLiving.addPotionEffect(new PotionEffect(RegistrarBloodMagic.PLANT_LEECH, 200, 0));
corrosiveWill -= corrosiveWillDrain;
corrosiveDrain += corrosiveWillDrain;

View file

@ -6,7 +6,7 @@ import WayofTime.bloodmagic.api.ritual.IMasterRitualStone;
import WayofTime.bloodmagic.api.ritual.Ritual;
import WayofTime.bloodmagic.api.ritual.RitualComponent;
import WayofTime.bloodmagic.api.teleport.PortalLocation;
import WayofTime.bloodmagic.registry.RegistrarBloodMagicBlocks;
import WayofTime.bloodmagic.core.RegistrarBloodMagicBlocks;
import WayofTime.bloodmagic.ritual.portal.LocationsHandler;
import WayofTime.bloodmagic.tile.TileDimensionalPortal;
import net.minecraft.block.state.IBlockState;

View file

@ -22,7 +22,7 @@ import WayofTime.bloodmagic.api.ritual.RitualComponent;
import WayofTime.bloodmagic.api.util.helper.ItemHelper.LivingUpgrades;
import WayofTime.bloodmagic.item.armour.ItemLivingArmour;
import WayofTime.bloodmagic.livingArmour.LivingArmour;
import WayofTime.bloodmagic.registry.RegistrarBloodMagicItems;
import WayofTime.bloodmagic.core.RegistrarBloodMagicItems;
import com.google.common.collect.Iterables;

View file

@ -2,8 +2,8 @@ package WayofTime.bloodmagic.ritual;
import WayofTime.bloodmagic.BloodMagic;
import WayofTime.bloodmagic.ConfigHandler;
import WayofTime.bloodmagic.api.BloodMagicAPI;
import WayofTime.bloodmagic.api.ritual.*;
import WayofTime.bloodmagic.api_impl.BloodMagicAPI;
import WayofTime.bloodmagic.tile.TileAltar;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
@ -12,6 +12,8 @@ import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
import net.minecraftforge.fml.common.registry.EntityEntry;
import net.minecraftforge.fml.common.registry.EntityRegistry;
import java.util.ArrayList;
import java.util.List;
@ -85,27 +87,20 @@ public class RitualWellOfSuffering extends Ritual
for (EntityLivingBase entity : entities)
{
if (ConfigHandler.wellOfSufferingBlacklist.contains(entity.getClass().getSimpleName()))
EntityEntry entityEntry = EntityRegistry.getEntry(entity.getClass());
if (BloodMagicAPI.INSTANCE.getBlacklist().getSacrifice().contains(entityEntry.getRegistryName()))
continue;
String simpleClassName = entity.getClass().getSimpleName();
if (BloodMagicAPI.entitySacrificeValues.containsKey(simpleClassName) && BloodMagicAPI.entitySacrificeValues.get(simpleClassName) <= 0)
int lifeEssenceRatio = BloodMagicAPI.INSTANCE.getSacrificialValues().getOrDefault(entityEntry.getRegistryName(), SACRIFICE_AMOUNT);
if (lifeEssenceRatio <= 0)
continue;
if (entity.isEntityAlive() && !(entity instanceof EntityPlayer))
{
if (entity.attackEntityFrom(DamageSource.OUT_OF_WORLD, 1))
{
String entityName = entity.getClass().getSimpleName();
int lifeEssenceRatio = SACRIFICE_AMOUNT;
if (ConfigHandler.entitySacrificeValues.containsKey(entityName))
lifeEssenceRatio = ConfigHandler.entitySacrificeValues.get(entityName);
if (BloodMagicAPI.entitySacrificeValues.containsKey(entityName))
lifeEssenceRatio = BloodMagicAPI.entitySacrificeValues.get(entityName);
if (entity.isChild())
lifeEssenceRatio *= 0.5F;