From a10b2ece9a5775cad8e4edf9f20660d2a14889fc Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Wed, 16 Aug 2017 17:29:24 -0700 Subject: [PATCH] Fixed altar detection --- .../bloodmagic/altar/BloodAltar.java | 39 ++++++++----------- .../bloodmagic/api_impl/BloodMagicAPI.java | 14 ++++--- .../bloodmagic/item/ItemAltarMaker.java | 20 +++++----- .../WayofTime/bloodmagic/util/PluginUtil.java | 2 + .../models/item/blockalchemyarray.json | 10 ----- .../models/item/blockbloodlight.json | 10 ----- .../models/item/blockdimensionalportal.json | 22 ----------- .../models/item/blockpedestal0.json | 10 ----- .../models/item/blockpedestal1.json | 10 ----- .../bloodmagic/models/item/blockphantom.json | 10 ----- .../bloodmagic/models/item/blockspectral.json | 10 ----- .../bloodmagic/models/item/itembloodorb.json | 6 --- .../models/item/itembloodorbapprentice.json | 6 --- .../models/item/itembloodorbarchmage.json | 6 --- .../models/item/itembloodorbmagician.json | 6 --- .../models/item/itembloodorbmaster.json | 6 --- .../models/item/itembloodorbtranscendent.json | 6 --- .../models/item/itembloodorbweak.json | 6 --- .../bloodmagic/models/item/itemmodelbase.json | 3 -- .../models/item/itemsentientarmourgem0.json | 11 ------ .../models/item/itemsentientarmourgem1.json | 12 ------ .../bloodmagic/models/item/itemtoolbase.json | 15 ------- 22 files changed, 36 insertions(+), 204 deletions(-) delete mode 100644 src/main/resources/assets/bloodmagic/models/item/blockalchemyarray.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/blockbloodlight.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/blockdimensionalportal.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/blockpedestal0.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/blockpedestal1.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/blockphantom.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/blockspectral.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/itembloodorb.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/itembloodorbapprentice.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/itembloodorbarchmage.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/itembloodorbmagician.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/itembloodorbmaster.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/itembloodorbtranscendent.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/itembloodorbweak.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/itemmodelbase.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/itemsentientarmourgem0.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/itemsentientarmourgem1.json delete mode 100644 src/main/resources/assets/bloodmagic/models/item/itemtoolbase.json diff --git a/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java b/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java index 23cc695f..b4846dfa 100644 --- a/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java +++ b/src/main/java/WayofTime/bloodmagic/altar/BloodAltar.java @@ -653,17 +653,16 @@ public class BloodAltar implements IFluidHandler { BlockPos componentPos = worldPos.add(altarComponent.getOffset()); IBlockState state = world.getBlockState(componentPos); - if (altarComponent.getComponent() == EnumAltarComponent.NOTAIR && world.isAirBlock(componentPos)) - return false; + if (altarComponent.getComponent() != EnumAltarComponent.NOTAIR) { + if (state.getBlock() instanceof IAltarComponent) { + EnumAltarComponent component = ((IAltarComponent) state.getBlock()).getType(world, state, componentPos); + if (component == null || component != altarComponent.getComponent()) + return false; + } - if (state.getBlock() instanceof IAltarComponent) { - EnumAltarComponent component = ((IAltarComponent) state.getBlock()).getType(world, state, componentPos); - if (component == null || component != altarComponent.getComponent()) + if (!BloodMagicAPI.INSTANCE.getComponentStates(altarComponent.getComponent()).contains(state)) return false; - } - - EnumAltarComponent component = BloodMagicAPI.INSTANCE.getAltarComponents().get(state); - if (component == null || component != altarComponent.getComponent()) + } else if (world.isAirBlock(componentPos)) return false; } @@ -671,28 +670,24 @@ public class BloodAltar implements IFluidHandler { } public static Pair getAltarMissingBlock(World world, BlockPos worldPos, int altarTier) { - if (altarTier >= EnumAltarTier.MAXTIERS) { + if (altarTier >= EnumAltarTier.MAXTIERS) return null; - } for (AltarComponent altarComponent : EnumAltarTier.values()[altarTier].getAltarComponents()) { BlockPos componentPos = worldPos.add(altarComponent.getOffset()); - BlockStack worldBlock = new BlockStack(world.getBlockState(componentPos).getBlock(), world.getBlockState(componentPos).getBlock().getMetaFromState(world.getBlockState(componentPos))); + IBlockState state = world.getBlockState(componentPos); if (altarComponent.getComponent() != EnumAltarComponent.NOTAIR) { - if (worldBlock.getBlock() instanceof IAltarComponent) { - EnumAltarComponent component = ((IAltarComponent) worldBlock.getBlock()).getType(world, worldBlock.getState(), componentPos); - if (component == null || component != altarComponent.getComponent()) { + if (state.getBlock() instanceof IAltarComponent) { + EnumAltarComponent component = ((IAltarComponent) state.getBlock()).getType(world, state, componentPos); + if (component == null || component != altarComponent.getComponent()) return Pair.of(componentPos, altarComponent.getComponent()); - } - } else if (worldBlock.getBlock() != Utils.getBlockForComponent(altarComponent.getComponent())) { - return new ImmutablePair(componentPos, altarComponent.getComponent()); } - } else { - if (world.isAirBlock(componentPos)) { + + if (!BloodMagicAPI.INSTANCE.getComponentStates(altarComponent.getComponent()).contains(state)) return Pair.of(componentPos, altarComponent.getComponent()); - } - } + } else if (world.isAirBlock(componentPos)) + return Pair.of(componentPos, altarComponent.getComponent()); } return null; diff --git a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicAPI.java b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicAPI.java index 2177fa35..b2fc17ce 100644 --- a/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicAPI.java +++ b/src/main/java/WayofTime/bloodmagic/api_impl/BloodMagicAPI.java @@ -2,12 +2,14 @@ package WayofTime.bloodmagic.api_impl; import WayofTime.bloodmagic.api.altar.EnumAltarComponent; import WayofTime.bloodmagic.apiv2.IBloodMagicAPI; +import com.google.common.collect.ArrayListMultimap; import com.google.common.collect.ImmutableMap; import com.google.common.collect.Maps; +import com.google.common.collect.Multimap; import net.minecraft.block.state.IBlockState; import net.minecraft.util.ResourceLocation; -import java.util.Map; +import java.util.*; public class BloodMagicAPI implements IBloodMagicAPI { @@ -15,12 +17,12 @@ public class BloodMagicAPI implements IBloodMagicAPI { private final BloodMagicBlacklist blacklist; private final Map sacrificialValues; - private final Map altarComponents; + private final Multimap altarComponents; public BloodMagicAPI() { this.blacklist = new BloodMagicBlacklist(); this.sacrificialValues = Maps.newHashMap(); - this.altarComponents = Maps.newHashMap(); + this.altarComponents = ArrayListMultimap.create(); } @Override @@ -43,14 +45,14 @@ public class BloodMagicAPI implements IBloodMagicAPI { } } - altarComponents.put(state, component); + altarComponents.put(component, state); } public Map getSacrificialValues() { return ImmutableMap.copyOf(sacrificialValues); } - public Map getAltarComponents() { - return ImmutableMap.copyOf(altarComponents); + public List getComponentStates(EnumAltarComponent component) { + return (List) altarComponents.get(component); } } diff --git a/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java b/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java index 123f06f1..442ecd96 100644 --- a/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java +++ b/src/main/java/WayofTime/bloodmagic/item/ItemAltarMaker.java @@ -3,21 +3,19 @@ package WayofTime.bloodmagic.item; import WayofTime.bloodmagic.BloodMagic; import WayofTime.bloodmagic.altar.BloodAltar; import WayofTime.bloodmagic.api.Constants; -import WayofTime.bloodmagic.api.altar.AltarComponent; -import WayofTime.bloodmagic.api.altar.EnumAltarTier; -import WayofTime.bloodmagic.api.altar.IAltarManipulator; -import WayofTime.bloodmagic.api.altar.IBloodAltar; +import WayofTime.bloodmagic.api.altar.*; import WayofTime.bloodmagic.api.util.helper.NBTHelper; +import WayofTime.bloodmagic.api_impl.BloodMagicAPI; import WayofTime.bloodmagic.block.BlockAltar; import WayofTime.bloodmagic.client.IVariantProvider; import WayofTime.bloodmagic.util.ChatUtil; -import WayofTime.bloodmagic.util.Utils; + import WayofTime.bloodmagic.util.helper.NumeralHelper; import WayofTime.bloodmagic.util.helper.TextHelper; -import net.minecraft.block.Block; import net.minecraft.block.state.IBlockState; import net.minecraft.client.util.ITooltipFlag; import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.util.ActionResult; @@ -111,9 +109,12 @@ public class ItemAltarMaker extends Item implements IAltarManipulator, IVariantP for (AltarComponent altarComponent : tierToBuild.getAltarComponents()) { BlockPos componentPos = pos.add(altarComponent.getOffset()); - Block blockForComponent = Utils.getBlockForComponent(altarComponent.getComponent()); + if (altarComponent.getComponent() == EnumAltarComponent.NOTAIR) { + world.setBlockState(componentPos, Blocks.STONEBRICK.getDefaultState()); + continue; + } - world.setBlockState(componentPos, blockForComponent.getDefaultState(), 3); + world.setBlockState(componentPos, BloodMagicAPI.INSTANCE.getComponentStates(altarComponent.getComponent()).get(0)); } ((IBloodAltar) world.getTileEntity(pos)).checkTier(); @@ -134,10 +135,7 @@ public class ItemAltarMaker extends Item implements IAltarManipulator, IVariantP else { for (AltarComponent altarComponent : altarTier.getAltarComponents()) { BlockPos componentPos = pos.add(altarComponent.getOffset()); - IBlockState componentState = world.getBlockState(pos); - world.setBlockToAir(componentPos); - world.notifyBlockUpdate(componentPos, componentState, componentState, 3); } } diff --git a/src/main/java/WayofTime/bloodmagic/util/PluginUtil.java b/src/main/java/WayofTime/bloodmagic/util/PluginUtil.java index e84b34fd..5b09e100 100644 --- a/src/main/java/WayofTime/bloodmagic/util/PluginUtil.java +++ b/src/main/java/WayofTime/bloodmagic/util/PluginUtil.java @@ -31,6 +31,8 @@ public class PluginUtil { } } + // Bring core plugin up to top + discoveredAnnotations.sort((o1, o2) -> o1.getLeft().getClass().getCanonicalName().startsWith("WayofTime") ? 1 : 0); return discoveredAnnotations; } } diff --git a/src/main/resources/assets/bloodmagic/models/item/blockalchemyarray.json b/src/main/resources/assets/bloodmagic/models/item/blockalchemyarray.json deleted file mode 100644 index 67c44a6e..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/blockalchemyarray.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "bloodmagic:block/BlockAlchemyArray", - "display": { - "thirdperson": { - "rotation": [ 10, -45, 170 ], - "translation": [ 0, 1.5, -2.75 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/blockbloodlight.json b/src/main/resources/assets/bloodmagic/models/item/blockbloodlight.json deleted file mode 100644 index 68fd1bc5..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/blockbloodlight.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "bloodmagic:block/BlockBloodLight", - "display": { - "thirdperson": { - "rotation": [ 10, -45, 170 ], - "translation": [ 0, 1.5, -2.75 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/blockdimensionalportal.json b/src/main/resources/assets/bloodmagic/models/item/blockdimensionalportal.json deleted file mode 100644 index c342e9c0..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/blockdimensionalportal.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "parent": "bloodmagic:block/BlockDimensionalPortal", - "display": { - "thirdperson": { - "rotation": [ - 10, - -45, - 170 - ], - "translation": [ - 0, - 1.5, - -2.75 - ], - "scale": [ - 0.375, - 0.375, - 0.375 - ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/blockpedestal0.json b/src/main/resources/assets/bloodmagic/models/item/blockpedestal0.json deleted file mode 100644 index 7e9dac62..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/blockpedestal0.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "bloodmagic:block/BlockPedestal0", - "display": { - "thirdperson": { - "rotation": [ 10, -45, 170 ], - "translation": [ 0, 1.5, -2.75 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/blockpedestal1.json b/src/main/resources/assets/bloodmagic/models/item/blockpedestal1.json deleted file mode 100644 index f8f8a3a4..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/blockpedestal1.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "bloodmagic:block/BlockPedestal1", - "display": { - "thirdperson": { - "rotation": [ 10, -45, 170 ], - "translation": [ 0, 1.5, -2.75 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/blockphantom.json b/src/main/resources/assets/bloodmagic/models/item/blockphantom.json deleted file mode 100644 index 106c3501..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/blockphantom.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "bloodmagic:block/BlockPhantom", - "display": { - "thirdperson": { - "rotation": [ 10, -45, 170 ], - "translation": [ 0, 1.5, -2.75 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/blockspectral.json b/src/main/resources/assets/bloodmagic/models/item/blockspectral.json deleted file mode 100644 index 67bd40b9..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/blockspectral.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "parent": "bloodmagic:block/BlockSpectral", - "display": { - "thirdperson": { - "rotation": [ 10, -45, 170 ], - "translation": [ 0, 1.5, -2.75 ], - "scale": [ 0.375, 0.375, 0.375 ] - } - } -} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/itembloodorb.json b/src/main/resources/assets/bloodmagic/models/item/itembloodorb.json deleted file mode 100644 index 12d55a89..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/itembloodorb.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent":"bloodmagic:item/ItemModelBase", - "textures": { - "layer0":"bloodmagic:items/WeakBloodOrb" - } -} diff --git a/src/main/resources/assets/bloodmagic/models/item/itembloodorbapprentice.json b/src/main/resources/assets/bloodmagic/models/item/itembloodorbapprentice.json deleted file mode 100644 index 1d1a48af..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/itembloodorbapprentice.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent":"bloodmagic:item/ItemModelBase", - "textures": { - "layer0":"bloodmagic:items/ApprenticeBloodOrb" - } -} diff --git a/src/main/resources/assets/bloodmagic/models/item/itembloodorbarchmage.json b/src/main/resources/assets/bloodmagic/models/item/itembloodorbarchmage.json deleted file mode 100644 index 0f7289fa..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/itembloodorbarchmage.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent":"bloodmagic:item/ItemModelBase", - "textures": { - "layer0":"bloodmagic:items/ArchmageBloodOrb" - } -} diff --git a/src/main/resources/assets/bloodmagic/models/item/itembloodorbmagician.json b/src/main/resources/assets/bloodmagic/models/item/itembloodorbmagician.json deleted file mode 100644 index b1a6d7ec..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/itembloodorbmagician.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent":"bloodmagic:item/ItemModelBase", - "textures": { - "layer0":"bloodmagic:items/MagicianBloodOrb" - } -} diff --git a/src/main/resources/assets/bloodmagic/models/item/itembloodorbmaster.json b/src/main/resources/assets/bloodmagic/models/item/itembloodorbmaster.json deleted file mode 100644 index 27d6c881..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/itembloodorbmaster.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent":"bloodmagic:item/ItemModelBase", - "textures": { - "layer0":"bloodmagic:items/MasterBloodOrb" - } -} diff --git a/src/main/resources/assets/bloodmagic/models/item/itembloodorbtranscendent.json b/src/main/resources/assets/bloodmagic/models/item/itembloodorbtranscendent.json deleted file mode 100644 index 20eba4e8..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/itembloodorbtranscendent.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent":"bloodmagic:item/ItemModelBase", - "textures": { - "layer0":"bloodmagic:items/TranscendentBloodOrb" - } -} diff --git a/src/main/resources/assets/bloodmagic/models/item/itembloodorbweak.json b/src/main/resources/assets/bloodmagic/models/item/itembloodorbweak.json deleted file mode 100644 index 12d55a89..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/itembloodorbweak.json +++ /dev/null @@ -1,6 +0,0 @@ -{ - "parent":"bloodmagic:item/ItemModelBase", - "textures": { - "layer0":"bloodmagic:items/WeakBloodOrb" - } -} diff --git a/src/main/resources/assets/bloodmagic/models/item/itemmodelbase.json b/src/main/resources/assets/bloodmagic/models/item/itemmodelbase.json deleted file mode 100644 index a5461048..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/itemmodelbase.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "parent":"item/generated" -} \ No newline at end of file diff --git a/src/main/resources/assets/bloodmagic/models/item/itemsentientarmourgem0.json b/src/main/resources/assets/bloodmagic/models/item/itemsentientarmourgem0.json deleted file mode 100644 index 60cf7592..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/itemsentientarmourgem0.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "parent":"bloodmagic:item/ItemModelBase", - "textures": { - "layer0":"bloodmagic:items/SentientArmourGem_deactivated" - } -} - - - - - diff --git a/src/main/resources/assets/bloodmagic/models/item/itemsentientarmourgem1.json b/src/main/resources/assets/bloodmagic/models/item/itemsentientarmourgem1.json deleted file mode 100644 index 5998ca9e..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/itemsentientarmourgem1.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "parent":"bloodmagic:item/ItemModelBase", - "textures": { - "layer0":"bloodmagic:items/SentientArmourGem_activated" - } -} - - - - - - diff --git a/src/main/resources/assets/bloodmagic/models/item/itemtoolbase.json b/src/main/resources/assets/bloodmagic/models/item/itemtoolbase.json deleted file mode 100644 index 420f57b7..00000000 --- a/src/main/resources/assets/bloodmagic/models/item/itemtoolbase.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "parent":"builtin/generated", - "display": { - "thirdperson": { - "rotation": [ 0, 90, -35 ], - "translation": [ 0, 1.25, -3.5 ], - "scale": [ 0.85, 0.85, 0.85 ] - }, - "firstperson": { - "rotation": [ 0, -135, 25 ], - "translation": [ 0, 4, 2 ], - "scale": [ 1.7, 1.7, 1.7 ] - } - } -} \ No newline at end of file