From a792b9373a49751024daecf535e28e059123f048 Mon Sep 17 00:00:00 2001 From: Lizbeth Rika Date: Wed, 6 Aug 2014 17:36:24 +0100 Subject: [PATCH] Added Creative abilities to the platforms. --- .../botania/common/block/BlockPlatform.java | 9 +++- .../botania/common/block/tile/TileCamo.java | 2 +- .../common/block/tile/TilePlatform.java | 42 ++++++++++++++++++- .../common/crafting/ModCrafingRecipes.java | 14 ++++--- 4 files changed, 58 insertions(+), 9 deletions(-) diff --git a/MODSRC/vazkii/botania/common/block/BlockPlatform.java b/MODSRC/vazkii/botania/common/block/BlockPlatform.java index 5e10ab5af..1f502749a 100644 --- a/MODSRC/vazkii/botania/common/block/BlockPlatform.java +++ b/MODSRC/vazkii/botania/common/block/BlockPlatform.java @@ -26,6 +26,7 @@ import net.minecraft.util.IIcon; import net.minecraft.world.World; import vazkii.botania.api.lexicon.ILexiconable; import vazkii.botania.api.lexicon.LexiconEntry; +import vazkii.botania.api.wand.IWandable; import vazkii.botania.client.core.helper.IconHelper; import vazkii.botania.common.block.tile.TileCamo; import vazkii.botania.common.block.tile.TilePlatform; @@ -34,7 +35,7 @@ import vazkii.botania.common.lexicon.LexiconData; import vazkii.botania.common.lib.LibBlockNames; import cpw.mods.fml.common.registry.GameRegistry; -public class BlockPlatform extends BlockCamo implements ILexiconable { +public class BlockPlatform extends BlockCamo implements ILexiconable, IWandable { IIcon[] icons; private static final int SUBTYPES = 3; @@ -105,4 +106,10 @@ public class BlockPlatform extends BlockCamo implements ILexiconable { return meta == 0 ? LexiconData.platform : meta == 2 ? null : LexiconData.spectralPlatform; } + @Override + public boolean onUsedByWand(EntityPlayer player, ItemStack stack, World world, int x, int y, int z, int side) { + TilePlatform tile = (TilePlatform) world.getTileEntity(x, y, z); + return tile.onWanded(player); + } + } \ No newline at end of file diff --git a/MODSRC/vazkii/botania/common/block/tile/TileCamo.java b/MODSRC/vazkii/botania/common/block/tile/TileCamo.java index 5427cfedf..a37221872 100644 --- a/MODSRC/vazkii/botania/common/block/tile/TileCamo.java +++ b/MODSRC/vazkii/botania/common/block/tile/TileCamo.java @@ -32,7 +32,7 @@ public class TileCamo extends TileMod { @Override public void writeCustomNBT(NBTTagCompound cmp) { - if(camo!=null) { + if(camo != null) { cmp.setString(TAG_CAMO, Block.blockRegistry.getNameForObject(camo)); cmp.setInteger(TAG_CAMO_META, camoMeta); } diff --git a/MODSRC/vazkii/botania/common/block/tile/TilePlatform.java b/MODSRC/vazkii/botania/common/block/tile/TilePlatform.java index 7176db9be..2aadd3c3e 100644 --- a/MODSRC/vazkii/botania/common/block/tile/TilePlatform.java +++ b/MODSRC/vazkii/botania/common/block/tile/TilePlatform.java @@ -11,6 +11,10 @@ */ package vazkii.botania.common.block.tile; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChunkCoordinates; +import net.minecraftforge.common.util.ForgeDirection; import vazkii.botania.api.mana.IManaCollisionGhost; public class TilePlatform extends TileCamo implements IManaCollisionGhost { @@ -19,5 +23,41 @@ public class TilePlatform extends TileCamo implements IManaCollisionGhost { public boolean isGhost() { return true; } - + + public boolean onWanded(EntityPlayer player) { + if(player != null && player.capabilities.isCreativeMode) { + if(player.isSneaking()) + swapSelfAndPass(this, true); + else swapSurroudings(this, false); + return true; + } + + return false; + } + + void swapSelfAndPass(TilePlatform tile, boolean empty) { + swap(tile, empty); + swapSurroudings(tile, empty); + } + + void swapSurroudings(TilePlatform tile, boolean empty) { + for(ForgeDirection dir : ForgeDirection.VALID_DIRECTIONS) { + int x = tile.xCoord + dir.offsetX; + int y = tile.yCoord + dir.offsetY; + int z = tile.zCoord + dir.offsetZ; + TileEntity tileAt = worldObj.getTileEntity(x, y, z); + if(tileAt != null && tile instanceof TilePlatform) { + TilePlatform platform = (TilePlatform) tileAt; + if(empty ? platform.camo != null : platform.camo == null) + swapSelfAndPass(platform, empty); + } + } + } + + void swap(TilePlatform tile, boolean empty) { + tile.camo = empty ? null : camo; + tile.camoMeta = empty ? 0 : camoMeta; + worldObj.markBlockForUpdate(tile.xCoord, tile.yCoord, tile.zCoord); + } + } diff --git a/MODSRC/vazkii/botania/common/crafting/ModCrafingRecipes.java b/MODSRC/vazkii/botania/common/crafting/ModCrafingRecipes.java index c7e6900ec..80134994d 100644 --- a/MODSRC/vazkii/botania/common/crafting/ModCrafingRecipes.java +++ b/MODSRC/vazkii/botania/common/crafting/ModCrafingRecipes.java @@ -733,11 +733,12 @@ public final class ModCrafingRecipes { recipesShinyFlowers = BotaniaAPI.getLatestAddedRecipes(16); // Abstruse Platform Recipe - GameRegistry.addRecipe(new ItemStack(ModBlocks.platform), - "343", "0 0", + addOreDictRecipe(new ItemStack(ModBlocks.platform, 2), + "343", "0P0", '0', new ItemStack(ModBlocks.livingwood, 0, 0), '3', new ItemStack(ModBlocks.livingwood, 0, 3), - '4', new ItemStack(ModBlocks.livingwood, 0, 4)); + '4', new ItemStack(ModBlocks.livingwood, 0, 4), + 'P', LibOreDict.MANA_PEARL); recipePlatform = BotaniaAPI.getLatestAddedRecipe(); // Soulscribe Recipe @@ -884,11 +885,12 @@ public final class ModCrafingRecipes { recipeRainbowRod = BotaniaAPI.getLatestAddedRecipe(); // Spectral Platform Recipe - GameRegistry.addRecipe(new ItemStack(ModBlocks.platform, 1, 1), - "343", "0 0", + addOreDictRecipe(new ItemStack(ModBlocks.platform, 2, 1), + "343", "0D0", '0', new ItemStack(ModBlocks.dreamwood, 0, 0), '3', new ItemStack(ModBlocks.dreamwood, 0, 3), - '4', new ItemStack(ModBlocks.dreamwood, 0, 4)); + '4', new ItemStack(ModBlocks.dreamwood, 0, 4), + 'D', LibOreDict.PIXIE_DUST); recipeSpectralPlatform = BotaniaAPI.getLatestAddedRecipe(); // Elven Mana Spreader Recipes