From 72c321acb0dc2f038ab71cd0feeae2533de6bbf7 Mon Sep 17 00:00:00 2001 From: Nicholas Ignoffo Date: Mon, 13 Feb 2017 19:35:14 -0800 Subject: [PATCH] Implement an inverted MRS that requires an RS signal to function (#1022) (cherry picked from commit ddb7542) --- .../bloodmagic/block/BlockRitualController.java | 14 +++++++++----- .../block/enums/EnumRitualController.java | 4 +++- .../provider/DataProviderRitualController.java | 6 ++++-- .../WayofTime/bloodmagic/registry/ModRecipes.java | 2 ++ .../bloodmagic/tile/TileMasterRitualStone.java | 14 ++++++++++++-- .../blockstates/blockritualcontroller.json | 5 +++++ .../resources/assets/bloodmagic/lang/en_US.lang | 3 +++ .../blocks/masterritualstone_inverted.png | Bin 0 -> 724 bytes 8 files changed, 38 insertions(+), 10 deletions(-) create mode 100644 src/main/resources/assets/bloodmagic/textures/blocks/masterritualstone_inverted.png diff --git a/src/main/java/WayofTime/bloodmagic/block/BlockRitualController.java b/src/main/java/WayofTime/bloodmagic/block/BlockRitualController.java index 5e6797db..8f6f1492 100644 --- a/src/main/java/WayofTime/bloodmagic/block/BlockRitualController.java +++ b/src/main/java/WayofTime/bloodmagic/block/BlockRitualController.java @@ -60,7 +60,7 @@ public class BlockRitualController extends BlockEnum imple ItemStack heldItem = player.getHeldItem(hand); TileEntity tile = world.getTileEntity(pos); - if (getMetaFromState(state) == 0 && tile instanceof TileMasterRitualStone) + if (state.getValue(getProperty()) != EnumRitualController.IMPERFECT && tile instanceof TileMasterRitualStone) { if (heldItem.getItem() == ModItems.ACTIVATION_CRYSTAL) { @@ -73,13 +73,15 @@ public class BlockRitualController extends BlockEnum imple if (((TileMasterRitualStone) tile).activateRitual(heldItem, player, RitualRegistry.getRitualForId(key))) { ((TileMasterRitualStone) tile).setDirection(direction); + if (state.getValue(getProperty()) == EnumRitualController.INVERTED) + ((TileMasterRitualStone) tile).setInverted(true); } } else { ChatUtil.sendNoSpamUnloc(player, "chat.bloodmagic.ritual.notValid"); } } - } else if (getMetaFromState(state) == 1 && tile instanceof TileImperfectRitualStone) + } else if (state.getValue(getProperty()) == EnumRitualController.IMPERFECT && tile instanceof TileImperfectRitualStone) { IBlockState determinerState = world.getBlockState(pos.up()); @@ -110,13 +112,15 @@ public class BlockRitualController extends BlockEnum imple } @Override - public boolean hasTileEntity(IBlockState state) { + public boolean hasTileEntity(IBlockState state) + { return true; } @Override - public TileEntity createTileEntity(World world, IBlockState state) { - return state.getValue(getProperty()) == EnumRitualController.MASTER ? new TileMasterRitualStone() : new TileImperfectRitualStone(); + public TileEntity createTileEntity(World world, IBlockState state) + { + return state.getValue(getProperty()) != EnumRitualController.IMPERFECT ? new TileMasterRitualStone() : new TileImperfectRitualStone(); } // IVariantProvider diff --git a/src/main/java/WayofTime/bloodmagic/block/enums/EnumRitualController.java b/src/main/java/WayofTime/bloodmagic/block/enums/EnumRitualController.java index 45b22b24..46250f3a 100644 --- a/src/main/java/WayofTime/bloodmagic/block/enums/EnumRitualController.java +++ b/src/main/java/WayofTime/bloodmagic/block/enums/EnumRitualController.java @@ -7,7 +7,9 @@ import net.minecraft.util.IStringSerializable; public enum EnumRitualController implements IStringSerializable { MASTER, - IMPERFECT; + IMPERFECT, + INVERTED, + ; @Override public String toString() diff --git a/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderRitualController.java b/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderRitualController.java index a3bc6c1b..60100dad 100644 --- a/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderRitualController.java +++ b/src/main/java/WayofTime/bloodmagic/compat/waila/provider/DataProviderRitualController.java @@ -47,7 +47,9 @@ public class DataProviderRitualController implements IWailaDataProvider { if (accessor.getBlock() instanceof BlockRitualController) { - if (accessor.getBlock().getMetaFromState(accessor.getBlockState()) == 0 && accessor.getTileEntity() instanceof TileMasterRitualStone) + int controllerMeta = accessor.getBlock().getMetaFromState(accessor.getBlockState()); + + if ((controllerMeta == 0 || controllerMeta == 2) && accessor.getTileEntity() instanceof TileMasterRitualStone) { TileMasterRitualStone mrs = (TileMasterRitualStone) accessor.getTileEntity(); @@ -63,7 +65,7 @@ public class DataProviderRitualController implements IWailaDataProvider } } - if (accessor.getBlock().getMetaFromState(accessor.getBlockState()) == 1 && accessor.getTileEntity() instanceof TileImperfectRitualStone) + if (controllerMeta == 1 && accessor.getTileEntity() instanceof TileImperfectRitualStone) { if (accessor.getWorld().isAirBlock(accessor.getPosition().up())) { diff --git a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java index 5e47ff68..42ea9744 100644 --- a/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java +++ b/src/main/java/WayofTime/bloodmagic/registry/ModRecipes.java @@ -150,6 +150,8 @@ public class ModRecipes GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.RITUAL_STONE, 4), "aba", "bcb", "aba", 'a', Blocks.OBSIDIAN, 'b', new ItemStack(ModItems.SLATE, 1, 1), 'c', OrbRegistry.getOrbStack(ModItems.ORB_APPRENTICE))); GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.RITUAL_CONTROLLER), "aba", "bcb", "aba", 'a', Blocks.OBSIDIAN, 'b', ModBlocks.RITUAL_STONE, 'c', OrbRegistry.getOrbStack(ModItems.ORB_MAGICIAN))); GameRegistry.addRecipe(new ShapedBloodOrbRecipe(new ItemStack(ModBlocks.RITUAL_CONTROLLER, 1, 1), "aba", "bcb", "aba", 'a', Blocks.OBSIDIAN, 'b', "stone", 'c', OrbRegistry.getOrbStack(ModItems.ORB_WEAK))); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModBlocks.RITUAL_CONTROLLER, 1, 2), new ItemStack(ModBlocks.RITUAL_CONTROLLER), new ItemStack(Blocks.REDSTONE_TORCH), new ItemStack(ModItems.SLATE))); + GameRegistry.addRecipe(new ShapelessOreRecipe(new ItemStack(ModBlocks.RITUAL_CONTROLLER), new ItemStack(ModBlocks.RITUAL_CONTROLLER, 1, 2))); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.BASE_ITEM_FILTER, 1, 0), "sgs", "gfg", "sgs", 'f', ItemComponent.getStack(ItemComponent.COMPONENT_FRAME_PART), 'g', "blockGlass", 's', "stickWood")); GameRegistry.addRecipe(new ShapedOreRecipe(new ItemStack(ModItems.BASE_ITEM_FILTER, 1, 1), "sgs", "gfg", "sgs", 'f', ItemComponent.getStack(ItemComponent.COMPONENT_FRAME_PART), 'g', "dyeYellow", 's', "stickWood")); diff --git a/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java b/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java index 0b361f9a..c1029098 100644 --- a/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java +++ b/src/main/java/WayofTime/bloodmagic/tile/TileMasterRitualStone.java @@ -46,6 +46,8 @@ public class TileMasterRitualStone extends TileTicking implements IMasterRitualS private Ritual currentRitual; @Setter private EnumFacing direction = EnumFacing.NORTH; + @Setter + private boolean inverted; private List currentActiveWillConfig = new ArrayList(); @@ -55,7 +57,7 @@ public class TileMasterRitualStone extends TileTicking implements IMasterRitualS if (getWorld().isRemote) return; - if (getWorld().isBlockPowered(getPos()) && isActive()) + if (isPowered() && isActive()) { active = false; redstoned = true; @@ -63,7 +65,7 @@ public class TileMasterRitualStone extends TileTicking implements IMasterRitualS return; } - if (!isActive() && !getWorld().isBlockPowered(getPos()) && isRedstoned() && getCurrentRitual() != null) + if (!isActive() && !isPowered() && isRedstoned() && getCurrentRitual() != null) { active = true; ItemStack crystalStack = NBTHelper.checkNBT(new ItemStack(ModItems.ACTIVATION_CRYSTAL, 1, getCurrentRitual().getCrystalLevel())); @@ -405,4 +407,12 @@ public class TileMasterRitualStone extends TileTicking implements IMasterRitualS ChatUtil.sendNoSpam(player, new TextComponentTranslation("ritual.bloodmagic.willConfig.void")); } } + + public boolean isPowered() + { + if (inverted) + return !getWorld().isBlockPowered(getPos()); + + return getWorld().isBlockPowered(getPos()); + } } diff --git a/src/main/resources/assets/bloodmagic/blockstates/blockritualcontroller.json b/src/main/resources/assets/bloodmagic/blockstates/blockritualcontroller.json index 784afa96..1b8b489e 100644 --- a/src/main/resources/assets/bloodmagic/blockstates/blockritualcontroller.json +++ b/src/main/resources/assets/bloodmagic/blockstates/blockritualcontroller.json @@ -16,6 +16,11 @@ "textures": { "all": "bloodmagic:blocks/ImperfectRitualStone" } + }, + "inverted": { + "textures": { + "all": "bloodmagic:blocks/MasterRitualStone_Inverted" + } } } } diff --git a/src/main/resources/assets/bloodmagic/lang/en_US.lang b/src/main/resources/assets/bloodmagic/lang/en_US.lang index 50982019..b27ec8f1 100644 --- a/src/main/resources/assets/bloodmagic/lang/en_US.lang +++ b/src/main/resources/assets/bloodmagic/lang/en_US.lang @@ -198,6 +198,7 @@ tile.bloodmagic.fluid.lifeEssence.name=Life Essence tile.bloodmagic.stone.ritual.master.name=Master Ritual Stone tile.bloodmagic.stone.ritual.imperfect.name=Imperfect Ritual Stone +tile.bloodmagic.stone.ritual.inverted.name=Inverted Master Ritual Stone tile.bloodmagic.altar.name=Blood Altar tile.bloodmagic.alchemyArray.name=&r&fAlchemy Array @@ -511,6 +512,8 @@ tooltip.bloodmagic.livingArmour.upgrade.meleeDecrease=Dulled Blade tooltip.bloodmagic.livingArmour.upgrade.digSlowdown=Weakened Pick tooltip.bloodmagic.livingArmour.upgrade.stormTrooper=Storm Trooper tooltip.bloodmagic.livingArmour.upgrade.slowHeal=Diseased +tooltip.bloodmagic.livingArmour.upgrade.disoriented=Disoriented + tooltip.bloodmagic.livingArmour.upgrade.level=%s (Level %d) tooltip.bloodmagic.livingArmour.upgrade.progress=%s (%d/100) tooltip.bloodmagic.livingArmour.upgrade.points=&6Upgrade points: %s / %s diff --git a/src/main/resources/assets/bloodmagic/textures/blocks/masterritualstone_inverted.png b/src/main/resources/assets/bloodmagic/textures/blocks/masterritualstone_inverted.png new file mode 100644 index 0000000000000000000000000000000000000000..9ba93d8b8bbf23394f1c72ef43134b7804402b8b GIT binary patch literal 724 zcmV;_0xSKAP)8=17)8%FKm3=dwKtaSA`7HRfHbLt0D6ZY@3wEXNE5h9k;2~CvQ1KyL~_WPNulf$ zT%3E)mECR^0Yo5#h=?EpF+vCd5dk713WzAB03n0`fC2da?vA_dmSuLFPDixXY`3>8 z%Z!Mk?|a5^z&Qt^sH%#`f1i1Nd&9&S`T3_G`SSTQ)>zD@rm8BMFMlEmPNy?vS>n9s zaOlar=Ve*=;g8?hHw{K9#lyn`Ns{uM@Vc!XASf0@YXOnM?&Q67v^QgRwYUs#0OFl#${od9UzzxJY`iNn+?y_qO%NR z49hYTiLBRa#?f(ebHl6Ag!36ajI?b>2mvLcSg&iWb6j10pss7QRv3hAtX32;l4S-FP!KtE9m~96j3tD?@pxjDdaCh%gQVT5Gzl$NPX%N>P;+ zcA5ZTY&$X{Z(pAH%=h z;gSS^@cu*ulGGw17!l#@X42n&CC_tKtD4j4$T*H*48~dx`xnZhr0qKD^@{uZd%o^p z5mCr)w~O9;wARGfIA}A$<5Ybu@BWSG%A@U!J4Pmw=8q)y)0000