Merge branch '1.12' into gate-of-the-fold
This commit is contained in:
commit
4248d04263
124 changed files with 2758 additions and 2716 deletions
|
@ -30,9 +30,12 @@ import WayofTime.bloodmagic.orb.BloodOrb;
|
|||
import WayofTime.bloodmagic.orb.IBloodOrb;
|
||||
import WayofTime.bloodmagic.potion.BMPotionUtils;
|
||||
import WayofTime.bloodmagic.potion.PotionEventHandlers;
|
||||
import WayofTime.bloodmagic.ritual.AreaDescriptor;
|
||||
import WayofTime.bloodmagic.ritual.IMasterRitualStone;
|
||||
import WayofTime.bloodmagic.ritual.RitualManager;
|
||||
import WayofTime.bloodmagic.ritual.portal.LocationsHandler;
|
||||
import WayofTime.bloodmagic.ritual.types.RitualVeilOfEvil;
|
||||
import WayofTime.bloodmagic.ritual.types.RitualWardOfSacrosanctity;
|
||||
import WayofTime.bloodmagic.soul.DemonWillHolder;
|
||||
import WayofTime.bloodmagic.util.Constants;
|
||||
import WayofTime.bloodmagic.util.Utils;
|
||||
|
@ -74,12 +77,15 @@ import net.minecraftforge.event.entity.living.LivingDropsEvent;
|
|||
import net.minecraftforge.event.entity.living.LivingEvent.LivingUpdateEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingFallEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingHurtEvent;
|
||||
import net.minecraftforge.event.entity.living.LivingSpawnEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerInteractEvent;
|
||||
import net.minecraftforge.event.entity.player.PlayerPickupXpEvent;
|
||||
import net.minecraftforge.event.world.ExplosionEvent;
|
||||
import net.minecraftforge.event.world.WorldEvent;
|
||||
import net.minecraftforge.fml.common.Loader;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
import net.minecraftforge.fml.common.eventhandler.Event.Result;
|
||||
import net.minecraftforge.fml.common.eventhandler.EventPriority;
|
||||
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.gameevent.TickEvent;
|
||||
|
@ -94,6 +100,8 @@ public class GenericHandler {
|
|||
public static Map<World, Map<EntityPlayer, Integer>> filledHandMapMap = new HashMap<>();
|
||||
private static Map<World, Map<EntityAnimal, EntityAITarget>> targetTaskMapMap = new HashMap<>();
|
||||
private static Map<World, Map<EntityAnimal, EntityAIBase>> attackTaskMapMap = new HashMap<>();
|
||||
public static Map<World, Map<IMasterRitualStone, AreaDescriptor>> preventSpawnMap = new HashMap<>();
|
||||
public static Map<World, Map<IMasterRitualStone, AreaDescriptor>> forceSpawnMap = new HashMap<>();
|
||||
public static Set<IMasterRitualStone> featherRitualSet;
|
||||
|
||||
@SubscribeEvent
|
||||
|
@ -243,9 +251,11 @@ public class GenericHandler {
|
|||
targetTaskMap.remove(animal);
|
||||
attackTaskMap.remove(animal);
|
||||
}
|
||||
} else if (targetTaskMap.containsKey(animal)) {
|
||||
targetTaskMap.remove(animal);
|
||||
attackTaskMap.remove(animal);
|
||||
} else {
|
||||
if (targetTaskMap != null)
|
||||
targetTaskMap.remove(animal);
|
||||
if (attackTaskMap != null)
|
||||
attackTaskMap.remove(animal);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -361,7 +371,7 @@ public class GenericHandler {
|
|||
|
||||
BindableHelper.applyBinding(held, player); // Bind item to the player
|
||||
}
|
||||
// If the binding exists, we'll check if the player's name has changed since they last used it and update that if so.
|
||||
// If the binding exists, we'll check if the player's name has changed since they last used it and update that if so.
|
||||
} else if (binding.getOwnerId().equals(player.getGameProfile().getId()) && !binding.getOwnerName().equals(player.getGameProfile().getName())) {
|
||||
binding.setOwnerName(player.getGameProfile().getName());
|
||||
BindableHelper.applyBinding(held, binding);
|
||||
|
@ -420,9 +430,9 @@ public class GenericHandler {
|
|||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onRitualDeath(LivingDropsEvent event){
|
||||
if(!ConfigHandler.values.wellOfSufferingDrops){
|
||||
if(event.getSource().equals(RitualManager.RITUAL_DAMAGE)) {
|
||||
public static void onRitualDeath(LivingDropsEvent event) {
|
||||
if (!ConfigHandler.values.wellOfSufferingDrops) {
|
||||
if (event.getSource().equals(RitualManager.RITUAL_DAMAGE)) {
|
||||
event.getDrops().clear();
|
||||
}
|
||||
}
|
||||
|
@ -434,10 +444,12 @@ public class GenericHandler {
|
|||
EntityPlayer player = event.getEntityPlayer();
|
||||
ItemStack itemstack = EnchantmentHelper.getEnchantedItem(Enchantments.MENDING, player);
|
||||
|
||||
if (!itemstack.isEmpty() && itemstack.isItemDamaged()) {
|
||||
int i = Math.min(xpToDurability(event.getOrb().xpValue), itemstack.getItemDamage());
|
||||
event.getOrb().xpValue -= durabilityToXp(i);
|
||||
itemstack.setItemDamage(itemstack.getItemDamage() - i);
|
||||
if (!Loader.isModLoaded("unmending")) {
|
||||
if (!itemstack.isEmpty() && itemstack.isItemDamaged()) {
|
||||
int i = Math.min(xpToDurability(event.getOrb().xpValue), itemstack.getItemDamage());
|
||||
event.getOrb().xpValue -= durabilityToXp(i);
|
||||
itemstack.setItemDamage(itemstack.getItemDamage() - i);
|
||||
}
|
||||
}
|
||||
|
||||
if (!player.getEntityWorld().isRemote) {
|
||||
|
@ -459,6 +471,77 @@ public class GenericHandler {
|
|||
return durability / 2;
|
||||
}
|
||||
|
||||
// VeilOfEvil, WardOfSacrosanctity
|
||||
@SubscribeEvent
|
||||
public static void onLivingSpawnEvent(LivingSpawnEvent.CheckSpawn event) {
|
||||
World world = event.getWorld();
|
||||
|
||||
if (!(event.getEntityLiving() instanceof EntityMob)) {
|
||||
return;
|
||||
}
|
||||
|
||||
/* WardOfSacrosanctity */
|
||||
|
||||
if (preventSpawnMap.containsKey(world)) {
|
||||
Map<IMasterRitualStone, AreaDescriptor> pMap = preventSpawnMap.get(world);
|
||||
|
||||
if (pMap != null) {
|
||||
for (Map.Entry<IMasterRitualStone, AreaDescriptor> entry : pMap.entrySet()) {
|
||||
IMasterRitualStone masterRitualStone = entry.getKey();
|
||||
AreaDescriptor blockRange = entry.getValue();
|
||||
|
||||
if (masterRitualStone != null && masterRitualStone.isActive() && masterRitualStone.getCurrentRitual() instanceof RitualWardOfSacrosanctity) {
|
||||
if (blockRange.offset(masterRitualStone.getBlockPos()).isWithinArea(new BlockPos(event.getX(), event.getY(), event.getZ()))) {
|
||||
switch (event.getResult()) {
|
||||
case ALLOW:
|
||||
event.setResult(Result.DEFAULT);
|
||||
break;
|
||||
case DEFAULT:
|
||||
event.setResult(Result.DENY);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
pMap.remove(masterRitualStone);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* VeilOfEvil */
|
||||
|
||||
if (forceSpawnMap.containsKey(world)) {
|
||||
Map<IMasterRitualStone, AreaDescriptor> fMap = forceSpawnMap.get(world);
|
||||
|
||||
if (fMap != null) {
|
||||
for (Map.Entry<IMasterRitualStone, AreaDescriptor> entry : fMap.entrySet()) {
|
||||
IMasterRitualStone masterRitualStone = entry.getKey();
|
||||
AreaDescriptor blockRange = entry.getValue();
|
||||
|
||||
if (masterRitualStone != null && masterRitualStone.isActive() && masterRitualStone.getCurrentRitual() instanceof RitualVeilOfEvil) {
|
||||
if (blockRange.offset(masterRitualStone.getBlockPos()).isWithinArea(new BlockPos(event.getX(), event.getY(), event.getZ()))) {
|
||||
switch (event.getResult()) {
|
||||
case DEFAULT:
|
||||
event.setResult(Result.ALLOW);
|
||||
break;
|
||||
case DENY:
|
||||
event.setResult(Result.DEFAULT);
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
}
|
||||
} else {
|
||||
fMap.remove(masterRitualStone);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void onWorldLoad(WorldEvent.Load event) {
|
||||
World world = event.getWorld();
|
||||
|
@ -466,6 +549,8 @@ public class GenericHandler {
|
|||
filledHandMapMap.computeIfAbsent(world, k -> new HashMap<>());
|
||||
attackTaskMapMap.computeIfAbsent(world, k -> new HashMap<>());
|
||||
targetTaskMapMap.computeIfAbsent(world, k -> new HashMap<>());
|
||||
forceSpawnMap.computeIfAbsent(world, k -> new HashMap<>());
|
||||
preventSpawnMap.computeIfAbsent(world, k -> new HashMap<>());
|
||||
PotionEventHandlers.flightListMap.computeIfAbsent(world, k -> new ArrayList<>());
|
||||
PotionEventHandlers.noGravityListMap.computeIfAbsent(world, k -> new ArrayList<>());
|
||||
LocationsHandler.verifyIsInitialized();
|
||||
|
@ -474,12 +559,14 @@ public class GenericHandler {
|
|||
@SubscribeEvent
|
||||
public static void onWorldUnload(WorldEvent.Unload event) {
|
||||
World world = event.getWorld();
|
||||
bounceMapMap.get(world).clear();
|
||||
filledHandMapMap.get(world).clear();
|
||||
attackTaskMapMap.get(world).clear();
|
||||
targetTaskMapMap.get(world).clear();
|
||||
PotionEventHandlers.flightListMap.get(world).clear();
|
||||
PotionEventHandlers.noGravityListMap.get(world).clear();
|
||||
bounceMapMap.remove(world);
|
||||
filledHandMapMap.remove(world);
|
||||
attackTaskMapMap.remove(world);
|
||||
targetTaskMapMap.remove(world);
|
||||
forceSpawnMap.remove(world);
|
||||
preventSpawnMap.remove(world);
|
||||
PotionEventHandlers.flightListMap.remove(world);
|
||||
PotionEventHandlers.noGravityListMap.remove(world);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue