From 4ef18f8ce07983337dc9912148041aed444262c1 Mon Sep 17 00:00:00 2001 From: Lizbeth Rika Date: Sun, 28 Jun 2015 01:48:41 +0100 Subject: [PATCH] Add all the botania multiblocks. --- .../api/lexicon/multiblock/Multiblock.java | 2 ++ .../ColorSwitchingComponent.java | 2 +- .../{ => component}/MultiblockComponent.java | 2 +- .../core/handler/MultiblockRenderHandler.java | 6 +++--- .../botania/common/block/ModMultiblocks.java | 11 +++++++++- .../common/block/tile/TileAlfPortal.java | 21 +++++++++++++++++++ .../common/block/tile/TileEnchanter.java | 2 +- .../botania/common/block/tile/TilePylon.java | 2 ++ .../common/block/tile/TileTerraPlate.java | 15 +++++++++++++ .../common/entity/EntityDoppleganger.java | 17 +++++++++++++++ 10 files changed, 73 insertions(+), 7 deletions(-) rename src/main/java/vazkii/botania/api/lexicon/multiblock/{ => component}/ColorSwitchingComponent.java (95%) rename src/main/java/vazkii/botania/api/lexicon/multiblock/{ => component}/MultiblockComponent.java (96%) diff --git a/src/main/java/vazkii/botania/api/lexicon/multiblock/Multiblock.java b/src/main/java/vazkii/botania/api/lexicon/multiblock/Multiblock.java index 8083b2ec5..e48e9eaf5 100644 --- a/src/main/java/vazkii/botania/api/lexicon/multiblock/Multiblock.java +++ b/src/main/java/vazkii/botania/api/lexicon/multiblock/Multiblock.java @@ -13,6 +13,8 @@ package vazkii.botania.api.lexicon.multiblock; import java.util.ArrayList; import java.util.List; +import vazkii.botania.api.lexicon.multiblock.component.MultiblockComponent; + import com.sun.org.apache.xpath.internal.operations.Mult; import net.minecraft.block.Block; diff --git a/src/main/java/vazkii/botania/api/lexicon/multiblock/ColorSwitchingComponent.java b/src/main/java/vazkii/botania/api/lexicon/multiblock/component/ColorSwitchingComponent.java similarity index 95% rename from src/main/java/vazkii/botania/api/lexicon/multiblock/ColorSwitchingComponent.java rename to src/main/java/vazkii/botania/api/lexicon/multiblock/component/ColorSwitchingComponent.java index 7134dbf58..f3b861877 100644 --- a/src/main/java/vazkii/botania/api/lexicon/multiblock/ColorSwitchingComponent.java +++ b/src/main/java/vazkii/botania/api/lexicon/multiblock/component/ColorSwitchingComponent.java @@ -8,7 +8,7 @@ * * File Created @ [Jun 27, 2015, 7:20:09 PM (GMT)] */ -package vazkii.botania.api.lexicon.multiblock; +package vazkii.botania.api.lexicon.multiblock.component; import net.minecraft.block.Block; import net.minecraft.util.ChunkCoordinates; diff --git a/src/main/java/vazkii/botania/api/lexicon/multiblock/MultiblockComponent.java b/src/main/java/vazkii/botania/api/lexicon/multiblock/component/MultiblockComponent.java similarity index 96% rename from src/main/java/vazkii/botania/api/lexicon/multiblock/MultiblockComponent.java rename to src/main/java/vazkii/botania/api/lexicon/multiblock/component/MultiblockComponent.java index 1a6f2d226..a16b22dd5 100644 --- a/src/main/java/vazkii/botania/api/lexicon/multiblock/MultiblockComponent.java +++ b/src/main/java/vazkii/botania/api/lexicon/multiblock/component/MultiblockComponent.java @@ -8,7 +8,7 @@ * * File Created @ [Jun 27, 2015, 2:42:32 PM (GMT)] */ -package vazkii.botania.api.lexicon.multiblock; +package vazkii.botania.api.lexicon.multiblock.component; import net.minecraft.block.Block; import net.minecraft.util.ChunkCoordinates; diff --git a/src/main/java/vazkii/botania/client/core/handler/MultiblockRenderHandler.java b/src/main/java/vazkii/botania/client/core/handler/MultiblockRenderHandler.java index a4cf84143..0ed20e426 100644 --- a/src/main/java/vazkii/botania/client/core/handler/MultiblockRenderHandler.java +++ b/src/main/java/vazkii/botania/client/core/handler/MultiblockRenderHandler.java @@ -26,8 +26,8 @@ import org.lwjgl.opengl.GL11; import vazkii.botania.api.lexicon.multiblock.IMultiblockRenderHook; import vazkii.botania.api.lexicon.multiblock.Multiblock; -import vazkii.botania.api.lexicon.multiblock.MultiblockComponent; import vazkii.botania.api.lexicon.multiblock.MultiblockSet; +import vazkii.botania.api.lexicon.multiblock.component.MultiblockComponent; import vazkii.botania.common.block.ModMultiblocks; import cpw.mods.fml.common.eventhandler.SubscribeEvent; @@ -49,8 +49,8 @@ public final class MultiblockRenderHandler { } private void renderPlayerLook(EntityPlayer player, MovingObjectPosition src) { - if(currentMultiblock == null) // TODO Remove debug - currentMultiblock = ModMultiblocks.enchanter; + //if(currentMultiblock == null) // TODO Remove debug + currentMultiblock = ModMultiblocks.gaiaRitual; if(currentMultiblock != null) { Multiblock mb = currentMultiblock.getForEntity(player); diff --git a/src/main/java/vazkii/botania/common/block/ModMultiblocks.java b/src/main/java/vazkii/botania/common/block/ModMultiblocks.java index f4dd28442..b4b8460dd 100644 --- a/src/main/java/vazkii/botania/common/block/ModMultiblocks.java +++ b/src/main/java/vazkii/botania/common/block/ModMultiblocks.java @@ -11,14 +11,23 @@ package vazkii.botania.common.block; import vazkii.botania.api.lexicon.multiblock.MultiblockSet; +import vazkii.botania.common.block.tile.TileAlfPortal; import vazkii.botania.common.block.tile.TileEnchanter; +import vazkii.botania.common.block.tile.TileTerraPlate; +import vazkii.botania.common.entity.EntityDoppleganger; public final class ModMultiblocks { public static MultiblockSet enchanter; - + public static MultiblockSet alfPortal; + public static MultiblockSet terrasteelPlate; + public static MultiblockSet gaiaRitual; + public static void init() { enchanter = TileEnchanter.makeMultiblockSet(); + alfPortal = TileAlfPortal.makeMultiblockSet(); + terrasteelPlate = TileTerraPlate.makeMultiblockSet(); + gaiaRitual = EntityDoppleganger.makeMultiblockSet(); } } diff --git a/src/main/java/vazkii/botania/common/block/tile/TileAlfPortal.java b/src/main/java/vazkii/botania/common/block/tile/TileAlfPortal.java index 11581a31d..d66c6d1f7 100644 --- a/src/main/java/vazkii/botania/common/block/tile/TileAlfPortal.java +++ b/src/main/java/vazkii/botania/common/block/tile/TileAlfPortal.java @@ -20,9 +20,13 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.tileentity.TileEntity; import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChunkCoordinates; import net.minecraftforge.common.MinecraftForge; import vazkii.botania.api.BotaniaAPI; import vazkii.botania.api.lexicon.ILexicon; +import vazkii.botania.api.lexicon.multiblock.Multiblock; +import vazkii.botania.api.lexicon.multiblock.MultiblockSet; +import vazkii.botania.api.lexicon.multiblock.component.ColorSwitchingComponent; import vazkii.botania.api.recipe.ElvenPortalUpdateEvent; import vazkii.botania.api.recipe.IElvenItem; import vazkii.botania.api.recipe.RecipeElvenTrade; @@ -90,6 +94,23 @@ public class TileAlfPortal extends TileMod { return new int[] { input[0], input[1], -input[2] }; } }; + + public static MultiblockSet makeMultiblockSet() { + Multiblock mb = new Multiblock(); + + for(int[] l : LIVINGWOOD_POSITIONS) + mb.addComponent(l[0], l[1] + 1, l[2], ModBlocks.livingwood, 0); + for(int[] g : GLIMMERING_LIVINGWOOD_POSITIONS) + mb.addComponent(g[0], g[1] + 1, g[2], ModBlocks.livingwood, 5); + for(int[] p : PYLON_POSITIONS) + mb.addComponent(-p[0], p[1] + 1, -p[2], ModBlocks.pylon, 1); + for(int[] p : POOL_POSITIONS) + mb.addComponent(-p[0], p[1] + 1, -p[2], ModBlocks.pool, 0); + + mb.addComponent(0, 1, 0, ModBlocks.alfPortal, 0); + + return mb.makeSet(); + } @Override public void updateEntity() { diff --git a/src/main/java/vazkii/botania/common/block/tile/TileEnchanter.java b/src/main/java/vazkii/botania/common/block/tile/TileEnchanter.java index 0b541d5cb..5c7823964 100644 --- a/src/main/java/vazkii/botania/common/block/tile/TileEnchanter.java +++ b/src/main/java/vazkii/botania/common/block/tile/TileEnchanter.java @@ -31,9 +31,9 @@ import net.minecraft.util.AxisAlignedBB; import net.minecraft.util.ChunkCoordinates; import net.minecraft.world.World; import vazkii.botania.api.internal.VanillaPacketDispatcher; -import vazkii.botania.api.lexicon.multiblock.ColorSwitchingComponent; import vazkii.botania.api.lexicon.multiblock.Multiblock; import vazkii.botania.api.lexicon.multiblock.MultiblockSet; +import vazkii.botania.api.lexicon.multiblock.component.ColorSwitchingComponent; import vazkii.botania.api.mana.IManaPool; import vazkii.botania.api.mana.spark.ISparkAttachable; import vazkii.botania.api.mana.spark.ISparkEntity; diff --git a/src/main/java/vazkii/botania/common/block/tile/TilePylon.java b/src/main/java/vazkii/botania/common/block/tile/TilePylon.java index a2ad7f270..1744040ec 100644 --- a/src/main/java/vazkii/botania/common/block/tile/TilePylon.java +++ b/src/main/java/vazkii/botania/common/block/tile/TilePylon.java @@ -26,6 +26,8 @@ public class TilePylon extends TileEntity { int centerX, centerY, centerZ; int ticks = 0; + + @Override public void updateEntity() { ++ticks; diff --git a/src/main/java/vazkii/botania/common/block/tile/TileTerraPlate.java b/src/main/java/vazkii/botania/common/block/tile/TileTerraPlate.java index d82f38646..1f3170734 100644 --- a/src/main/java/vazkii/botania/common/block/tile/TileTerraPlate.java +++ b/src/main/java/vazkii/botania/common/block/tile/TileTerraPlate.java @@ -20,6 +20,8 @@ import net.minecraft.item.ItemStack; import net.minecraft.nbt.NBTTagCompound; import net.minecraft.util.AxisAlignedBB; import vazkii.botania.api.internal.VanillaPacketDispatcher; +import vazkii.botania.api.lexicon.multiblock.Multiblock; +import vazkii.botania.api.lexicon.multiblock.MultiblockSet; import vazkii.botania.api.mana.IManaPool; import vazkii.botania.api.mana.spark.ISparkAttachable; import vazkii.botania.api.mana.spark.ISparkEntity; @@ -44,6 +46,19 @@ public class TileTerraPlate extends TileMod implements ISparkAttachable { int mana; + public static MultiblockSet makeMultiblockSet() { + Multiblock mb = new Multiblock(); + + for(int[] l : LAPIS_BLOCKS) + mb.addComponent(l[0], 0, l[1], Blocks.lapis_block, 0); + for(int[] l : LIVINGROCK_BLOCKS) + mb.addComponent(l[0], 0, l[1], ModBlocks.livingrock, 0); + + mb.addComponent(0, 1, 0, ModBlocks.terraPlate, 0); + + return mb.makeSet(); + } + @Override public void updateEntity() { boolean removeMana = true; diff --git a/src/main/java/vazkii/botania/common/entity/EntityDoppleganger.java b/src/main/java/vazkii/botania/common/entity/EntityDoppleganger.java index e89008626..39ccf2f8d 100644 --- a/src/main/java/vazkii/botania/common/entity/EntityDoppleganger.java +++ b/src/main/java/vazkii/botania/common/entity/EntityDoppleganger.java @@ -52,6 +52,8 @@ import org.lwjgl.opengl.ARBShaderObjects; import vazkii.botania.api.boss.IBotaniaBossWithShader; import vazkii.botania.api.internal.ShaderCallback; +import vazkii.botania.api.lexicon.multiblock.Multiblock; +import vazkii.botania.api.lexicon.multiblock.MultiblockSet; import vazkii.botania.client.core.handler.BossBarHandler; import vazkii.botania.client.core.helper.ShaderHelper; import vazkii.botania.common.Botania; @@ -108,6 +110,21 @@ public class EntityDoppleganger extends EntityCreature implements IBotaniaBossWi isImmuneToFire = true; experienceValue = 825; } + + public static MultiblockSet makeMultiblockSet() { + Multiblock mb = new Multiblock(); + + for(int[] p : PYLON_LOCATIONS) + mb.addComponent(p[0], p[1] + 1, p[2], ModBlocks.pylon, 2); + + for(int i = 0; i < 3; i++) + for(int j = 0; j < 3; j++) + mb.addComponent(i - 1, 0, j - 1, Blocks.iron_block, 0); + + mb.addComponent(0, 1, 0, Blocks.beacon, 0); + + return mb.makeSet(); + } public static boolean spawn(EntityPlayer player, ItemStack par1ItemStack, World par3World, int par4, int par5, int par6, boolean hard) { Block block = par3World.getBlock(par4, par5, par6);