From 9e140aa6770deaab1f21ac3a40ceebdfb07d8bc3 Mon Sep 17 00:00:00 2001 From: Lizbeth Rika Date: Fri, 14 Nov 2014 17:46:15 +0000 Subject: [PATCH] Basic infrastructure for Red String. --- .../botania/common/block/ModBlocks.java | 5 ++ .../common/block/string/BlockRedString.java | 60 ++++++++++++++++ .../block/string/BlockRedStringContainer.java | 30 ++++++++ .../block/tile/string/TileRedString.java | 64 ++++++++++++++++++ .../tile/string/TileRedStringContainer.java | 25 +++++++ .../common/core/BotaniaCreativeTab.java | 3 + .../botania/common/lib/LibBlockNames.java | 1 + .../textures/blocks/redStringComparator.png | Bin 0 -> 3538 bytes .../textures/blocks/redStringContainer.png | Bin 0 -> 3527 bytes .../textures/blocks/redStringDetonator.png | Bin 0 -> 3570 bytes .../textures/blocks/redStringDispenser.png | Bin 0 -> 3539 bytes .../textures/blocks/redStringFertilizer.png | Bin 0 -> 3549 bytes .../textures/blocks/redStringRelay.png | Bin 0 -> 3549 bytes .../textures/blocks/redStringSender.png | Bin 0 -> 3565 bytes .../textures/blocks/redStringWander.png | Bin 0 -> 3546 bytes .../botania/textures/items/redString.png | Bin 0 -> 2942 bytes 16 files changed, 188 insertions(+) create mode 100644 src/main/java/vazkii/botania/common/block/string/BlockRedString.java create mode 100644 src/main/java/vazkii/botania/common/block/string/BlockRedStringContainer.java create mode 100644 src/main/java/vazkii/botania/common/block/tile/string/TileRedString.java create mode 100644 src/main/java/vazkii/botania/common/block/tile/string/TileRedStringContainer.java create mode 100644 src/main/resources/assets/botania/textures/blocks/redStringComparator.png create mode 100644 src/main/resources/assets/botania/textures/blocks/redStringContainer.png create mode 100644 src/main/resources/assets/botania/textures/blocks/redStringDetonator.png create mode 100644 src/main/resources/assets/botania/textures/blocks/redStringDispenser.png create mode 100644 src/main/resources/assets/botania/textures/blocks/redStringFertilizer.png create mode 100644 src/main/resources/assets/botania/textures/blocks/redStringRelay.png create mode 100644 src/main/resources/assets/botania/textures/blocks/redStringSender.png create mode 100644 src/main/resources/assets/botania/textures/blocks/redStringWander.png create mode 100644 src/main/resources/assets/botania/textures/items/redString.png diff --git a/src/main/java/vazkii/botania/common/block/ModBlocks.java b/src/main/java/vazkii/botania/common/block/ModBlocks.java index c1d23ca96..8468a8649 100644 --- a/src/main/java/vazkii/botania/common/block/ModBlocks.java +++ b/src/main/java/vazkii/botania/common/block/ModBlocks.java @@ -70,6 +70,7 @@ import vazkii.botania.common.block.decor.stairs.prismarine.BlockPrismarineBrickS import vazkii.botania.common.block.decor.stairs.prismarine.BlockPrismarineStairs; import vazkii.botania.common.block.dispenser.BehaviourSeeds; import vazkii.botania.common.block.dispenser.BehaviourWand; +import vazkii.botania.common.block.string.BlockRedStringContainer; import vazkii.botania.common.block.subtile.SubTileManastar; import vazkii.botania.common.block.subtile.SubTilePureDaisy; import vazkii.botania.common.block.subtile.functional.SubTileAgricarnation; @@ -128,6 +129,7 @@ import vazkii.botania.common.block.tile.mana.TilePool; import vazkii.botania.common.block.tile.mana.TileRFGenerator; import vazkii.botania.common.block.tile.mana.TileSpreader; import vazkii.botania.common.block.tile.mana.TileTurntable; +import vazkii.botania.common.block.tile.string.TileRedStringContainer; import vazkii.botania.common.core.handler.ConfigHandler; import vazkii.botania.common.item.ModItems; import vazkii.botania.common.lib.LibBlockNames; @@ -182,6 +184,7 @@ public final class ModBlocks { public static Block brewery; public static Block manaGlass; public static Block terraPlate; + public static Block redStringContainer; public static Block livingwoodStairs; public static Block livingwoodSlab; @@ -304,6 +307,7 @@ public final class ModBlocks { brewery = new BlockBrewery(); manaGlass = new BlockManaGlass(); terraPlate = new BlockTerraPlate(); + redStringContainer = new BlockRedStringContainer(); livingwoodStairs = new BlockLivingwoodStairs(); livingwoodSlab = new BlockLivingwoodSlab(false); @@ -484,6 +488,7 @@ public final class ModBlocks { registerTile(TileRFGenerator.class, LibBlockNames.RF_GENERATOR); registerTile(TileBrewery.class, LibBlockNames.BREWERY); registerTile(TileTerraPlate.class, LibBlockNames.TERRA_PLATE); + registerTile(TileRedStringContainer.class, LibBlockNames.RED_STRING_CONTAINER); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_PUREDAISY, SubTilePureDaisy.class); BotaniaAPI.registerSubTile(LibBlockNames.SUBTILE_MANASTAR, SubTileManastar.class); diff --git a/src/main/java/vazkii/botania/common/block/string/BlockRedString.java b/src/main/java/vazkii/botania/common/block/string/BlockRedString.java new file mode 100644 index 000000000..feec9d981 --- /dev/null +++ b/src/main/java/vazkii/botania/common/block/string/BlockRedString.java @@ -0,0 +1,60 @@ +/** + * This class was created by . It's distributed as + * part of the Botania Mod. Get the Source Code in github: + * https://github.com/Vazkii/Botania + * + * Botania is Open Source and distributed under a + * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License + * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) + * + * File Created @ [Nov 14, 2014, 4:43:14 PM (GMT)] + */ +package vazkii.botania.common.block.string; + +import net.minecraft.block.BlockPistonBase; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; +import vazkii.botania.client.core.helper.IconHelper; +import vazkii.botania.common.block.BlockModContainer; +import vazkii.botania.common.block.tile.mana.TileSpreader; +import vazkii.botania.common.block.tile.string.TileRedString; + +public abstract class BlockRedString extends BlockModContainer { + + IIcon senderIcon; + IIcon sideIcon; + + public BlockRedString(String name) { + super(Material.rock); + setHardness(2.0F); + setResistance(10.0F); + setStepSound(soundTypeStone); + setBlockName(name); + } + + @Override + public void onBlockPlacedBy(World par1World, int par2, int par3, int par4, EntityLivingBase par5EntityLivingBase, ItemStack par6ItemStack) { + int orientation = BlockPistonBase.determineOrientation(par1World, par2, par3, par4, par5EntityLivingBase); + par1World.setBlockMetadataWithNotify(par2, par3, par4, orientation, 1 | 2); + } + + @Override + public void registerBlockIcons(IIconRegister par1IconRegister) { + senderIcon = IconHelper.forName(par1IconRegister, "redStringSender"); + sideIcon = registerSideIcon(par1IconRegister); + } + + public IIcon registerSideIcon(IIconRegister register) { + return IconHelper.forBlock(register, this); + } + + @Override + public IIcon getIcon(int side, int meta) { + return side == meta ? senderIcon : sideIcon; + } + +} diff --git a/src/main/java/vazkii/botania/common/block/string/BlockRedStringContainer.java b/src/main/java/vazkii/botania/common/block/string/BlockRedStringContainer.java new file mode 100644 index 000000000..235087648 --- /dev/null +++ b/src/main/java/vazkii/botania/common/block/string/BlockRedStringContainer.java @@ -0,0 +1,30 @@ +/** + * This class was created by . It's distributed as + * part of the Botania Mod. Get the Source Code in github: + * https://github.com/Vazkii/Botania + * + * Botania is Open Source and distributed under a + * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License + * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) + * + * File Created @ [Nov 14, 2014, 5:29:56 PM (GMT)] + */ +package vazkii.botania.common.block.string; + +import net.minecraft.world.World; +import vazkii.botania.common.block.tile.string.TileRedString; +import vazkii.botania.common.block.tile.string.TileRedStringContainer; +import vazkii.botania.common.lib.LibBlockNames; + +public class BlockRedStringContainer extends BlockRedString { + + public BlockRedStringContainer() { + super(LibBlockNames.RED_STRING_CONTAINER); + } + + @Override + public TileRedString createNewTileEntity(World world, int meta) { + return new TileRedStringContainer(); + } + +} diff --git a/src/main/java/vazkii/botania/common/block/tile/string/TileRedString.java b/src/main/java/vazkii/botania/common/block/tile/string/TileRedString.java new file mode 100644 index 000000000..c02a6aa40 --- /dev/null +++ b/src/main/java/vazkii/botania/common/block/tile/string/TileRedString.java @@ -0,0 +1,64 @@ +/** + * This class was created by . It's distributed as + * part of the Botania Mod. Get the Source Code in github: + * https://github.com/Vazkii/Botania + * + * Botania is Open Source and distributed under a + * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License + * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) + * + * File Created @ [Nov 14, 2014, 5:04:22 PM (GMT)] + */ +package vazkii.botania.common.block.tile.string; + +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChunkCoordinates; +import net.minecraftforge.common.util.ForgeDirection; +import vazkii.botania.api.wand.ITileBound; +import vazkii.botania.common.block.tile.TileMod; + +public abstract class TileRedString extends TileMod implements ITileBound { + + private ChunkCoordinates binding; + + @Override + public void updateEntity() { + ForgeDirection dir = ForgeDirection.getOrientation(getBlockMetadata()); + int x = xCoord; + int y = yCoord; + int z = zCoord; + int range = getRange(); + for(int i = 0; i < range; i++) { + x += dir.offsetX; + y += dir.offsetY; + z += dir.offsetZ; + if(worldObj.isAirBlock(x, y, z)) + continue; + + TileEntity tile = worldObj.getTileEntity(x, y, z); + if(tile instanceof TileRedString) + continue; + + if(acceptBlock(x, y, z) && (binding == null || binding.posX != x || binding.posY != y || binding.posZ != z)) { + binding = new ChunkCoordinates(x, y, z); + onBound(x, y, z); + } + } + } + + public int getRange() { + return 8; + } + + public abstract boolean acceptBlock(int x, int y, int z); + + public void onBound(int x, int y, int z) { + // NO-OP + } + + @Override + public ChunkCoordinates getBinding() { + return binding; + } + +} diff --git a/src/main/java/vazkii/botania/common/block/tile/string/TileRedStringContainer.java b/src/main/java/vazkii/botania/common/block/tile/string/TileRedStringContainer.java new file mode 100644 index 000000000..cbdea4133 --- /dev/null +++ b/src/main/java/vazkii/botania/common/block/tile/string/TileRedStringContainer.java @@ -0,0 +1,25 @@ +/** + * This class was created by . It's distributed as + * part of the Botania Mod. Get the Source Code in github: + * https://github.com/Vazkii/Botania + * + * Botania is Open Source and distributed under a + * Creative Commons Attribution-NonCommercial-ShareAlike 3.0 License + * (http://creativecommons.org/licenses/by-nc-sa/3.0/deed.en_GB) + * + * File Created @ [Nov 14, 2014, 5:26:39 PM (GMT)] + */ +package vazkii.botania.common.block.tile.string; + +import net.minecraft.inventory.IInventory; +import net.minecraft.tileentity.TileEntity; + +public class TileRedStringContainer extends TileRedString { + + @Override + public boolean acceptBlock(int x, int y, int z) { + TileEntity tile = worldObj.getTileEntity(x, y, z); + return tile != null && tile instanceof IInventory; + } + +} diff --git a/src/main/java/vazkii/botania/common/core/BotaniaCreativeTab.java b/src/main/java/vazkii/botania/common/core/BotaniaCreativeTab.java index 9fe579848..2ed123c55 100644 --- a/src/main/java/vazkii/botania/common/core/BotaniaCreativeTab.java +++ b/src/main/java/vazkii/botania/common/core/BotaniaCreativeTab.java @@ -110,6 +110,9 @@ public final class BotaniaCreativeTab extends CreativeTabs { addItem(ModItems.bloodPendant); addBlock(ModBlocks.pylon); addBlock(ModBlocks.pistonRelay); + + addBlock(ModBlocks.redStringContainer); + addBlock(ModBlocks.shinyFlower); addBlock(ModBlocks.miniIsland); addBlock(ModBlocks.tinyPotato); diff --git a/src/main/java/vazkii/botania/common/lib/LibBlockNames.java b/src/main/java/vazkii/botania/common/lib/LibBlockNames.java index 36df7b6ed..bc2292599 100644 --- a/src/main/java/vazkii/botania/common/lib/LibBlockNames.java +++ b/src/main/java/vazkii/botania/common/lib/LibBlockNames.java @@ -61,6 +61,7 @@ public final class LibBlockNames { public static final String BREWERY = "brewery"; public static final String MANA_GLASS = "manaGlass"; public static final String TERRA_PLATE = "terraPlate"; + public static final String RED_STRING_CONTAINER = "redStringContainer"; public static final String SUBTILE_PUREDAISY = "puredaisy"; public static final String SUBTILE_MANASTAR = "manastar"; diff --git a/src/main/resources/assets/botania/textures/blocks/redStringComparator.png b/src/main/resources/assets/botania/textures/blocks/redStringComparator.png new file mode 100644 index 0000000000000000000000000000000000000000..787a17ba60bebe541d2b189ba3ebc48138d01501 GIT binary patch literal 3538 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 M07*qoM6N<$f*$>}SO5S3 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/botania/textures/blocks/redStringContainer.png b/src/main/resources/assets/botania/textures/blocks/redStringContainer.png new file mode 100644 index 0000000000000000000000000000000000000000..9d16f1a4542d51397d1eadfc58ceb35e41a5d57b GIT binary patch literal 3527 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 BqTK)h literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/botania/textures/blocks/redStringDetonator.png b/src/main/resources/assets/botania/textures/blocks/redStringDetonator.png new file mode 100644 index 0000000000000000000000000000000000000000..8b951f3043cd8f80bd5192b128a00f3204a2509a GIT binary patch literal 3570 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 XA%kUF*OIFo00000NkvXXu0mjf1aYjI literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/botania/textures/blocks/redStringRelay.png b/src/main/resources/assets/botania/textures/blocks/redStringRelay.png new file mode 100644 index 0000000000000000000000000000000000000000..4d743e0c0a1b64461b328f15980161a7f89027de GIT binary patch literal 3549 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 X-i>7@HTj!%00000NkvXXu0mjfX4I`& literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/botania/textures/blocks/redStringSender.png b/src/main/resources/assets/botania/textures/blocks/redStringSender.png new file mode 100644 index 0000000000000000000000000000000000000000..f5dce4dabea42cf0dbb624699f1420b0600bb236 GIT binary patch literal 3565 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/botania/textures/blocks/redStringWander.png b/src/main/resources/assets/botania/textures/blocks/redStringWander.png new file mode 100644 index 0000000000000000000000000000000000000000..35ba41c65acf06d59710cc0f438eb6fb6867c8aa GIT binary patch literal 3546 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 o5-(Bwsh