Merge branch '1.12' into gate-of-the-fold

This commit is contained in:
Tobias 2020-12-30 20:37:59 +01:00 committed by GitHub
commit 4248d04263
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
124 changed files with 2758 additions and 2716 deletions

View file

@ -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);
}
}