From fa59e7000a1b7f385af333030645c3df90c7cefa Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Tue, 13 Feb 2018 16:31:30 -0800 Subject: [PATCH] Mark of the Falling Tower now demands sacrifices again (#1222) --- .../bloodmagic/meteor/MeteorRegistry.java | 36 +++++++++---------- .../bloodmagic/ritual/RitualMeteor.java | 10 +++--- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/src/main/java/WayofTime/bloodmagic/meteor/MeteorRegistry.java b/src/main/java/WayofTime/bloodmagic/meteor/MeteorRegistry.java index 4870d5ff..aaf4d0b3 100644 --- a/src/main/java/WayofTime/bloodmagic/meteor/MeteorRegistry.java +++ b/src/main/java/WayofTime/bloodmagic/meteor/MeteorRegistry.java @@ -1,23 +1,22 @@ package WayofTime.bloodmagic.meteor; -import WayofTime.bloodmagic.apibutnotreally.ItemStackWrapper; +import com.google.common.collect.Maps; import net.minecraft.block.state.IBlockState; import net.minecraft.item.ItemStack; import net.minecraft.util.math.BlockPos; import net.minecraft.world.World; -import java.util.HashMap; +import javax.annotation.Nullable; import java.util.List; import java.util.Map; public class MeteorRegistry { - public static Map meteorMap = new HashMap(); + + public static Map meteorMap = Maps.newHashMap(); public static void registerMeteor(ItemStack stack, Meteor holder) { - ItemStackWrapper wrapper = ItemStackWrapper.getHolder(stack); - if (wrapper != null) { - meteorMap.put(wrapper, holder); - } + if (!stack.isEmpty()) + meteorMap.put(stack, holder); } public static void registerMeteor(ItemStack stack, List componentList, float explosionStrength, int radius) { @@ -25,20 +24,21 @@ public class MeteorRegistry { registerMeteor(stack, holder); } - public static boolean hasMeteorForItem(ItemStack stack) { - ItemStackWrapper wrapper = ItemStackWrapper.getHolder(stack); - return wrapper != null && meteorMap.containsKey(wrapper); - } - + @Nullable public static Meteor getMeteorForItem(ItemStack stack) { - ItemStackWrapper wrapper = ItemStackWrapper.getHolder(stack); - return wrapper != null ? meteorMap.get(wrapper) : null; + if (stack.isEmpty()) + return null; + + for (Map.Entry entry : meteorMap.entrySet()) + if (ItemStack.areItemsEqual(stack, entry.getKey())) + return entry.getValue(); + + return null; } public static void generateMeteorForItem(ItemStack stack, World world, BlockPos pos, IBlockState fillerBlock, double radiusModifier, double explosionModifier, double fillerChance) { - Meteor holder = getMeteorForItem(stack); - if (holder != null) { - holder.generateMeteor(world, pos, fillerBlock, radiusModifier, explosionModifier, fillerChance); - } + Meteor meteor = getMeteorForItem(stack); + if (meteor != null) + meteor.generateMeteor(world, pos, fillerBlock, radiusModifier, explosionModifier, fillerChance); } } diff --git a/src/main/java/WayofTime/bloodmagic/ritual/RitualMeteor.java b/src/main/java/WayofTime/bloodmagic/ritual/RitualMeteor.java index 81299c17..36706d6e 100644 --- a/src/main/java/WayofTime/bloodmagic/ritual/RitualMeteor.java +++ b/src/main/java/WayofTime/bloodmagic/ritual/RitualMeteor.java @@ -5,6 +5,7 @@ import WayofTime.bloodmagic.apibutnotreally.ritual.*; import WayofTime.bloodmagic.apibutnotreally.soul.EnumDemonWillType; import WayofTime.bloodmagic.demonAura.WorldDemonWillHandler; import WayofTime.bloodmagic.entity.projectile.EntityMeteor; +import WayofTime.bloodmagic.meteor.Meteor; import WayofTime.bloodmagic.meteor.MeteorRegistry; import net.minecraft.entity.item.EntityItem; import net.minecraft.item.ItemStack; @@ -50,10 +51,11 @@ public class RitualMeteor extends Ritual { for (EntityItem entityItem : itemList) { ItemStack stack = entityItem.getItem(); - if (MeteorRegistry.hasMeteorForItem(stack)) { - EntityMeteor meteor = new EntityMeteor(world, pos.getX(), 260, pos.getZ(), 0, -0.1, 0, radiusModifier, explosionModifier, fillerChance); - meteor.setMeteorStack(stack.copy()); - world.spawnEntity(meteor); + Meteor meteor = MeteorRegistry.getMeteorForItem(stack); + if (meteor != null) { + EntityMeteor entityMeteor = new EntityMeteor(world, pos.getX(), 260, pos.getZ(), 0, -0.1, 0, radiusModifier, explosionModifier, fillerChance); + entityMeteor.setMeteorStack(stack.copy()); + world.spawnEntity(entityMeteor); entityItem.setDead();