Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions src/main/java/net/fuzzycraft/botanichorizons/addons/BHBlocks.java
Original file line number Diff line number Diff line change
Expand Up @@ -3,12 +3,18 @@
import cpw.mods.fml.common.registry.GameRegistry;
import net.fuzzycraft.botanichorizons.addons.block.BlockAdvancedAlchemyPool;
import net.fuzzycraft.botanichorizons.addons.block.BlockAdvancedAlfPortal;
import net.fuzzycraft.botanichorizons.addons.block.BlockAdvancedAltar;
import net.fuzzycraft.botanichorizons.addons.block.BlockAdvancedApothecary;
import net.fuzzycraft.botanichorizons.addons.block.BlockAdvancedConjurationPool;
import net.fuzzycraft.botanichorizons.addons.block.BlockAdvancedCraftingPool;
import net.fuzzycraft.botanichorizons.addons.block.BlockAdvancedTerraPlate;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedAlchemyPool;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedAlfPortal;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedAltar;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedApothecary;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedConjurationPool;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedCraftingPool;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedTerraPlate;
import net.fuzzycraft.botanichorizons.mod.ForgeMod;
import net.minecraft.tileentity.TileEntity;

Expand All @@ -17,20 +23,29 @@ public final class BHBlocks {
public static BlockAdvancedAlchemyPool autoPoolAlchemy;
public static BlockAdvancedConjurationPool autoPoolConjuration;
public static BlockAdvancedAlfPortal autoPortal;
public static BlockAdvancedAltar autoAltar;
public static BlockAdvancedTerraPlate autoPlate;
public static BlockAdvancedApothecary autoApothecary;

public static void initBlocks() {
autoApothecary = new BlockAdvancedApothecary();
autoPoolInfusion = new BlockAdvancedCraftingPool();
autoPoolAlchemy = new BlockAdvancedAlchemyPool();
autoPoolConjuration = new BlockAdvancedConjurationPool();
autoAltar = new BlockAdvancedAltar();
autoPlate = new BlockAdvancedTerraPlate();
autoPortal = new BlockAdvancedAlfPortal();

registerTileEntities();
}

public static void registerTileEntities() {
registerTile(TileAdvancedApothecary.class, BlockAdvancedApothecary.NAME);
registerTile(TileAdvancedCraftingPool.class, BlockAdvancedCraftingPool.NAME);
registerTile(TileAdvancedAlchemyPool.class, BlockAdvancedAlchemyPool.NAME);
registerTile(TileAdvancedConjurationPool.class, BlockAdvancedConjurationPool.NAME);
registerTile(TileAdvancedAltar.class, BlockAdvancedAltar.NAME);
registerTile(TileAdvancedTerraPlate.class, BlockAdvancedTerraPlate.NAME);
registerTile(TileAdvancedAlfPortal.class, BlockAdvancedAlfPortal.NAME);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,11 @@
import gregtech.api.enums.Mods;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedAlchemyPool;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedAlfPortal;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedAltar;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedApothecary;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedConjurationPool;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedCraftingPool;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedTerraPlate;
import net.fuzzycraft.botanichorizons.util.Constants;
import net.fuzzycraft.botanichorizons.util.multiblock.BasicBlockCheck;
import net.fuzzycraft.botanichorizons.util.multiblock.MetaBlockCheck;
Expand All @@ -25,6 +28,7 @@ public final class Multiblocks {
public static MultiblockHelper poolConjuration;
public static MultiblockHelper poolAlchemy;
public static MultiblockHelper poolInfusion;
public static MultiblockHelper placeholder;

public static void init() {
MultiblockCheck air = new BasicBlockCheck(Blocks.air);
Expand Down Expand Up @@ -98,6 +102,19 @@ public static void init() {
" ", " lllll ", " llgll ", " lglgl ", " llgll ", " lllll ", " "
}
);

// For new multiblocks

MultiblockBuilder tempBuilder = new MultiblockBuilder();
tempBuilder.setRootCharacter("x");
tempBuilder.addCheck("w", livingWood);
tempBuilder.addCheck("r", livingRock);
placeholder = tempBuilder.buildForMap(
new String[] {
"rwr", "w w", "rxr"
}
);

}

public static void postInit() {
Expand All @@ -106,6 +123,10 @@ public static void postInit() {
HoloProjectorSupport.registerOrientedWithStructureLib(poolAlchemy, BHBlocks.autoPoolAlchemy, TileAdvancedAlchemyPool.class);
HoloProjectorSupport.registerOrientedWithStructureLib(poolConjuration, BHBlocks.autoPoolConjuration, TileAdvancedConjurationPool.class);
HoloProjectorSupport.registerOrientedWithStructureLib(alfPortal, BHBlocks.autoPortal, TileAdvancedAlfPortal.class);

HoloProjectorSupport.registerOrientedWithStructureLib(placeholder, BHBlocks.autoApothecary, TileAdvancedApothecary.class);
HoloProjectorSupport.registerOrientedWithStructureLib(placeholder, BHBlocks.autoAltar, TileAdvancedAltar.class);
HoloProjectorSupport.registerOrientedWithStructureLib(placeholder, BHBlocks.autoPlate, TileAdvancedTerraPlate.class);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
package net.fuzzycraft.botanichorizons.addons.block;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.fuzzycraft.botanichorizons.addons.Multiblocks;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedAltar;
import net.fuzzycraft.botanichorizons.lexicon.BHLexicon;
import net.fuzzycraft.botanichorizons.util.Facing2D;
import net.fuzzycraft.botanichorizons.util.IBlockTooltip;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import vazkii.botania.api.lexicon.ILexiconable;
import vazkii.botania.api.lexicon.LexiconEntry;
import vazkii.botania.api.wand.IWandHUD;
import vazkii.botania.api.wand.IWandable;

import java.util.List;

import static net.fuzzycraft.botanichorizons.util.Constants.BH_ICON_PREFIX;

public class BlockAdvancedAltar extends BlockModContainer<TileAdvancedAltar> implements IWandHUD, IWandable, ILexiconable, IBlockTooltip {
public static final String NAME = "automatedAltar";

// META: bit 0 = online, bit 1..2 = 2D facing

public BlockAdvancedAltar() {
super(Material.rock);
setHardness(10.0F);
setStepSound(soundTypeStone);
setBlockName(NAME);
}

@Override
public TileAdvancedAltar createNewTileEntity(World world, int meta) {
return new TileAdvancedAltar();
}

IIcon iconPrimary;
IIcon iconSecondary;

@SideOnly(Side.CLIENT) @Override
public void registerBlockIcons(IIconRegister register) {
this.iconPrimary = register.registerIcon(BH_ICON_PREFIX + "quartzYellowTop");
this.iconSecondary = register.registerIcon(BH_ICON_PREFIX + "quartzYellowSide");
}

@SideOnly(Side.CLIENT) @Override
public IIcon getIcon(int side, int meta) {
return (side == 1 || Facing2D.fromIC2(side) == Facing2D.fromIndex(meta >> 1)) ? this.iconPrimary : this.iconSecondary;
}

@SideOnly(Side.CLIENT) @Override
public void renderHUD(Minecraft mc, ScaledResolution res, World world, int x, int y, int z) {
((TileAdvancedAltar) world.getTileEntity(x, y, z)).renderHUD(mc, res);
}

@Override
public LexiconEntry getEntry(World world, int x, int y, int z, EntityPlayer player, ItemStack lexicon) {
return BHLexicon.automatedManaPool;
}

@Override
public void onBlockPlacedBy(World worldIn, int x, int y, int z, EntityLivingBase placer, ItemStack itemIn) {
Facing2D facing = Facing2D.facingPlayer(placer);
worldIn.setBlockMetadataWithNotify(x, y, z, facing.index << 1, 3);
}

@Override
public void breakBlock(World world, int x, int y, int z, Block blockBroken, int meta) {
TileAdvancedAltar tileEntity = (TileAdvancedAltar)world.getTileEntity(x, y, z);
if (tileEntity != null) {
tileEntity.dropItems(world, x, y, z);
}
super.breakBlock(world, x, y, z, blockBroken, meta);
}

@Override
public boolean onUsedByWand(EntityPlayer player, ItemStack stack, World world, int x, int y, int z, int side) {
return ((TileAdvancedAltar)world.getTileEntity(x, y, z)).onWanded(player);
}

@Override
public int getLightValue(IBlockAccess world, int x, int y, int z) {
return (world.getBlockMetadata(x, y, z) & 1) == 0 ? 0 : 10;
}

@SideOnly(Side.CLIENT)
@Override
public void addTooltipInformation(ItemStack itemStack, List<String> tooltipStrings) {
// every rune beyond the first gets a ??% mana discount
tooltipStrings.add(I18n.format("botanichorizons.tooltip.parallels", TileAdvancedAltar.MAX_PARALLELS));
Multiblocks.poolAlchemy.addBuildInfoToTooltip(tooltipStrings);
tooltipStrings.add(I18n.format("botanichorizons.author.combuster"));
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,107 @@
package net.fuzzycraft.botanichorizons.addons.block;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import net.fuzzycraft.botanichorizons.addons.Multiblocks;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedAlchemyPool;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedApothecary;
import net.fuzzycraft.botanichorizons.addons.tileentity.TileAdvancedTerraPlate;
import net.fuzzycraft.botanichorizons.lexicon.BHLexicon;
import net.fuzzycraft.botanichorizons.util.Facing2D;
import net.fuzzycraft.botanichorizons.util.IBlockTooltip;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.client.resources.I18n;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import vazkii.botania.api.lexicon.ILexiconable;
import vazkii.botania.api.lexicon.LexiconEntry;
import vazkii.botania.api.wand.IWandHUD;
import vazkii.botania.api.wand.IWandable;

import java.util.List;

import static net.fuzzycraft.botanichorizons.util.Constants.BH_ICON_PREFIX;

public class BlockAdvancedApothecary extends BlockModContainer<TileAdvancedApothecary> implements IWandHUD, IWandable, ILexiconable, IBlockTooltip {
public static final String NAME = "automatedApothecary";

// META: bit 0 = online, bit 1..2 = 2D facing

public BlockAdvancedApothecary() {
super(Material.rock);
setHardness(10.0F);
setStepSound(soundTypeStone);
setBlockName(NAME);
}

@Override
public TileAdvancedApothecary createNewTileEntity(World world, int meta) {
return new TileAdvancedApothecary();
}

IIcon iconPrimary;
IIcon iconSecondary;

@SideOnly(Side.CLIENT) @Override
public void registerBlockIcons(IIconRegister register) {
this.iconPrimary = register.registerIcon(BH_ICON_PREFIX + "quartzYellowTop");
this.iconSecondary = register.registerIcon(BH_ICON_PREFIX + "quartzYellowSide");
}

@SideOnly(Side.CLIENT) @Override
public IIcon getIcon(int side, int meta) {
return (side == 1 || Facing2D.fromIC2(side) == Facing2D.fromIndex(meta >> 1)) ? this.iconPrimary : this.iconSecondary;
}

@SideOnly(Side.CLIENT) @Override
public void renderHUD(Minecraft mc, ScaledResolution res, World world, int x, int y, int z) {
((TileAdvancedApothecary) world.getTileEntity(x, y, z)).renderHUD(mc, res);
}

@Override
public LexiconEntry getEntry(World world, int x, int y, int z, EntityPlayer player, ItemStack lexicon) {
return BHLexicon.automatedManaPool;
}

@Override
public void onBlockPlacedBy(World worldIn, int x, int y, int z, EntityLivingBase placer, ItemStack itemIn) {
Facing2D facing = Facing2D.facingPlayer(placer);
worldIn.setBlockMetadataWithNotify(x, y, z, facing.index << 1, 3);
}

@Override
public void breakBlock(World world, int x, int y, int z, Block blockBroken, int meta) {
TileAdvancedApothecary tileEntity = (TileAdvancedApothecary)world.getTileEntity(x, y, z);
if (tileEntity != null) {
tileEntity.dropItems(world, x, y, z);
}
super.breakBlock(world, x, y, z, blockBroken, meta);
}

@Override
public boolean onUsedByWand(EntityPlayer player, ItemStack stack, World world, int x, int y, int z, int side) {
return ((TileAdvancedApothecary)world.getTileEntity(x, y, z)).onWanded(player);
}

@Override
public int getLightValue(IBlockAccess world, int x, int y, int z) {
return (world.getBlockMetadata(x, y, z) & 1) == 0 ? 0 : 10;
}

@SideOnly(Side.CLIENT)
@Override
public void addTooltipInformation(ItemStack itemStack, List<String> tooltipStrings) {
// uses a bit of mana for instead of water or seeds
tooltipStrings.add(I18n.format("botanichorizons.tooltip.parallels", TileAdvancedApothecary.MAX_PARALLELS));
Multiblocks.poolAlchemy.addBuildInfoToTooltip(tooltipStrings);
tooltipStrings.add(I18n.format("botanichorizons.author.combuster"));
}
}
Loading
Loading