Well of Suffering item drop control (#1388)
* Added a new DamageSource for the Well of Suffering Added an event handler for death through Well of Suffering Added a config option to enable (true) or disable (false) Well of Suffering Mob drops. * Moved the DamageSource creation to RitualManager Renamed the new DamageSource to "RITUAL_DAMAGE" DamageSource "RITUAL_DAMAGE" is now used by RitualForsakenSoul and RitualWellOfSuffering Added death message string for "RITUAL_DAMAGE" for en_US and de_DE * Cleanup, removed the ability to damage entities in creative mode (creative mode should be considered as having infinite health, the rituals only damage mobs anyways). * Update GenericHandler.java
This commit is contained in:
parent
753958ac9c
commit
7942465edc
7 changed files with 48 additions and 19 deletions
|
@ -66,6 +66,8 @@ public class ConfigHandler
|
|||
public int sacrificialDaggerConversion = 100;
|
||||
@Config.Comment({ "Will rewrite any default meteor types with new versions.", "Disable this if you want any of your changes to stay, or do not want default meteor types regenerated." })
|
||||
public boolean shouldResyncMeteors = true;
|
||||
@Config.Comment({ "Should mobs that die through the Well of Suffering Ritual drop items?"})
|
||||
public boolean wellOfSufferingDrops = true;
|
||||
}
|
||||
|
||||
public static class ConfigClient
|
||||
|
|
|
@ -6,12 +6,17 @@ import com.google.common.collect.Lists;
|
|||
import com.google.common.collect.Maps;
|
||||
import com.google.common.collect.Sets;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraftforge.common.config.Configuration;
|
||||
import net.minecraftforge.fml.common.discovery.ASMDataTable;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Set;
|
||||
|
||||
public class RitualManager {
|
||||
public static final DamageSource RITUAL_DAMAGE = new DamageSource("ritual_damage").setDamageBypassesArmor();
|
||||
|
||||
private final Map<String, Ritual> rituals;
|
||||
private final Map<Ritual, String> ritualsReverse;
|
||||
|
@ -20,6 +25,7 @@ public class RitualManager {
|
|||
private final Map<ImperfectRitual, String> imperfectRitualsReverse;
|
||||
private final Configuration config;
|
||||
|
||||
|
||||
public RitualManager(Configuration config) {
|
||||
this.rituals = Maps.newTreeMap();
|
||||
this.ritualsReverse = Maps.newHashMap();
|
||||
|
|
|
@ -9,7 +9,6 @@ import net.minecraft.entity.passive.EntityAnimal;
|
|||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
@ -110,7 +109,7 @@ public class RitualForsakenSoul extends Ritual {
|
|||
continue;
|
||||
|
||||
if (entity.isEntityAlive() && !(entity instanceof EntityPlayer)) {
|
||||
if (entity.attackEntityFrom(DamageSource.OUT_OF_WORLD, 1)) {
|
||||
if (entity.attackEntityFrom(RitualManager.RITUAL_DAMAGE, 1)) {
|
||||
if (!entity.isEntityAlive()) {
|
||||
int uniqueness = calculateUniqueness(entity);
|
||||
double modifier = 1;
|
||||
|
|
|
@ -7,7 +7,6 @@ import WayofTime.bloodmagic.tile.TileAltar;
|
|||
import net.minecraft.entity.EntityLivingBase;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.DamageSource;
|
||||
import net.minecraft.util.math.AxisAlignedBB;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
@ -89,7 +88,7 @@ public class RitualWellOfSuffering extends Ritual {
|
|||
continue;
|
||||
|
||||
if (entity.isEntityAlive() && !(entity instanceof EntityPlayer)) {
|
||||
if (entity.attackEntityFrom(DamageSource.OUT_OF_WORLD, 1)) {
|
||||
if (entity.attackEntityFrom(RitualManager.RITUAL_DAMAGE, 1)) {
|
||||
if (entity.isChild())
|
||||
lifeEssenceRatio *= 0.5F;
|
||||
|
||||
|
|
|
@ -3,37 +3,40 @@ package WayofTime.bloodmagic.util.handler.event;
|
|||
import WayofTime.bloodmagic.BloodMagic;
|
||||
import WayofTime.bloodmagic.ConfigHandler;
|
||||
import WayofTime.bloodmagic.api.impl.BloodMagicAPI;
|
||||
import WayofTime.bloodmagic.block.BlockAltar;
|
||||
import WayofTime.bloodmagic.core.RegistrarBloodMagic;
|
||||
import WayofTime.bloodmagic.core.RegistrarBloodMagicItems;
|
||||
import WayofTime.bloodmagic.core.data.Binding;
|
||||
import WayofTime.bloodmagic.util.Constants;
|
||||
import WayofTime.bloodmagic.core.data.SoulNetwork;
|
||||
import WayofTime.bloodmagic.demonAura.WorldDemonWillHandler;
|
||||
import WayofTime.bloodmagic.entity.mob.EntitySentientSpecter;
|
||||
import WayofTime.bloodmagic.event.ItemBindEvent;
|
||||
import WayofTime.bloodmagic.event.SacrificeKnifeUsedEvent;
|
||||
import WayofTime.bloodmagic.event.TeleposeEvent;
|
||||
import WayofTime.bloodmagic.iface.IBindable;
|
||||
import WayofTime.bloodmagic.iface.ISentientTool;
|
||||
import WayofTime.bloodmagic.livingArmour.LivingArmourUpgrade;
|
||||
import WayofTime.bloodmagic.orb.BloodOrb;
|
||||
import WayofTime.bloodmagic.orb.IBloodOrb;
|
||||
import WayofTime.bloodmagic.core.data.SoulNetwork;
|
||||
import WayofTime.bloodmagic.soul.DemonWillHolder;
|
||||
import WayofTime.bloodmagic.block.BlockAltar;
|
||||
import WayofTime.bloodmagic.core.RegistrarBloodMagic;
|
||||
import WayofTime.bloodmagic.core.RegistrarBloodMagicItems;
|
||||
import WayofTime.bloodmagic.demonAura.WorldDemonWillHandler;
|
||||
import WayofTime.bloodmagic.entity.mob.EntitySentientSpecter;
|
||||
import WayofTime.bloodmagic.item.ItemAltarMaker;
|
||||
import WayofTime.bloodmagic.item.ItemExperienceBook;
|
||||
import WayofTime.bloodmagic.item.armour.ItemLivingArmour;
|
||||
import WayofTime.bloodmagic.item.gear.ItemPackSacrifice;
|
||||
import WayofTime.bloodmagic.livingArmour.LivingArmour;
|
||||
import WayofTime.bloodmagic.livingArmour.LivingArmourUpgrade;
|
||||
import WayofTime.bloodmagic.livingArmour.downgrade.LivingArmourUpgradeBattleHungry;
|
||||
import WayofTime.bloodmagic.livingArmour.tracker.StatTrackerSelfSacrifice;
|
||||
import WayofTime.bloodmagic.livingArmour.upgrade.LivingArmourUpgradeSelfSacrifice;
|
||||
import WayofTime.bloodmagic.network.BloodMagicPacketHandler;
|
||||
import WayofTime.bloodmagic.network.DemonAuraPacketProcessor;
|
||||
import WayofTime.bloodmagic.orb.BloodOrb;
|
||||
import WayofTime.bloodmagic.orb.IBloodOrb;
|
||||
import WayofTime.bloodmagic.potion.BMPotionUtils;
|
||||
import WayofTime.bloodmagic.util.ChatUtil;
|
||||
import WayofTime.bloodmagic.ritual.RitualManager;
|
||||
import WayofTime.bloodmagic.soul.DemonWillHolder;
|
||||
import WayofTime.bloodmagic.util.Constants;
|
||||
import WayofTime.bloodmagic.util.Utils;
|
||||
import WayofTime.bloodmagic.util.helper.*;
|
||||
import WayofTime.bloodmagic.util.helper.BindableHelper;
|
||||
import WayofTime.bloodmagic.util.helper.ItemHelper;
|
||||
import WayofTime.bloodmagic.util.helper.NetworkHelper;
|
||||
import WayofTime.bloodmagic.util.helper.PlayerHelper;
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.state.IBlockState;
|
||||
import net.minecraft.enchantment.EnchantmentHelper;
|
||||
|
@ -79,7 +82,10 @@ import net.minecraftforge.fml.common.gameevent.TickEvent;
|
|||
import net.minecraftforge.fml.common.registry.EntityEntry;
|
||||
import net.minecraftforge.fml.common.registry.EntityRegistry;
|
||||
|
||||
import java.util.*;
|
||||
import java.util.HashMap;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.Random;
|
||||
|
||||
@Mod.EventBusSubscriber(modid = BloodMagic.MODID)
|
||||
public class GenericHandler {
|
||||
|
@ -405,6 +411,15 @@ public class GenericHandler {
|
|||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onRitualDeath(LivingDropsEvent event){
|
||||
if(!ConfigHandler.values.wellOfSufferingDrops){
|
||||
if(event.getSource().equals(RitualManager.RITUAL_DAMAGE)) {
|
||||
event.getDrops().clear();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Experience Tome
|
||||
@SubscribeEvent(priority = EventPriority.LOWEST)
|
||||
public static void onExperiencePickup(PlayerPickupXpEvent event) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue