From 70c1354a4a96698758a88c032866288f79de6f5a Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sat, 24 Aug 2024 08:16:37 -0400 Subject: Initial commit --- .../plusplus/fbs/block/BlockAlchemistTable.class | Bin 0 -> 5761 bytes .../jp/plusplus/fbs/block/BlockAlchemistTable.java | 128 +++++++++++ .../fbs/block/BlockAlchemyCauldron$BlockPos.class | Bin 0 -> 1117 bytes .../plusplus/fbs/block/BlockAlchemyCauldron.class | Bin 0 -> 8037 bytes .../plusplus/fbs/block/BlockAlchemyCauldron.java | 202 +++++++++++++++++ .../java/jp/plusplus/fbs/block/BlockBarrier.class | Bin 0 -> 3589 bytes .../java/jp/plusplus/fbs/block/BlockBarrier.java | 99 +++++++++ .../java/jp/plusplus/fbs/block/BlockBase.class | Bin 0 -> 4395 bytes src/main/java/jp/plusplus/fbs/block/BlockBase.java | 98 +++++++++ .../java/jp/plusplus/fbs/block/BlockBlock.class | Bin 0 -> 2572 bytes .../java/jp/plusplus/fbs/block/BlockBlock.java | 59 +++++ .../java/jp/plusplus/fbs/block/BlockBonfire.class | Bin 0 -> 8676 bytes .../java/jp/plusplus/fbs/block/BlockBonfire.java | 241 +++++++++++++++++++++ .../jp/plusplus/fbs/block/BlockBookshelfDark.class | Bin 0 -> 6274 bytes .../jp/plusplus/fbs/block/BlockBookshelfDark.java | 136 ++++++++++++ .../java/jp/plusplus/fbs/block/BlockCharm.class | Bin 0 -> 3451 bytes .../java/jp/plusplus/fbs/block/BlockCharm.java | 93 ++++++++ .../java/jp/plusplus/fbs/block/BlockCore.class | Bin 0 -> 5359 bytes src/main/java/jp/plusplus/fbs/block/BlockCore.java | 145 +++++++++++++ .../jp/plusplus/fbs/block/BlockCropLavender.class | Bin 0 -> 1969 bytes .../jp/plusplus/fbs/block/BlockCropLavender.java | 51 +++++ .../jp/plusplus/fbs/block/BlockCropRedLily.class | Bin 0 -> 3730 bytes .../jp/plusplus/fbs/block/BlockCropRedLily.java | 103 +++++++++ .../fbs/block/BlockExtractingFurnace.class | Bin 0 -> 9369 bytes .../plusplus/fbs/block/BlockExtractingFurnace.java | 225 +++++++++++++++++++ .../jp/plusplus/fbs/block/BlockFBSLeaves.class | Bin 0 -> 4143 bytes .../java/jp/plusplus/fbs/block/BlockFBSLeaves.java | 121 +++++++++++ .../java/jp/plusplus/fbs/block/BlockFBSWood.class | Bin 0 -> 1028 bytes .../java/jp/plusplus/fbs/block/BlockFBSWood.java | 19 ++ .../jp/plusplus/fbs/block/BlockFBSWorkbench.class | Bin 0 -> 5792 bytes .../jp/plusplus/fbs/block/BlockFBSWorkbench.java | 134 ++++++++++++ .../jp/plusplus/fbs/block/BlockFallenLeaves.class | Bin 0 -> 3266 bytes .../jp/plusplus/fbs/block/BlockFallenLeaves.java | 57 +++++ .../jp/plusplus/fbs/block/BlockFillingTable.class | Bin 0 -> 5467 bytes .../jp/plusplus/fbs/block/BlockFillingTable.java | 105 +++++++++ .../java/jp/plusplus/fbs/block/BlockGrass.class | Bin 0 -> 5255 bytes .../java/jp/plusplus/fbs/block/BlockGrass.java | 106 +++++++++ .../java/jp/plusplus/fbs/block/BlockHerb.class | Bin 0 -> 9775 bytes src/main/java/jp/plusplus/fbs/block/BlockHerb.java | 213 ++++++++++++++++++ .../jp/plusplus/fbs/block/BlockMagicCore.class | Bin 0 -> 6325 bytes .../java/jp/plusplus/fbs/block/BlockMagicCore.java | 151 +++++++++++++ .../java/jp/plusplus/fbs/block/BlockMirror.class | Bin 0 -> 5140 bytes .../java/jp/plusplus/fbs/block/BlockMirror.java | 134 ++++++++++++ .../java/jp/plusplus/fbs/block/BlockMushroom.class | Bin 0 -> 4009 bytes .../java/jp/plusplus/fbs/block/BlockMushroom.java | 103 +++++++++ src/main/java/jp/plusplus/fbs/block/BlockOre.class | Bin 0 -> 1720 bytes src/main/java/jp/plusplus/fbs/block/BlockOre.java | 47 ++++ .../jp/plusplus/fbs/block/BlockPortalAutumn.class | Bin 0 -> 4027 bytes .../jp/plusplus/fbs/block/BlockPortalAutumn.java | 96 ++++++++ .../jp/plusplus/fbs/block/BlockPortalWarp.class | Bin 0 -> 8993 bytes .../jp/plusplus/fbs/block/BlockPortalWarp.java | 210 ++++++++++++++++++ .../jp/plusplus/fbs/block/BlockSchoolTable.class | Bin 0 -> 2147 bytes .../jp/plusplus/fbs/block/BlockSchoolTable.java | 54 +++++ src/main/java/jp/plusplus/fbs/block/IMeta.class | Bin 0 -> 166 bytes src/main/java/jp/plusplus/fbs/block/IMeta.java | 8 + .../fbs/block/model/ModelAlchemyCauldron.class | Bin 0 -> 3778 bytes .../fbs/block/model/ModelAlchemyCauldron.java | 157 ++++++++++++++ .../fbs/block/model/ModelAlchemyTable.class | Bin 0 -> 4702 bytes .../fbs/block/model/ModelAlchemyTable.java | 210 ++++++++++++++++++ .../jp/plusplus/fbs/block/model/ModelBonfire.class | Bin 0 -> 2772 bytes .../jp/plusplus/fbs/block/model/ModelBonfire.java | 98 +++++++++ .../jp/plusplus/fbs/block/model/ModelFork.class | Bin 0 -> 2323 bytes .../jp/plusplus/fbs/block/model/ModelFork.java | 82 +++++++ .../jp/plusplus/fbs/block/model/ModelHerb.class | Bin 0 -> 3205 bytes .../jp/plusplus/fbs/block/model/ModelHerb.java | 124 +++++++++++ .../jp/plusplus/fbs/block/model/ModelKnife.class | Bin 0 -> 2185 bytes .../jp/plusplus/fbs/block/model/ModelKnife.java | 74 +++++++ .../plusplus/fbs/block/model/ModelMushroom.class | Bin 0 -> 2748 bytes .../jp/plusplus/fbs/block/model/ModelMushroom.java | 96 ++++++++ .../fbs/block/model/ModelSchoolTable.class | Bin 0 -> 3311 bytes .../plusplus/fbs/block/model/ModelSchoolTable.java | 133 ++++++++++++ .../jp/plusplus/fbs/block/model/ModelSpoon.class | Bin 0 -> 2614 bytes .../jp/plusplus/fbs/block/model/ModelSpoon.java | 98 +++++++++ .../fbs/block/render/RenderAlchemyCauldron.class | Bin 0 -> 5760 bytes .../fbs/block/render/RenderAlchemyCauldron.java | 188 ++++++++++++++++ .../fbs/block/render/RenderAlchemyTable.class | Bin 0 -> 3330 bytes .../fbs/block/render/RenderAlchemyTable.java | 93 ++++++++ .../plusplus/fbs/block/render/RenderBarrier.class | Bin 0 -> 2918 bytes .../plusplus/fbs/block/render/RenderBarrier.java | 106 +++++++++ .../jp/plusplus/fbs/block/render/RenderCharm.class | Bin 0 -> 2041 bytes .../jp/plusplus/fbs/block/render/RenderCharm.java | 52 +++++ .../fbs/block/render/RenderDecorations.class | Bin 0 -> 5180 bytes .../fbs/block/render/RenderDecorations.java | 198 +++++++++++++++++ .../fbs/block/render/RenderDirectional.class | Bin 0 -> 2750 bytes .../fbs/block/render/RenderDirectional.java | 99 +++++++++ .../fbs/block/render/RenderHarvestable.class | Bin 0 -> 6538 bytes .../fbs/block/render/RenderHarvestable.java | 191 ++++++++++++++++ .../plusplus/fbs/block/render/RenderMirror.class | Bin 0 -> 2615 bytes .../jp/plusplus/fbs/block/render/RenderMirror.java | 76 +++++++ .../fbs/block/render/RenderPortalWarp.class | Bin 0 -> 1693 bytes .../fbs/block/render/RenderPortalWarp.java | 46 ++++ 91 files changed, 5259 insertions(+) create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockAlchemistTable.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockAlchemistTable.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron$BlockPos.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockBarrier.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockBarrier.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockBase.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockBase.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockBlock.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockBlock.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockBonfire.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockBonfire.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockBookshelfDark.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockBookshelfDark.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockCharm.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockCharm.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockCore.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockCore.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockCropLavender.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockCropLavender.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockCropRedLily.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockCropRedLily.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockExtractingFurnace.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockExtractingFurnace.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockFBSLeaves.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockFBSLeaves.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockFBSWood.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockFBSWood.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockFBSWorkbench.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockFBSWorkbench.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockFallenLeaves.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockFallenLeaves.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockFillingTable.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockFillingTable.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockGrass.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockGrass.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockHerb.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockHerb.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockMagicCore.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockMagicCore.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockMirror.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockMirror.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockMushroom.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockMushroom.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockOre.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockOre.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockPortalAutumn.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockPortalAutumn.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockPortalWarp.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockPortalWarp.java create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockSchoolTable.class create mode 100644 src/main/java/jp/plusplus/fbs/block/BlockSchoolTable.java create mode 100644 src/main/java/jp/plusplus/fbs/block/IMeta.class create mode 100644 src/main/java/jp/plusplus/fbs/block/IMeta.java create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyCauldron.class create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyCauldron.java create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyTable.class create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyTable.java create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelBonfire.class create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelBonfire.java create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelFork.class create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelFork.java create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelHerb.class create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelHerb.java create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelKnife.class create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelKnife.java create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelMushroom.class create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelMushroom.java create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelSchoolTable.class create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelSchoolTable.java create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelSpoon.class create mode 100644 src/main/java/jp/plusplus/fbs/block/model/ModelSpoon.java create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyCauldron.class create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyCauldron.java create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyTable.class create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyTable.java create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderBarrier.class create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderBarrier.java create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderCharm.class create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderCharm.java create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderDecorations.class create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderDecorations.java create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderDirectional.class create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderDirectional.java create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderHarvestable.class create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderHarvestable.java create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderMirror.class create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderMirror.java create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderPortalWarp.class create mode 100644 src/main/java/jp/plusplus/fbs/block/render/RenderPortalWarp.java (limited to 'src/main/java/jp/plusplus/fbs/block') diff --git a/src/main/java/jp/plusplus/fbs/block/BlockAlchemistTable.class b/src/main/java/jp/plusplus/fbs/block/BlockAlchemistTable.class new file mode 100644 index 0000000..4ab9238 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockAlchemistTable.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockAlchemistTable.java b/src/main/java/jp/plusplus/fbs/block/BlockAlchemistTable.java new file mode 100644 index 0000000..29ceaa0 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockAlchemistTable.java @@ -0,0 +1,128 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.AchievementRegistry; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.alchemy.AlchemyRegistry; +import jp.plusplus.fbs.tileentity.TileEntityForRender; +import net.minecraft.block.Block; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +/** + * Created by plusplus_F on 2015/09/20. + */ +public class BlockAlchemistTable extends BlockBase implements ITileEntityProvider{ + public static int[] X_SHIFT=new int[]{-1,1,0,0}; + public static int[] Z_SHIFT=new int[]{0,0,1,-1}; + private static boolean breakFlag=false; + + public BlockAlchemistTable() { + super(Material.wood); + setBlockTextureName("bookshelfTop"); + setStepSound(Block.soundTypeWood); + setHardness(1.0f); + setResistance(17.5f); + setHarvestLevel("axe", 0); + setBlockName("translator"); + setCreativeTab(FBS.tabAlchemy); + } + + @Override + public int getRenderType(){ + return FBS.renderDecorationId; + } + @Override + public boolean renderAsNormalBlock(){ + return false; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) { + return true; + } + + + @Override + public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer player, int par6, float par7, float par8, float par9) { + ItemStack itemStack = player.getCurrentEquippedItem(); + if (itemStack != null && AlchemyRegistry.CanAppraisal(itemStack)) { + if (!par1World.isRemote) { + ItemStack get = AlchemyRegistry.GetRandomAppraisal(itemStack); + player.entityDropItem(get, player.getEyeHeight()); + player.triggerAchievement(AchievementRegistry.appraisal); + + if(!player.capabilities.isCreativeMode){ + ItemStack con=itemStack.getItem().getContainerItem(itemStack); + if(con!=null) player.entityDropItem(con.copy(), player.getEyeHeight()); + + itemStack.stackSize--; + if (itemStack.stackSize <= 0) player.setCurrentItemOrArmor(0, null); + } + player.inventory.markDirty(); + } + return true; + } + return false; + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + if((p_149915_2_&8)==0) return new TileEntityForRender(); + return null; + } + + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack item) { + int l = MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + int pSide=2; + + //プレイヤーの向きの決定 + switch (l){ + case 0: pSide=2; break; + case 1: pSide=5; break; + case 2: pSide=3; break; + case 3: pSide=4; break; + } + + world.setBlockMetadataWithNotify(x,y,z,pSide, 2); + world.setBlock(x+X_SHIFT[pSide-2], y, z+Z_SHIFT[pSide-2], this, 8|pSide, 2); + } + + @Override + public void breakBlock(World par1World, int x, int y, int z, Block block, int par6){ + int meta=par6; + + if(!breakFlag){ + breakFlag=true; + + if((meta&8)<2) meta=((meta&8)|2); + + if((meta&8)!=0){ + meta=(meta&7); + par1World.func_147480_a(x-X_SHIFT[meta-2], y, z-Z_SHIFT[meta-2], false); + } + else{ + par1World.func_147480_a(x+X_SHIFT[meta-2], y, z+Z_SHIFT[meta-2], false); + } + + breakFlag=false; + return; + } + + super.breakBlock(par1World, x,y,z, block, par6); + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron$BlockPos.class b/src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron$BlockPos.class new file mode 100644 index 0000000..b72dae8 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron$BlockPos.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron.class b/src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron.class new file mode 100644 index 0000000..97d7c99 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron.java b/src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron.java new file mode 100644 index 0000000..c34b77d --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron.java @@ -0,0 +1,202 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.tileentity.TileEntityAlchemyCauldron; +import jp.plusplus.fbs.tileentity.TileEntityExtractingFurnace; +import net.minecraft.block.Block; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import java.util.ArrayList; + +/** + * Created by plusplus_F on 2015/09/24. + */ +public class BlockAlchemyCauldron extends BlockBase implements ITileEntityProvider { + public static final int X_SHIFT[]={0,1,0,1}; + public static final int Z_SHIFT[]={0,0,1,1}; + + private static boolean breakFlag=false; + + public BlockAlchemyCauldron() { + super(Material.rock); + setBlockName("alchemyCauldron"); + setHarvestLevel("pickaxe", 2); + setResistance(80.0f); + setHardness(3.0f); + setStepSound(soundTypeStone); + setBlockTextureName("alchemyCauldron"); + setCreativeTab(FBS.tabAlchemy); + } + + public ArrayList getBlocks(World w, int x, int y, int z){ + ArrayList pos=new ArrayList(); + for(int i=0;i<4;i++) pos.add(new BlockPos(x+X_SHIFT[i], y, z+Z_SHIFT[i], i)); + return pos; + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + if((p_149915_2_&7)==0) return new TileEntityAlchemyCauldron(); + return null; + } + + @Override + public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { + int meta=par1World.getBlockMetadata(par2, par3, par4)&7; + + if(meta==0){ + TileEntity e=par1World.getTileEntity(par2, par3, par4); + if(!par1World.isRemote && e instanceof TileEntityAlchemyCauldron){ + par5EntityPlayer.openGui(FBS.instance, -1, par1World, par2, par3, par4); + } + return true; + } + else{ + return par1World.getBlock(par2-X_SHIFT[meta], par3, par4-Z_SHIFT[meta]).onBlockActivated(par1World, par2-X_SHIFT[meta], par3, par4-Z_SHIFT[meta], par5EntityPlayer, par6, par7, par8, par9); + } + } + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack item) { + int l = MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + int pSide=0; + + /* + //プレイヤーの向きの決定 + switch (l){ + case 0: pSide=2; break; + case 1: pSide=5; break; + case 2: pSide=3; break; + case 3: pSide=4; break; + } + */ + pSide=(l==0||l==2)?0:8; + + //ほかのブロックの設置 + ArrayList pos=getBlocks(world, x,y,z); + for(BlockPos bp : pos){ + if(bp.getBlock(world)==this) world.setBlockMetadataWithNotify(bp.x, bp.y, bp.z, bp.meta|pSide, 2); + else world.setBlock(bp.x, bp.y, bp.z, this, bp.meta|pSide, 2); + } + } + + @Override + public boolean canPlaceBlockAt(World world, int x, int y, int z) { + /* + int meta=world.getBlockMetadata(x,y,z); + + ArrayList pos=getBlocks(world, x-X_SHIFT[meta], y, z-Z_SHIFT[meta]); + for(BlockPos bp : pos){ + if(!bp.getBlock(world).isReplaceable(world, bp.x, bp.y, bp.z)) return false; + } + */ + + return true; + } + + @Override + public void breakBlock(World par1World, int x, int y, int z, Block block, int par6){ + TileEntity tileentity = par1World.getTileEntity(x, y, z); + + if(!breakFlag){ + breakFlag=true; + + par6=(par6&7); + ArrayList pos=getBlocks(par1World, x-X_SHIFT[par6], y, z-Z_SHIFT[par6]); + for(BlockPos bp : pos){ + if(bp.getBlock(par1World)==this) par1World.func_147480_a(bp.x, bp.y, bp.z, false); + } + breakFlag=false; + return; + } + + if(tileentity==null){ + super.breakBlock(par1World, x, y, z, block, par6); + return; + } + + if(tileentity instanceof TileEntityAlchemyCauldron){ + TileEntityAlchemyCauldron inv=(TileEntityAlchemyCauldron)tileentity; + for (ItemStack itemstack : inv.inputMaterial){ + + if (itemstack != null){ + float f = this.rand.nextFloat() * 0.8F + 0.1F; + float f1 = this.rand.nextFloat() * 0.8F + 0.1F; + float f2 = this.rand.nextFloat() * 0.8F + 0.1F; + + while (itemstack.stackSize > 0){ + int k1 = this.rand.nextInt(21) + 10; + + if (k1 > itemstack.stackSize){ + k1 = itemstack.stackSize; + } + + itemstack.stackSize -= k1; + EntityItem entityitem = new EntityItem(par1World, (double)((float)x + f), (double)((float)y + f1), (double)((float)z + f2), new ItemStack(itemstack.getItem(), k1, itemstack.getItemDamage())); + + if (itemstack.hasTagCompound()){ + entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (double)((float)this.rand.nextGaussian() * f3); + entityitem.motionY = (double)((float)this.rand.nextGaussian() * f3 + 0.2F); + entityitem.motionZ = (double)((float)this.rand.nextGaussian() * f3); + par1World.spawnEntityInWorld(entityitem); + } + } + } + //par1World.func_96440_m(x, y, z, block); + } + + super.breakBlock(par1World, x, y, z, block, par6); + } + + @Override + public int getRenderType(){ + return FBS.renderAlchemyCauldronId; + } + @Override + public boolean renderAsNormalBlock(){ + return false; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) { + return true; + } + + public static class BlockPos{ + public int x,y,z; + public int meta; + public BlockPos(int x, int y, int z, int meta){ + this.x=x; + this.y=y; + this.z=z; + this.meta=meta; + } + public Block getBlock(World w){ + return w.getBlock(x,y,z); + } + public TileEntity getTE(World w){ + return w.getTileEntity(x, y, z); + } + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockBarrier.class b/src/main/java/jp/plusplus/fbs/block/BlockBarrier.class new file mode 100644 index 0000000..1a65aa1 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockBarrier.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockBarrier.java b/src/main/java/jp/plusplus/fbs/block/BlockBarrier.java new file mode 100644 index 0000000..73f4c2f --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockBarrier.java @@ -0,0 +1,99 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.alchemy.AlchemyRegistry; +import net.minecraft.block.Block; +import net.minecraft.block.BlockGlass; +import net.minecraft.block.BlockLeaves; +import net.minecraft.block.BlockLiquid; +import net.minecraft.block.material.Material; +import net.minecraft.item.Item; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +import java.util.Random; + +/** + * Created by plusplus_F on 2015/09/27. + */ +public class BlockBarrier extends BlockBase { + public BlockBarrier() { + super(Material.glass); + setBlockName("barrier"); + setBlockTextureName("barrier"); + setHardness(5.0f); + setResistance(1000.0f); + setTickRandomly(true); + setStepSound(soundTypeGlass); + setCreativeTab(FBS.tabBook); + } + + @Override + public int tickRate(World w) { + return 5; + } + + @Override + public void updateTick(World w, int x, int y, int z, Random rand) { + if (!w.isRemote) { + int meta = w.getBlockMetadata(x, y, z)-2; + + if(meta>0) w.setBlockMetadataWithNotify(x, y, z, meta, 2); + else w.func_147480_a(x, y, z, false); + } + } + + @Override + public int quantityDropped(int meta, int fortune, Random random) { + return 0; + } + + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return null; + } + + @Override + public void onBlockAdded(World p_149726_1_, int p_149726_2_, int p_149726_3_, int p_149726_4_) { + int meta = p_149726_1_.getBlockMetadata(p_149726_2_, p_149726_3_, p_149726_4_); + if (meta == 0) { + meta = AlchemyRegistry.getRandom().nextInt(4); + p_149726_1_.setBlockMetadataWithNotify(p_149726_2_, p_149726_3_, p_149726_4_, meta, 2); + } + } + + public boolean renderAsNormalBlock() { + return false; + } + + protected boolean canSilkHarvest() { + return false; + } + + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) { + /* + ForgeDirection dir=ForgeDirection.getOrientation(p_149646_5_); + Block b=p_149646_1_.getBlock(p_149646_2_+dir.offsetX, p_149646_3_+dir.offsetY, p_149646_4_+dir.offsetZ); + + if(b==null || b.getMaterial()==Material.air) return true; + return b!=this; + */ + return p_149646_1_.getBlock(p_149646_2_, p_149646_3_, p_149646_4_)!=this; + } + + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() + { + return 1; + } + + public boolean isOpaqueCube() + { + return false; + } + +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockBase.class b/src/main/java/jp/plusplus/fbs/block/BlockBase.class new file mode 100644 index 0000000..a907758 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockBase.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockBase.java b/src/main/java/jp/plusplus/fbs/block/BlockBase.java new file mode 100644 index 0000000..33e1a20 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockBase.java @@ -0,0 +1,98 @@ +package jp.plusplus.fbs.block; + +import jp.plusplus.fbs.FBS; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.resources.I18n; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +import java.util.List; +import java.util.Random; + +/** + * Createdby pluslus_Fon 2015/06/13. + */ +public class BlockBase extends Block { + protected String infoName=""; + protected int infoRow=0; + protected Random rand=new Random(); + + public BlockBase(Material mat) { + super(mat); + setCreativeTab(FBS.tab); + } + + public Block setBlockName(String s){ + super.setBlockName("fbs."+s); + return this; + } + public Block setBlockTextureName(String s){ + super.setBlockTextureName(FBS.MODID+":"+s); + return this; + } + + public void addBlockInformation(ItemStack item, EntityPlayer p_77624_2_, List list, boolean flag){ + if(infoName.length()>0 && FBS.enableDescription){ + for(int i=0;i 0){ + int k1 = this.rand.nextInt(21) + 10; + + if (k1 > itemstack.stackSize){ + k1 = itemstack.stackSize; + } + + itemstack.stackSize -= k1; + EntityItem entityitem = new EntityItem(par1World, (double)((float)x + f), (double)((float)y + f1), (double)((float)z + f2), new ItemStack(itemstack.getItem(), k1, itemstack.getItemDamage())); + + if (itemstack.hasTagCompound()){ + entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (double)((float)this.rand.nextGaussian() * f3); + entityitem.motionY = (double)((float)this.rand.nextGaussian() * f3 + 0.2F); + entityitem.motionZ = (double)((float)this.rand.nextGaussian() * f3); + par1World.spawnEntityInWorld(entityitem); + } + } + } + //par1World.func_96440_m(x, y, z, block); + } + + super.breakBlock(par1World, x, y, z, block, par6); + } + +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockBlock.class b/src/main/java/jp/plusplus/fbs/block/BlockBlock.class new file mode 100644 index 0000000..f62f0c1 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockBlock.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockBlock.java b/src/main/java/jp/plusplus/fbs/block/BlockBlock.java new file mode 100644 index 0000000..78053ab --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockBlock.java @@ -0,0 +1,59 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.item.ItemCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import java.util.List; +import java.util.Random; + +/** + * Created by pluslus_F on 2015/06/23. + */ +public class BlockBlock extends BlockBase { + public static String[] NAMES={"Ruby","Sapphire","Amethyst"}; + public IIcon[] icons; + + public BlockBlock(String name) { + super(Material.rock); + setHarvestLevel("pickaxe", 2); + setBlockName(name); + setBlockTextureName(name); + } + + @Override + public int damageDropped(int par1){ + return par1; + } + @Override + public void getSubBlocks(Item item, CreativeTabs par2CreativeTabs, List par3List) { + for (int i = 0; i < NAMES.length; i++) { + par3List.add(new ItemStack(item, 1, i)); + } + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister iconRegister) { + icons=new IIcon[NAMES.length]; + for(int i=0;i0?15:0; + } + + @Override + public Block setBlockTextureName(String p_149658_1_) { + this.textureName = p_149658_1_; + return this; + } + + @Override + public int getRenderType(){ + return FBS.renderDecorationId; + } + @Override + public boolean renderAsNormalBlock(){ + return false; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public int tickRate(World w) { + return 30; + } + + @Override + public int quantityDropped(int meta, int fortune, Random random) { + return 0; + } + + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return null; + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) { + int meta = world.getBlockMetadata(x, y, z); + + if (meta > 0) { + //火がついている場合、GUIひらく + player.openGui(FBS.instance, -1, world, x,y,z); + return true; + } else { + //持ち物が火打石と打ち金かどうか判定 + ItemStack current = player.getCurrentEquippedItem(); + if (current == null || current.getItem() != Items.flint_and_steel) return false; + + //火をつける + meta = 5 + world.rand.nextInt(4); + world.setBlockMetadataWithNotify(x, y, z, meta, 2); + + //damage flint + if (!player.capabilities.isCreativeMode) current.damageItem(1, player); + player.inventory.markDirty(); + if (!world.isRemote){ + world.playSoundEffect((double) x + 0.5D, (double) y + 0.5D, (double) z + 0.5D, "fire.ignite", 1.0F, world.rand.nextFloat() * 0.4F + 0.8F); + player.triggerAchievement(AchievementRegistry.bonfire); + } + + return true; + } + } + + @Override + public void updateTick(World w, int x, int y, int z, Random rand) { + if (!w.isRemote) { + int meta = w.getBlockMetadata(x, y, z); + if (meta == 0) return; + + //雨が降っているとはやく消える + if(w.isRaining() && w.getBiomeGenForCoords(x,z).getIntRainfall()>0 && w.getHeightValue(x,z)==y){ + meta -= 2*(1+rand.nextInt(3)); + } + else{ + meta -= 1 + rand.nextInt(3); + } + + if (meta > 0) w.setBlockMetadataWithNotify(x, y, z, meta, 2); + else{ + w.setBlockMetadataWithNotify(x, y, z, meta, 2); + } + } + } + + @Override + public boolean canPlaceBlockAt(World p_149742_1_, int p_149742_2_, int p_149742_3_, int p_149742_4_) { + return World.doesBlockHaveSolidTopSurface(p_149742_1_, p_149742_2_, p_149742_3_ - 1, p_149742_4_); + } + + @Override + public void onNeighborBlockChange(World p_149695_1_, int p_149695_2_, int p_149695_3_, int p_149695_4_, Block p_149695_5_) { + if (!World.doesBlockHaveSolidTopSurface(p_149695_1_, p_149695_2_, p_149695_3_ - 1, p_149695_4_)) { + p_149695_1_.func_147480_a(p_149695_2_, p_149695_3_, p_149695_4_, false); + } + } + + @Override + public void onEntityCollidedWithBlock(World world, int x, int y, int z, Entity entity) { + if(!entity.isBurning() && world.getBlockMetadata(x,y,z)>0){ + entity.setFire(20*5); + } + } + + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World p_149734_1_, int p_149734_2_, int p_149734_3_, int p_149734_4_, Random p_149734_5_) { + int meta=p_149734_1_.getBlockMetadata(p_149734_2_, p_149734_3_, p_149734_4_); + if(meta==0) return; + + if (p_149734_5_.nextInt(24) == 0) { + p_149734_1_.playSound((double) ((float) p_149734_2_ + 0.5F), (double) ((float) p_149734_3_ + 0.5F), (double) ((float) p_149734_4_ + 0.5F), "fire.fire", 1.0F + p_149734_5_.nextFloat(), p_149734_5_.nextFloat() * 0.7F + 0.3F, false); + } + + int l; + float f; + float f1; + float f2; + + if(p_149734_5_.nextInt(4)==0) return; + + if (!World.doesBlockHaveSolidTopSurface(p_149734_1_, p_149734_2_, p_149734_3_ - 1, p_149734_4_) && !Blocks.fire.canCatchFire(p_149734_1_, p_149734_2_, p_149734_3_ - 1, p_149734_4_, UP)) { + if (Blocks.fire.canCatchFire(p_149734_1_, p_149734_2_ - 1, p_149734_3_, p_149734_4_, EAST)) { + for (l = 0; l < 2; ++l) { + f = (float) p_149734_2_ + p_149734_5_.nextFloat() * 0.1F; + f1 = (float) p_149734_3_ + p_149734_5_.nextFloat(); + f2 = (float) p_149734_4_ + p_149734_5_.nextFloat(); + p_149734_1_.spawnParticle("largesmoke", (double) f, (double) f1, (double) f2, 0.0D, 0.0D, 0.0D); + } + } + + if (Blocks.fire.canCatchFire(p_149734_1_, p_149734_2_ + 1, p_149734_3_, p_149734_4_, WEST)) { + for (l = 0; l < 2; ++l) { + f = (float) (p_149734_2_ + 1) - p_149734_5_.nextFloat() * 0.1F; + f1 = (float) p_149734_3_ + p_149734_5_.nextFloat(); + f2 = (float) p_149734_4_ + p_149734_5_.nextFloat(); + p_149734_1_.spawnParticle("largesmoke", (double) f, (double) f1, (double) f2, 0.0D, 0.0D, 0.0D); + } + } + + if (Blocks.fire.canCatchFire(p_149734_1_, p_149734_2_, p_149734_3_, p_149734_4_ - 1, SOUTH)) { + for (l = 0; l < 2; ++l) { + f = (float) p_149734_2_ + p_149734_5_.nextFloat(); + f1 = (float) p_149734_3_ + p_149734_5_.nextFloat(); + f2 = (float) p_149734_4_ + p_149734_5_.nextFloat() * 0.1F; + p_149734_1_.spawnParticle("largesmoke", (double) f, (double) f1, (double) f2, 0.0D, 0.0D, 0.0D); + } + } + + if (Blocks.fire.canCatchFire(p_149734_1_, p_149734_2_, p_149734_3_, p_149734_4_ + 1, NORTH)) { + for (l = 0; l < 2; ++l) { + f = (float) p_149734_2_ + p_149734_5_.nextFloat(); + f1 = (float) p_149734_3_ + p_149734_5_.nextFloat(); + f2 = (float) (p_149734_4_ + 1) - p_149734_5_.nextFloat() * 0.1F; + p_149734_1_.spawnParticle("largesmoke", (double) f, (double) f1, (double) f2, 0.0D, 0.0D, 0.0D); + } + } + + if (Blocks.fire.canCatchFire(p_149734_1_, p_149734_2_, p_149734_3_ + 1, p_149734_4_, DOWN)) { + for (l = 0; l < 2; ++l) { + f = (float) p_149734_2_ + p_149734_5_.nextFloat(); + f1 = (float) (p_149734_3_ + 1) - p_149734_5_.nextFloat() * 0.1F; + f2 = (float) p_149734_4_ + p_149734_5_.nextFloat(); + p_149734_1_.spawnParticle("largesmoke", (double) f, (double) f1, (double) f2, 0.0D, 0.0D, 0.0D); + } + } + } else { + for (l = 0; l < 3; ++l) { + f = (float) p_149734_2_ + p_149734_5_.nextFloat(); + f1 = (float) p_149734_3_ + p_149734_5_.nextFloat() * 0.5F + 0.5F; + f2 = (float) p_149734_4_ + p_149734_5_.nextFloat(); + p_149734_1_.spawnParticle("largesmoke", (double) f, (double) f1, (double) f2, 0.0D, 0.0D, 0.0D); + } + } + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess world, int x, int y, int z) { + setBlockBounds(0,0,0,1,0.25f,1); + } + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World world, int x, int y, int z) { + return AxisAlignedBB.getBoundingBox(x,y,z,x+1,y+0.25,z+1); + } + + @SideOnly(Side.CLIENT) + public AxisAlignedBB getSelectedBoundingBoxFromPool(World world, int x, int y, int z) { + return AxisAlignedBB.getBoundingBox(x,y,z,x+1,y+0.25,z+1); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityForRender(); + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockBookshelfDark.class b/src/main/java/jp/plusplus/fbs/block/BlockBookshelfDark.class new file mode 100644 index 0000000..3ad1453 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockBookshelfDark.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockBookshelfDark.java b/src/main/java/jp/plusplus/fbs/block/BlockBookshelfDark.java new file mode 100644 index 0000000..8a131b3 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockBookshelfDark.java @@ -0,0 +1,136 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.Registry; +import jp.plusplus.fbs.exprop.FBSEntityProperties; +import jp.plusplus.fbs.item.ItemMonocle; +import jp.plusplus.fbs.particle.EntityGlowFX; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +import java.util.Random; + +/** + * Createdby pluslus_Fon 2015/06/06. + */ +public class BlockBookshelfDark extends BlockBase { + IIcon iconSide; + + public BlockBookshelfDark() { + super(Material.wood); + setBlockName("bookshelf"); + setBlockTextureName("bookshelf"); + setStepSound(Block.soundTypeWood); + setCreativeTab(FBS.tabBook); + setHardness(2.0F); + setResistance(5.0F); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) { + int meta = world.getBlockMetadata(x, y, z); + if (meta == 0) return false; + + ItemStack monocle=ItemMonocle.findMonocle(player); + if(monocle==null) return false; + + /* + ItemStack helm = player.getCurrentArmor(3); + if (helm == null || !(helm.getItem() instanceof ItemMonocle)) return false; + */ + + if (world.isRemote) return true; + + if(!player.capabilities.isCreativeMode){ + ItemMonocle.damageMonocle(player, monocle); + /* + helm.damageItem(1, player); + if (helm.stackSize <= 0) { + player.setCurrentItemOrArmor(4, null); + } + */ + } + + FBSEntityProperties prop = FBSEntityProperties.get(player); + if (prop == null) return true; + + ItemStack get = Registry.GetRandomBook(prop.getMagicLevel()); + if (get != null) { + player.entityDropItem(get, player.getEyeHeight()); + meta--; + world.setBlockMetadataWithNotify(x, y, z, meta, 3); + player.inventory.markDirty(); + } + return true; + } + + @Override + public int onBlockPlaced(World world, int x, int y, int z, int side, float p_149660_6_, float p_149660_7_, float p_149660_8_, int meta) { + //world.setBlockMetadataWithNotify(x, y, z, 3, 3); + return 0; + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister p_149651_1_) { + blockIcon = p_149651_1_.registerIcon(FBS.MODID + ":bookshelfTop"); + iconSide = p_149651_1_.registerIcon(FBS.MODID + ":bookshelfSide"); + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + return (side == 1 || side == 0) ? blockIcon : iconSide; + } + + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World world, int x, int y, int z, Random rand) { + if (world.getBlockMetadata(x, y, z) == 0) return; + + EntityPlayer ep = FBS.proxy.getEntityPlayerInstance(); + if (ep == null) return; + + if(ItemMonocle.findMonocle(ep)==null) return; + + /* + ItemStack helm = ep.getCurrentArmor(3); + if (helm == null || !(helm.getItem() instanceof ItemMonocle)) return; + */ + + float f = (float) x + 0.5F; + float f1 = (float) y + 0.0F + rand.nextFloat() * 6.0F / 16.0F; + float f2 = (float) z + 0.5F; + float f3 = 0.6F; + float f4 = rand.nextFloat() * 0.6F - 0.3F; + float f5 =rand.nextFloat()*0.75f; + //float f4=0.6f; + + spawnParticle(world, (double) (f - f3), (double) (f1+f5), (double) (f2 + f4)); + spawnParticle(world, (double) (f + f3), (double) (f1+f5), (double) (f2 + f4)); + spawnParticle(world, (double) (f + f4), (double) (f1+f5), (double) (f2 - f3)); + spawnParticle(world, (double) (f + f4), (double) (f1+f5), (double) (f2 + f3)); + } + + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_){ + return Items.book; + } + @Override + public int quantityDropped(int meta, int fortune, Random random){ + return 3; + } + + @SideOnly(Side.CLIENT) + protected void spawnParticle(World world, double x, double y, double z){ + EntityGlowFX e=new EntityGlowFX(world, x,y,z); + FMLClientHandler.instance().getClient().effectRenderer.addEffect(e); + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockCharm.class b/src/main/java/jp/plusplus/fbs/block/BlockCharm.class new file mode 100644 index 0000000..55ff17f Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockCharm.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockCharm.java b/src/main/java/jp/plusplus/fbs/block/BlockCharm.java new file mode 100644 index 0000000..16b8f70 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockCharm.java @@ -0,0 +1,93 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.item.ItemCharm; +import jp.plusplus.fbs.item.ItemCore; +import net.minecraft.block.Block; +import net.minecraft.block.BlockRedstoneWire; +import net.minecraft.block.material.Material; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import java.util.Random; + +/** + * Created by pluslus_F on 2015/06/17. + */ +public class BlockCharm extends BlockBase { + public BlockCharm() { + super(Material.circuits); + setBlockName("charm"); + setBlockTextureName("charm"); + setCreativeTab(null); + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.0625F, 1.0F); + //BlockRedstoneWire + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) { + return null; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public int getRenderType() { + return FBS.renderCharmId; + } + + @SideOnly(Side.CLIENT) + public int colorMultiplier(IBlockAccess p_149720_1_, int p_149720_2_, int p_149720_3_, int p_149720_4_) { + int meta = p_149720_1_.getBlockMetadata(p_149720_2_, p_149720_3_, p_149720_4_); + return ItemCharm.COLOR_VALUE[meta ^ 15]; + } + + @Override + public boolean canPlaceBlockAt(World p_149742_1_, int p_149742_2_, int p_149742_3_, int p_149742_4_) { + return p_149742_1_.isBlockNormalCubeDefault(p_149742_2_, p_149742_3_ - 1, p_149742_4_, true); + } + + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return ItemCore.charm; + } + + @SideOnly(Side.CLIENT) + public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) { + return ItemCore.charm; + } + + @Override + public int damageDropped(int p_149692_1_) { + return p_149692_1_ ^ 15; + } + + @Override + public void onNeighborBlockChange(World p_149695_1_, int p_149695_2_, int p_149695_3_, int p_149695_4_, Block p_149695_5_) { + if (!p_149695_1_.isRemote) { + boolean flag = this.canPlaceBlockAt(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_); + + if (!flag){ + this.dropBlockAsItem(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_, p_149695_1_.getBlockMetadata(p_149695_2_, p_149695_3_, p_149695_4_), 0); + p_149695_1_.setBlockToAir(p_149695_2_, p_149695_3_, p_149695_4_); + } + + super.onNeighborBlockChange(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_, p_149695_5_); + } + } + +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockCore.class b/src/main/java/jp/plusplus/fbs/block/BlockCore.class new file mode 100644 index 0000000..eda0f41 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockCore.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockCore.java b/src/main/java/jp/plusplus/fbs/block/BlockCore.java new file mode 100644 index 0000000..d25da4b --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockCore.java @@ -0,0 +1,145 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.common.registry.GameRegistry; +import jp.plusplus.fbs.item.*; +import jp.plusplus.fbs.pottery.*; +import jp.plusplus.fbs.storage.BlockMealCrystal; +import jp.plusplus.fbs.storage.BlockMealInlet; +import jp.plusplus.fbs.storage.BlockMealOutletSingle; +import jp.plusplus.fbs.storage.BlockMealTerminal; +import net.minecraft.block.Block; +import net.minecraftforge.fluids.Fluid; +import net.minecraftforge.fluids.FluidRegistry; + +/** + * Createdby pluslus_Fon 2015/06/06. + */ +public class BlockCore { + public static Fluid mana; + + public static Block ore; + public static Block block; + + public static Block cropLavender; + public static Block cropRedLily; + public static Block harvestableHerb; + public static Block harvestableMushroom; + public static Block harvestableGrass; + + public static Block fallenLeaves; + public static Block leaves; + public static Block plank; + public static Block bookshelf; + public static Block charm; + public static Block magicCore; + + public static Block extractingFurnace; + public static Block extractingFurnaceActive; + public static Block fillingTable; + public static Block workbench; + public static Block mirror; + public static Block pottersWheel; + public static Block kiln; + public static Block kilnActive; + public static Block bonfire; + + public static Block barrier; + public static Block portal1; + public static Block portal2; + + public static BlockPotteryBase pot; + public static BlockPotteryBase jar; + + public static Block tableAlchemist; + public static Block alchemyCauldron; + + public static Block schoolTable; + + public static Block mealCrystal; + public static Block mealInlet; + public static Block mealOutletSingle; + public static Block mealOutlet; + public static Block mealTerminal; + + public static void Init(){ + mana=new Fluid("fbs.mana").setUnlocalizedName("fbs.mana").setLuminosity(15); + FluidRegistry.registerFluid(mana); + + ore=new BlockOre().setHardness(3.5f).setResistance(5.0f); + block=new BlockBlock("block").setHardness(5.0f).setResistance(10.0f); + GameRegistry.registerBlock(ore, ItemOre.class,"ore"); + GameRegistry.registerBlock(block, ItemOre.class, "block"); + + cropLavender=new BlockCropLavender(); + cropRedLily=new BlockCropRedLily(); + harvestableHerb=new BlockHerb(); + harvestableMushroom=new BlockMushroom(); + harvestableGrass=new BlockGrass(); + GameRegistry.registerBlock(cropLavender, "cropLavender"); + GameRegistry.registerBlock(cropRedLily, "cropRedLily"); + GameRegistry.registerBlock(harvestableHerb, ItemBlockMeta.class, "harvestableHerb"); + GameRegistry.registerBlock(harvestableMushroom, ItemBlockMeta.class, "harvestableMushroom"); + GameRegistry.registerBlock(harvestableGrass, ItemBlockMeta.class, "harvestableGrass"); + + fallenLeaves=new BlockFallenLeaves(); + leaves=new BlockFBSLeaves(); + plank =new BlockFBSWood(); + bookshelf=new BlockBookshelfDark(); + charm=new BlockCharm(); + magicCore=new BlockMagicCore(); + GameRegistry.registerBlock(fallenLeaves, "fallenLeaves"); + GameRegistry.registerBlock(leaves, ItemBlockMeta.class, "leaves"); + GameRegistry.registerBlock(plank, "plank"); + GameRegistry.registerBlock(bookshelf, "bookshelf"); + GameRegistry.registerBlock(charm, "blockCharm"); + GameRegistry.registerBlock(magicCore, ItemMagicCore.class, "magicCore"); + + extractingFurnace=new BlockExtractingFurnace(false); + extractingFurnaceActive=new BlockExtractingFurnace(true).setCreativeTab(null).setLightLevel(1.0f); + fillingTable=new BlockFillingTable(); + workbench=new BlockFBSWorkbench(); + mirror=new BlockMirror(); + pottersWheel=new BlockPottersWheel(); + kiln=new BlockKiln(false); + kilnActive=new BlockKiln(true).setCreativeTab(null).setLightLevel(1.0f); + bonfire=new BlockBonfire(); + GameRegistry.registerBlock(extractingFurnace, ItemBlockBase.class, "extractingFurnace"); + GameRegistry.registerBlock(extractingFurnaceActive, ItemBlockBase.class, "extractingFurnaceActive"); + GameRegistry.registerBlock(fillingTable, ItemBlockBase.class, "fillingTable"); + GameRegistry.registerBlock(workbench, ItemBlockBase.class, "workbench"); + GameRegistry.registerBlock(mirror, ItemBlockBase.class, "mirror"); + GameRegistry.registerBlock(pottersWheel, ItemBlockBase.class, "pottersWheel"); + GameRegistry.registerBlock(kiln, ItemBlockBase.class, "kiln"); + GameRegistry.registerBlock(kilnActive, ItemBlockBase.class, "kilnActive"); + GameRegistry.registerBlock(bonfire, "bonfire"); + + barrier=new BlockBarrier(); + portal1=new BlockPortalWarp(); + portal2=new BlockPortalAutumn(); + GameRegistry.registerBlock(barrier, "barrier"); + GameRegistry.registerBlock(portal1, "portal1"); + GameRegistry.registerBlock(portal2, "portal2"); + + pot =new BlockPot(350); + //jar =new BlockJar(350); + GameRegistry.registerBlock(pot, ItemBlockPottery.class, "pot"); + //GameRegistry.registerBlock(jar, ItemBlockPottery.class, "jar"); + + tableAlchemist=new BlockAlchemistTable(); + alchemyCauldron=new BlockAlchemyCauldron(); + GameRegistry.registerBlock(tableAlchemist, ItemAlchemyTable.class, "tableAlchemist"); + GameRegistry.registerBlock(alchemyCauldron, ItemAlchemyCauldron.class, "alchemyCauldron"); + + schoolTable=new BlockSchoolTable(); + GameRegistry.registerBlock(schoolTable, "schoolTable"); + + mealCrystal=new BlockMealCrystal(); + mealInlet=new BlockMealInlet(); + mealOutletSingle=new BlockMealOutletSingle(); + mealTerminal=new BlockMealTerminal(); + GameRegistry.registerBlock(mealCrystal, ItemBlockBase.class, "mealCrystal"); + GameRegistry.registerBlock(mealInlet, ItemBlockBase.class, "mealInlet"); + GameRegistry.registerBlock(mealOutletSingle, ItemBlockBase.class, "mealOutletSingle"); + GameRegistry.registerBlock(mealTerminal, ItemBlockBase.class, "mealTerminal"); + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockCropLavender.class b/src/main/java/jp/plusplus/fbs/block/BlockCropLavender.class new file mode 100644 index 0000000..bd44033 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockCropLavender.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockCropLavender.java b/src/main/java/jp/plusplus/fbs/block/BlockCropLavender.java new file mode 100644 index 0000000..62f9f84 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockCropLavender.java @@ -0,0 +1,51 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.item.ItemCore; +import net.minecraft.block.BlockCrops; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.util.IIcon; + +/** + * Createdby pluslus_Fon 2015/06/13. + */ +public class BlockCropLavender extends BlockCrops { + private IIcon[] icons = new IIcon[6]; + + public BlockCropLavender() { + setBlockName("fbs.lavender"); + setBlockTextureName(FBS.MODID + ":lavender"); + } + + protected Item func_149866_i() + { + return ItemCore.seedLavender; + } + + protected Item func_149865_P() + { + return ItemCore.lavender; + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister p_149651_1_) { + for (int i = 0; i < icons.length; ++i) { + icons[i] = p_149651_1_.registerIcon(this.getTextureName() + "_stage_" + i); + } + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(int p_149691_1_, int p_149691_2_) { + if (p_149691_2_ < 0 || p_149691_2_ > 7) { + p_149691_2_ = 7; + } + + int i = 5 * p_149691_2_ / 7; + if (i > 5) i = 5; + return icons[i]; + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockCropRedLily.class b/src/main/java/jp/plusplus/fbs/block/BlockCropRedLily.class new file mode 100644 index 0000000..e356522 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockCropRedLily.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockCropRedLily.java b/src/main/java/jp/plusplus/fbs/block/BlockCropRedLily.java new file mode 100644 index 0000000..a7fb1d4 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockCropRedLily.java @@ -0,0 +1,103 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.Registry; +import jp.plusplus.fbs.item.ItemCore; +import net.minecraft.block.Block; +import net.minecraft.block.BlockBush; +import net.minecraft.block.BlockCrops; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.init.Blocks; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraftforge.common.EnumPlantType; +import net.minecraftforge.common.IPlantable; +import net.minecraftforge.common.util.ForgeDirection; + +import java.util.ArrayList; + +import static net.minecraftforge.common.util.ForgeDirection.UP; + +/** + * Createdby pluslus_Fon 2015/088/13. + */ +public class BlockCropRedLily extends BlockCrops { + private IIcon[] icons = new IIcon[4]; + + public BlockCropRedLily() { + setBlockName("fbs.redLily"); + setBlockTextureName(FBS.MODID + ":redLily"); + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister p_149651_1_) { + for (int i = 0; i < icons.length; ++i) { + icons[i] = p_149651_1_.registerIcon(this.getTextureName() + "_stage_" + i); + } + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + if (meta < 0 || meta > 7) { + meta = 7; + } + + if(meta==7) return icons[3]; + + int i = 3 * meta / 7; + if (i > 2) i = 2; + return icons[i]; + } + + protected boolean canPlaceBlockOn(Block p_149854_1_) { + return p_149854_1_ == Blocks.grass || p_149854_1_ == Blocks.dirt || p_149854_1_ == Blocks.farmland || p_149854_1_ == BlockCore.fallenLeaves; + } + + + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) { + //ArrayList ret = super.getDrops(world, x, y, z, metadata, fortune); + ArrayList ret=new ArrayList(); + Item drop=null; + + if(metadata<7){ + //ヒガンバナの種のドロップ + drop=ItemCore.seedRedLily; + } + else{ + //ヒガンバナのドロップ + BiomeGenBase bgb= world.getBiomeGenForCoords(x,z); + if(bgb== Registry.biomeAutumn){ + drop=ItemCore.redLilyDirty; + } + else{ + drop=ItemCore.redLily; + } + } + + ret.add(new ItemStack(drop)); + return ret; + } + + @SideOnly(Side.CLIENT) + public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) { + return ItemCore.seedRedLily; + } + protected Item func_149866_i() + { + return ItemCore.seedRedLily; + } + + protected Item func_149865_P() + { + return ItemCore.redLily; + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockExtractingFurnace.class b/src/main/java/jp/plusplus/fbs/block/BlockExtractingFurnace.class new file mode 100644 index 0000000..e35dc6b Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockExtractingFurnace.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockExtractingFurnace.java b/src/main/java/jp/plusplus/fbs/block/BlockExtractingFurnace.java new file mode 100644 index 0000000..67303d6 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockExtractingFurnace.java @@ -0,0 +1,225 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.particle.EntityGlowFX; +import jp.plusplus.fbs.tileentity.TileEntityExtractingFurnace; +import net.minecraft.block.*; +import net.minecraft.block.material.Material; +import net.minecraft.client.particle.EffectRenderer; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.tileentity.TileEntityFurnace; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.util.ForgeDirection; + +import java.util.List; +import java.util.Random; + +/** + * Createdby pluslus_Fon 2015/06/08. + */ +public class BlockExtractingFurnace extends BlockBase implements ITileEntityProvider{ + private IIcon iconFTop; + private IIcon iconFBottom; + private IIcon iconFSide; + private boolean isActive; + private static boolean dontDrop; + + public BlockExtractingFurnace(boolean flag) { + super(Material.rock); + isActive=flag; + setBlockName("extractingFurnace"); + setBlockTextureName("extractingFurnaceFront" + (isActive ? "On" : "Off")); + setHardness(3.5F); + setStepSound(soundTypePiston); + infoName="extractingFurnace"; + infoRow=1; + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityExtractingFurnace(); + } + @Override + public boolean canPlaceTorchOnTop(World par1World, int par2, int par3, int par4){ + return false; + } + + @Override + public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { + TileEntity e=par1World.getTileEntity(par2, par3, par4); + if(!par1World.isRemote && e instanceof TileEntityExtractingFurnace){ + par5EntityPlayer.openGui(FBS.instance, -1, par1World, par2, par3, par4); + } + return true; + } + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack item) { + int l = MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + + if (l == 0) { + world.setBlockMetadataWithNotify(x, y, z, 2, 2); + } + + if (l == 1) { + world.setBlockMetadataWithNotify(x, y, z, 5, 2); + } + + if (l == 2) { + world.setBlockMetadataWithNotify(x, y, z, 3, 2); + } + + if (l == 3) { + world.setBlockMetadataWithNotify(x, y, z, 4, 2); + } + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int par6) { + if (!dontDrop) { + TileEntity tileentity = world.getTileEntity(x, y, z); + + if(tileentity==null){ + super.breakBlock(world, x, y, z, block, par6); + return; + } + + if(tileentity instanceof IInventory){ + IInventory inv=(IInventory)tileentity; + + for (int j1 = 0; j1 < inv.getSizeInventory(); j1++){ + ItemStack itemstack = inv.getStackInSlot(j1); + + if (itemstack != null){ + float f = this.rand.nextFloat() * 0.8F + 0.1F; + float f1 = this.rand.nextFloat() * 0.8F + 0.1F; + float f2 = this.rand.nextFloat() * 0.8F + 0.1F; + + while (itemstack.stackSize > 0){ + int k1 = this.rand.nextInt(21) + 10; + + if (k1 > itemstack.stackSize){ + k1 = itemstack.stackSize; + } + + itemstack.stackSize -= k1; + EntityItem entityitem = new EntityItem(world, (double)((float)x + f), (double)((float)y + f1), (double)((float)z + f2), new ItemStack(itemstack.getItem(), k1, itemstack.getItemDamage())); + + if (itemstack.hasTagCompound()){ + entityitem.getEntityItem().setTagCompound((NBTTagCompound)itemstack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (double)((float)this.rand.nextGaussian() * f3); + entityitem.motionY = (double)((float)this.rand.nextGaussian() * f3 + 0.2F); + entityitem.motionZ = (double)((float)this.rand.nextGaussian() * f3); + world.spawnEntityInWorld(entityitem); + } + } + } + //par1World.func_96440_m(x, y, z, block); + } + } + + if (hasTileEntity(par6)){ + world.removeTileEntity(x,y,z); + } + } + + public static void updateFurnaceBlockState(boolean s, World world, int x, int y, int z) { + int l = world.getBlockMetadata(x, y, z); + TileEntity tileentity = world.getTileEntity(x, y, z); + dontDrop = true; + + if (s) { + world.setBlock(x, y, z, BlockCore.extractingFurnaceActive); + } else { + world.setBlock(x, y, z, BlockCore.extractingFurnace); + } + + dontDrop = false; + world.setBlockMetadataWithNotify(x, y, z, l, 2); + + if (tileentity != null) { + tileentity.validate(); + world.setTileEntity(x, y, z, tileentity); + } + } + + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World world, int x, int y, int z, Random p_149734_5_) { + if (isActive) { + int l = world.getBlockMetadata(x, y, z); + float f = (float) x + 0.5F; + float f1 = (float) y + 0.0F + p_149734_5_.nextFloat() * 6.0F / 16.0F; + float f2 = (float) z + 0.5F; + float f3 = 0.52F; + float f4 = p_149734_5_.nextFloat() * 0.6F - 0.3F; + + + EffectRenderer er= FMLClientHandler.instance().getClient().effectRenderer; + if (l == 4) { + world.spawnParticle("smoke", (double) (f - f3), (double) f1, (double) (f2 + f4), 0.0D, 0.0D, 0.0D); + er.addEffect(new EntityGlowFX(world, (double) (f - f3), (double) f1, (double) (f2 + f4))); + } else if (l == 5) { + world.spawnParticle("smoke", (double) (f + f3), (double) f1, (double) (f2 + f4), 0.0D, 0.0D, 0.0D); + er.addEffect(new EntityGlowFX(world, (double) (f + f3), (double) f1, (double) (f2 + f4))); + } else if (l == 2) { + world.spawnParticle("smoke", (double) (f + f4), (double) f1, (double) (f2 - f3), 0.0D, 0.0D, 0.0D); + er.addEffect(new EntityGlowFX(world, (double) (f + f4), (double) f1, (double) (f2 - f3))); + } else if (l == 3) { + world.spawnParticle("smoke", (double) (f + f4), (double) f1, (double) (f2 + f3), 0.0D, 0.0D, 0.0D); + er.addEffect(new EntityGlowFX(world, (double) (f + f4), (double) f1, (double) (f2 + f3))); + } + } + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister p_149651_1_) { + super.registerBlockIcons(p_149651_1_); + iconFTop = p_149651_1_.registerIcon("furnace_top"); + iconFBottom = p_149651_1_.registerIcon("furnace_top"); + iconFSide = p_149651_1_.registerIcon(FBS.MODID+":fillingTableSide"); + } + @Override + public IIcon getIcon(int side, int meta){ + if(side==0) return iconFBottom; + if(side==1) return iconFTop; + if(side==meta) return blockIcon; + return iconFSide; + } + + @Override + public int getRenderType(){ + return FBS.renderDirectionalId; + } + @Override + public boolean renderAsNormalBlock(){ + return false; + } + + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_){ + return Item.getItemFromBlock(BlockCore.extractingFurnace); + } + + @SideOnly(Side.CLIENT) + public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) { + return Item.getItemFromBlock(BlockCore.extractingFurnace); + } +} \ No newline at end of file diff --git a/src/main/java/jp/plusplus/fbs/block/BlockFBSLeaves.class b/src/main/java/jp/plusplus/fbs/block/BlockFBSLeaves.class new file mode 100644 index 0000000..514be08 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockFBSLeaves.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockFBSLeaves.java b/src/main/java/jp/plusplus/fbs/block/BlockFBSLeaves.java new file mode 100644 index 0000000..2fc5378 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockFBSLeaves.java @@ -0,0 +1,121 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import net.minecraft.block.Block; +import net.minecraft.block.BlockLeaves; +import net.minecraft.block.BlockNewLeaf; +import net.minecraft.block.BlockOldLeaf; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.init.Items; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.util.IIcon; +import net.minecraft.world.ColorizerFoliage; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import java.util.List; + +/** + * Created by plusplus_F on 2015/08/20. + */ +public class BlockFBSLeaves extends BlockLeaves { + public static final String[][] field_150130_N = new String[][]{{"leaves_oak", "leaves_birch"}, {"leaves_oak_opaque", "leaves_birch_opaque"}}; + public static final String[] field_150131_O = new String[]{"oak", "birch"}; + + public BlockFBSLeaves() { + setBlockName("leaves"); + setBlockTextureName("leaves"); + setCreativeTab(FBS.tab); + } + + /** + * Returns the color this block should be rendered. Used by leaves. + */ + @SideOnly(Side.CLIENT) + public int getRenderColor(int meta) { + meta = (meta & 3); + + if (meta == 0) return 0xff0000; + else return 0xffff00; + //return (meta & 3) == 1 ? ColorizerFoliage.getFoliageColorPine() : ((meta & 3) == 2 ? ColorizerFoliage.getFoliageColorBirch() : super.getRenderColor(meta)); + } + + /** + * Returns a integer with hex for 0xrrggbb with this color multiplied against the blocks color. Note only called + * when first determining what to render. + */ + @SideOnly(Side.CLIENT) + public int colorMultiplier(IBlockAccess w, int x, int y, int z) { + int meta = (w.getBlockMetadata(x, y, z) & 3); + + if (meta == 0) return 0xff0000; + else return 0xffff00; + //return (meta & 3) == 1 ? ColorizerFoliage.getFoliageColorPine() : ((meta & 3) == 2 ? ColorizerFoliage.getFoliageColorBirch() : super.colorMultiplier(w, x, y, z)); + } + + protected void func_150124_c(World p_150124_1_, int p_150124_2_, int p_150124_3_, int p_150124_4_, int p_150124_5_, int p_150124_6_) { + if ((p_150124_5_ & 3) == 0 && p_150124_1_.rand.nextInt(p_150124_6_) == 0) { + this.dropBlockAsItem(p_150124_1_, p_150124_2_, p_150124_3_, p_150124_4_, new ItemStack(Items.apple, 1, 0)); + } + } + + public int damageDropped(int p_149692_1_) { + return (p_149692_1_&3)==0?0:2; + } + /* + protected int func_150123_b(int p_150123_1_) { + int j = super.func_150123_b(p_150123_1_); + + if ((p_150123_1_ & 3) == 3) { + j = 40; + } + + return j; + } + */ + + /** + * Gets the block's texture. Args: side, meta + */ + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + meta = (meta & 3); + if (meta >= field_150129_M.length) meta = 0; + return field_150129_M[field_150127_b][meta]; + //return (meta & 3) == 1 ? this.field_150129_M[this.field_150127_b][1] : ((meta & 3) == 3 ? this.field_150129_M[this.field_150127_b][3] : ((meta & 3) == 2 ? this.field_150129_M[this.field_150127_b][2] : this.field_150129_M[this.field_150127_b][0])); + } + + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List p_149666_3_) { + for (int i = 0; i < field_150131_O.length; i++) p_149666_3_.add(new ItemStack(p_149666_1_, 1, i)); + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister p_149651_1_) { + for (int i = 0; i < field_150130_N.length; ++i) { + this.field_150129_M[i] = new IIcon[field_150130_N[i].length]; + + for (int j = 0; j < field_150130_N[i].length; ++j) { + this.field_150129_M[i][j] = p_149651_1_.registerIcon(field_150130_N[i][j]); + } + } + } + + public String[] func_150125_e() { + return field_150131_O; + } + + public boolean isOpaqueCube() + { + return false; + } + + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) { + return true; + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockFBSWood.class b/src/main/java/jp/plusplus/fbs/block/BlockFBSWood.class new file mode 100644 index 0000000..c7262b7 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockFBSWood.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockFBSWood.java b/src/main/java/jp/plusplus/fbs/block/BlockFBSWood.java new file mode 100644 index 0000000..460c4d6 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockFBSWood.java @@ -0,0 +1,19 @@ +package jp.plusplus.fbs.block; + +import jp.plusplus.fbs.FBS; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; + +/** + * Createdby pluslus_Fon 2015/06/06. + */ +public class BlockFBSWood extends BlockBase { + public BlockFBSWood() { + super(Material.wood); + setBlockName("plank"); + setBlockTextureName("bookshelfTop"); + setStepSound(Block.soundTypeWood); + setHardness(2.0F); + setResistance(5.0F); + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockFBSWorkbench.class b/src/main/java/jp/plusplus/fbs/block/BlockFBSWorkbench.class new file mode 100644 index 0000000..49aca75 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockFBSWorkbench.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockFBSWorkbench.java b/src/main/java/jp/plusplus/fbs/block/BlockFBSWorkbench.java new file mode 100644 index 0000000..65ab0d5 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockFBSWorkbench.java @@ -0,0 +1,134 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.tileentity.TileEntityExtractingFurnace; +import jp.plusplus.fbs.tileentity.TileEntityFBSWorkbench; +import net.minecraft.block.Block; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +/** + * Createdby pluslus_Fon 2015/06/14. + */ +public class BlockFBSWorkbench extends BlockBase implements ITileEntityProvider { + private IIcon iconFTop; + private IIcon iconFBottom; + + public BlockFBSWorkbench() { + super(Material.rock); + setBlockName("workbench"); + setBlockTextureName("workbench"); + setHardness(3.5F); + setStepSound(soundTypeWood); + infoName = "workbench"; + infoRow = 1; + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityFBSWorkbench(); + } + + @Override + public boolean canPlaceTorchOnTop(World par1World, int par2, int par3, int par4) { + return false; + } + + @Override + public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { + TileEntity e = par1World.getTileEntity(par2, par3, par4); + if (!par1World.isRemote) { + par5EntityPlayer.openGui(FBS.instance, -1, par1World, par2, par3, par4); + } + return true; + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister p_149651_1_) { + blockIcon = p_149651_1_.registerIcon(FBS.MODID + ":workbenchSide"); + iconFTop = p_149651_1_.registerIcon(FBS.MODID + ":workbenchTop"); + iconFBottom = p_149651_1_.registerIcon(FBS.MODID + ":bookshelfTop"); + } + + @Override + public IIcon getIcon(int side, int meta) { + if (side == 0) return iconFBottom; + if (side == 1) return iconFTop; + return blockIcon; + } + + @Override + public int getRenderType() { + return FBS.renderDirectionalId; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int par6) { + TileEntity tileentity = world.getTileEntity(x, y, z); + + if (tileentity == null) { + super.breakBlock(world, x, y, z, block, par6); + return; + } + + if (tileentity instanceof IInventory) { + IInventory inv = (IInventory) tileentity; + + for (int j1 = 0; j1 < inv.getSizeInventory(); j1++) { + if(j1==9) continue; + + ItemStack itemstack = inv.getStackInSlot(j1); + + if (itemstack != null) { + float f = this.rand.nextFloat() * 0.8F + 0.1F; + float f1 = this.rand.nextFloat() * 0.8F + 0.1F; + float f2 = this.rand.nextFloat() * 0.8F + 0.1F; + + while (itemstack.stackSize > 0) { + int k1 = this.rand.nextInt(21) + 10; + + if (k1 > itemstack.stackSize) { + k1 = itemstack.stackSize; + } + + itemstack.stackSize -= k1; + EntityItem entityitem = new EntityItem(world, (double) ((float) x + f), (double) ((float) y + f1), (double) ((float) z + f2), new ItemStack(itemstack.getItem(), k1, itemstack.getItemDamage())); + + if (itemstack.hasTagCompound()) { + entityitem.getEntityItem().setTagCompound((NBTTagCompound) itemstack.getTagCompound().copy()); + } + + float f3 = 0.05F; + entityitem.motionX = (double) ((float) this.rand.nextGaussian() * f3); + entityitem.motionY = (double) ((float) this.rand.nextGaussian() * f3 + 0.2F); + entityitem.motionZ = (double) ((float) this.rand.nextGaussian() * f3); + world.spawnEntityInWorld(entityitem); + } + } + } + //par1World.func_96440_m(x, y, z, block); + } + + if (hasTileEntity(par6)){ + world.removeTileEntity(x, y, z); + } + } +} \ No newline at end of file diff --git a/src/main/java/jp/plusplus/fbs/block/BlockFallenLeaves.class b/src/main/java/jp/plusplus/fbs/block/BlockFallenLeaves.class new file mode 100644 index 0000000..75add4f Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockFallenLeaves.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockFallenLeaves.java b/src/main/java/jp/plusplus/fbs/block/BlockFallenLeaves.java new file mode 100644 index 0000000..56c6ff7 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockFallenLeaves.java @@ -0,0 +1,57 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraftforge.common.EnumPlantType; +import net.minecraftforge.common.IPlantable; +import net.minecraftforge.common.util.ForgeDirection; + +import java.util.Random; + +/** + * Created by plusplus_F on 2015/08/24. + * 落ち葉 + */ +public class BlockFallenLeaves extends BlockBase { + IIcon icon; + + public BlockFallenLeaves() { + super(Material.ground); + setBlockTextureName("fallenLeaves"); + setBlockName("fallenLeaves"); + setHardness(0.2F); + setLightOpacity(1); + setStepSound(Block.soundTypeGrass); + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister register) { + blockIcon = register.registerIcon(getTextureName()+"Top"); + icon=register.registerIcon(getTextureName()+"Side"); + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(int side, int meta) { + if(side==0) return Blocks.dirt.getIcon(0,0); + if(side==1) return blockIcon; + return icon; + } + + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return Item.getItemFromBlock(Blocks.dirt); + } + + @Override + public boolean canSustainPlant(IBlockAccess world, int x, int y, int z, ForgeDirection direction, IPlantable plantable) { + return plantable.getPlantType(world, x,y+1,z)== EnumPlantType.Plains; + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockFillingTable.class b/src/main/java/jp/plusplus/fbs/block/BlockFillingTable.class new file mode 100644 index 0000000..70a09a0 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockFillingTable.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockFillingTable.java b/src/main/java/jp/plusplus/fbs/block/BlockFillingTable.java new file mode 100644 index 0000000..f311022 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockFillingTable.java @@ -0,0 +1,105 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.item.ItemMonocle; +import jp.plusplus.fbs.particle.EntityGlowFX; +import jp.plusplus.fbs.tileentity.TileEntityExtractingFurnace; +import jp.plusplus.fbs.tileentity.TileEntityFillingTable; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.client.particle.EffectRenderer; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.World; + +import java.util.Random; + +/** + * Createdby pluslus_Fon 2015/06/14. + */ +public class BlockFillingTable extends BlockBase implements ITileEntityProvider { + private IIcon iconFTop; + private IIcon iconFBottom; + + public BlockFillingTable() { + super(Material.rock); + setBlockName("fillingTable"); + setBlockTextureName("fillingTable"); + setHardness(3.5F); + setStepSound(soundTypePiston); + setCreativeTab(FBS.tabBook); + infoName="fillingTable"; + infoRow=3; + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityFillingTable(); + } + @Override + public boolean canPlaceTorchOnTop(World par1World, int par2, int par3, int par4){ + return false; + } + + @Override + public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { + TileEntity e=par1World.getTileEntity(par2, par3, par4); + if(!par1World.isRemote && e instanceof TileEntityFillingTable){ + par5EntityPlayer.openGui(FBS.instance, -1, par1World, par2, par3, par4); + } + return true; + } + + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World world, int x, int y, int z, Random rand) { + TileEntity te=world.getTileEntity(x,y,z); + if (!(te instanceof TileEntityFillingTable) || ((TileEntityFillingTable)te).progress==0) return; + + EntityPlayer ep = FBS.proxy.getEntityPlayerInstance(); + if (ep == null) return; + ItemStack helm = ep.getCurrentArmor(3); + if (helm == null || !(helm.getItem() instanceof ItemMonocle)) return; + + float f = (float) x + 0.5F; + float f1 = (float) y + 0.0F + rand.nextFloat() * 6.0F / 16.0F; + float f2 = (float) z + 0.5F; + float f3 = 0.6F; + float f4 = rand.nextFloat() * 0.6F - 0.3F; + float f5 =rand.nextFloat()*0.75f; + //float f4=0.6f; + + EffectRenderer er=FMLClientHandler.instance().getClient().effectRenderer; + er.addEffect(new EntityGlowFX(world, (double) (f - f3), (double) (f1+f5), (double) (f2 + f4))); + er.addEffect(new EntityGlowFX(world, (double) (f + f3), (double) (f1+f5), (double) (f2 + f4))); + er.addEffect(new EntityGlowFX(world, (double) (f + f4), (double) (f1+f5), (double) (f2 - f3))); + er.addEffect(new EntityGlowFX(world, (double) (f + f4), (double) (f1+f5), (double) (f2 + f3))); + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister p_149651_1_) { + blockIcon = p_149651_1_.registerIcon(FBS.MODID+":fillingTableSide"); + iconFTop = p_149651_1_.registerIcon(FBS.MODID+":fillingTableTop"); + iconFBottom = p_149651_1_.registerIcon("furnace_top"); + } + @Override + public IIcon getIcon(int side, int meta){ + if(side==0) return iconFBottom; + if(side==1) return iconFTop; + return blockIcon; + } + + @Override + public int getRenderType(){ + return FBS.renderDirectionalId; + } + @Override + public boolean renderAsNormalBlock(){ + return false; + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockGrass.class b/src/main/java/jp/plusplus/fbs/block/BlockGrass.class new file mode 100644 index 0000000..2ec878c Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockGrass.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockGrass.java b/src/main/java/jp/plusplus/fbs/block/BlockGrass.java new file mode 100644 index 0000000..e5a1805 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockGrass.java @@ -0,0 +1,106 @@ +package jp.plusplus.fbs.block; + +import codechicken.lib.render.BlockRenderer; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.Registry; +import jp.plusplus.fbs.alchemy.AlchemyRegistry; +import jp.plusplus.fbs.alchemy.ItemAlchemyMaterial; +import jp.plusplus.fbs.item.ItemCore; +import jp.plusplus.fbs.tileentity.TileEntityHavestable; +import jp.plusplus.fbs.tileentity.TileEntityHavestableGrass; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +/** + * Created by plusplus_F on 2016/02/23. + */ +public class BlockGrass extends BlockHerb { + protected IIcon[] icons; + + public BlockGrass() { + setBlockName("grass"); + setBlockTextureName("grass"); + setHardness(0.5f); + setResistance(0.1f); + setCreativeTab(FBS.tabAlchemy); + setStepSound(soundTypeGrass); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityHavestableGrass(60, 0); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister p_149651_1_) { + icons=new IIcon[2]; + for(int i=0;i<2;i++){ + icons[i]=p_149651_1_.registerIcon(FBS.MODID+":harvestableGrass"+i); + } + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) { + return icons[getTE(world,x,y,z).canHarvest()?1:0]; + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int a, int b) { + return icons[1]; + } + + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List p_149666_3_) { + p_149666_3_.add(new ItemStack(p_149666_1_, 1, 0)); + } + + @Override + public ArrayList getHarvestItems(World world, int x, int y, int z) { + ArrayList ret = new ArrayList(); + + for(int i=9;i<18;i++) ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, i)); + for(int i=30;i<36;i++) ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, i)); + for(int i=4;i<7;i++) ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterialEatable, 1, i)); + + return ret; + } + + @Override + public ArrayList harvest(World world, int x, int y, int z, Random rand) { + ArrayList ret = new ArrayList(); + ArrayList list = getHarvestItems(world, x, y, z); + int num = 2 + rand.nextInt(2); + + for (int i = 0; i < num; i++) { + ret.add(list.get(rand.nextInt(list.size()-1)).copy()); + } + + getTE(world, x, y, z).onHarvest(); + return ret; + } + + @Override + public String getUnlocalizedName(int meta) { + return "tile.fbs.grass"; + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockHerb.class b/src/main/java/jp/plusplus/fbs/block/BlockHerb.class new file mode 100644 index 0000000..ec52984 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockHerb.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockHerb.java b/src/main/java/jp/plusplus/fbs/block/BlockHerb.java new file mode 100644 index 0000000..d9f28cc --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockHerb.java @@ -0,0 +1,213 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.Registry; +import jp.plusplus.fbs.alchemy.AlchemyRegistry; +import jp.plusplus.fbs.alchemy.ItemAlchemyMaterial; +import jp.plusplus.fbs.api.IHarvestable; +import jp.plusplus.fbs.item.ItemCore; +import jp.plusplus.fbs.tileentity.TileEntityHavestable; +import net.minecraft.block.Block; +import net.minecraft.block.BlockBreakable; +import net.minecraft.block.BlockGlass; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; +import net.minecraft.world.gen.feature.WorldGenFlowers; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +/** + * Created by plusplus_F on 2015/11/09. + */ +public class BlockHerb extends BlockBase implements ITileEntityProvider,IHarvestable,IMeta { + public BlockHerb() { + super(Material.grass); + setBlockName("herb"); + setBlockTextureName("herb"); + setHardness(0.5f); + setResistance(0.1f); + setCreativeTab(FBS.tabAlchemy); + setStepSound(soundTypeGrass); + } + + public TileEntityHavestable getTE(IBlockAccess world, int x, int y, int z) { + TileEntity te = world.getTileEntity(x, y, z); + return te instanceof TileEntityHavestable ? (TileEntityHavestable) te : null; + } + + //--------------------------------------------------------------------------------------- + + @Override + protected boolean canSilkHarvest() { + return true; + } + + @Override + public int quantityDropped(Random p_149745_1_) { + return 0; + } + + @Override + public int damageDropped(int par1) { + return par1; + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List p_149666_3_) { + for (int i = 0; i < 9; i++) p_149666_3_.add(new ItemStack(p_149666_1_, 1, i)); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) { + if (canHarvest(world, x, y, z)) { + ArrayList get = harvest(world, x, y, z, world.rand, player); + if(!world.isRemote){ + for (ItemStack is : get) { + player.entityDropItem(is, player.getEyeHeight()); + } + } + player.inventory.markDirty(); + } + return true; + } + + @Override + public boolean canPlaceBlockAt(World world, int x, int y, int z) { + if (y == 0) return false; + Block b = world.getBlock(x, y, z); + if (b != this && !b.isReplaceable(world, x, y, z)) return false; + b = world.getBlock(x, y - 1, z); + + return b == Blocks.stone || b == Blocks.dirt || b == Blocks.grass || b == BlockCore.fallenLeaves || b == Blocks.mossy_cobblestone || b == Blocks.cobblestone || b==Blocks.end_stone || b==Blocks.netherrack; + } + + @Override + public void onNeighborBlockChange(World world, int x, int y, int z, Block p_149695_5_) { + if (!canPlaceBlockAt(world, x, y, z)) { + world.func_147480_a(x, y, z, false); + world.notifyBlockOfNeighborChange(x, y, z, this); + } + } + + @Override + public int getRenderType() { + return FBS.renderHerbId; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) { + return true; + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) { + return null; + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) { + } + + //--------------------------------------------------------------------------------------- + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityHavestable(60, p_149915_2_); + } + + //--------------------------------------------------------------------------------------- + @Override + public boolean canHarvest(World world, int x, int y, int z) { + return getTE(world, x, y, z).canHarvest(); + } + + @Override + public void glow(World world, int x, int y, int z, Random rand) { + getTE(world, x, y, z).glow(rand); + } + + @Override + public ArrayList getHarvestItems(World world, int x, int y, int z) { + ArrayList ret = new ArrayList(); + int meta = world.getBlockMetadata(x, y, z); + + if (meta < 6) { + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 18 + meta)); + } else if (meta < 9) { + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 36 + meta - 6)); + } + if(meta==5) ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 24)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 39)); + + return ret; + } + + @Override + public ArrayList harvest(World world, int x, int y, int z, Random rand, EntityPlayer player) { + return harvest(world, x, y, z, rand); + } + + @Override + public ArrayList harvest(World world, int x, int y, int z, Random rand) { + ArrayList ret = new ArrayList(); + ArrayList list = getHarvestItems(world, x, y, z); + int num = 1 + rand.nextInt(2); + + for (int i = 0; i < num; i++) { + boolean flag = false; + + //不浄なハーブとかの判定 + if (list.size()>1 && (rand.nextInt(32) == 0 || (world.getBiomeGenForCoords(x, z) == Registry.biomeAutumn))) { + if (rand.nextInt(32) == 0) { + flag = true; + } else { + BiomeGenBase bgb = world.getBiomeGenForCoords(x, z); + if (bgb == Registry.biomeAutumn || bgb == Registry.biomeCrack) { + flag = rand.nextInt(8) == 0; + } + } + } + if (flag) ret.add(list.get(list.size()-1).copy()); + else ret.add(list.get(rand.nextInt(list.size()-1)).copy()); + } + + getTE(world, x, y, z).onHarvest(); + return ret; + } + + @Override + public String getUnlocalizedName(int meta) { + String name = "tile.fbs."; + if (meta < 6) { + name += ItemAlchemyMaterial.NAMES[18 + meta]; + } else if (meta < 9) { + name += ItemAlchemyMaterial.NAMES[36 + meta - 6]; + } + return name; + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockMagicCore.class b/src/main/java/jp/plusplus/fbs/block/BlockMagicCore.class new file mode 100644 index 0000000..520969f Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockMagicCore.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockMagicCore.java b/src/main/java/jp/plusplus/fbs/block/BlockMagicCore.java new file mode 100644 index 0000000..9286f2e --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockMagicCore.java @@ -0,0 +1,151 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.common.FMLLog; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.AchievementRegistry; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.Registry; +import jp.plusplus.fbs.item.ItemCharm; +import jp.plusplus.fbs.item.ItemCore; +import jp.plusplus.fbs.particle.EntityGlowFX; +import jp.plusplus.fbs.tileentity.TileEntityExtractingFurnace; +import jp.plusplus.fbs.tileentity.TileEntityMagicCore; +import net.minecraft.block.Block; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.client.particle.EffectRenderer; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Items; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChatComponentText; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import java.util.Random; + +/** + * Created by pluslus_F on 2015/06/17. + */ +public class BlockMagicCore extends BlockBase implements ITileEntityProvider{ + + public BlockMagicCore() { + super(Material.circuits); + setBlockName("magicCore"); + setBlockTextureName("magicCore"); + this.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 0.0625F, 1.0F); + //BlockRedstoneWire + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) { + return null; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public int getRenderType() { + return FBS.renderCharmId; + } + + @Override + public boolean canPlaceBlockAt(World p_149742_1_, int p_149742_2_, int p_149742_3_, int p_149742_4_) { + return p_149742_1_.isBlockNormalCubeDefault(p_149742_2_, p_149742_3_ - 1, p_149742_4_, true); + } + + @Override + public void onNeighborBlockChange(World p_149695_1_, int p_149695_2_, int p_149695_3_, int p_149695_4_, Block p_149695_5_) { + if (!p_149695_1_.isRemote) { + boolean flag = this.canPlaceBlockAt(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_); + + if (!flag){ + this.dropBlockAsItem(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_, p_149695_1_.getBlockMetadata(p_149695_2_, p_149695_3_, p_149695_4_), 0); + p_149695_1_.setBlockToAir(p_149695_2_, p_149695_3_, p_149695_4_); + } + + super.onNeighborBlockChange(p_149695_1_, p_149695_2_, p_149695_3_, p_149695_4_, p_149695_5_); + } + } + + @Override + public void breakBlock(World world, int x, int y, int z, Block block, int par6) { + if (hasTileEntity(par6)){ + world.removeTileEntity(x, y, z); + } + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityMagicCore(); + } + + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int par6, float par7, float par8, float par9) { + ItemStack current=player.getCurrentEquippedItem(); + if(current==null || current.getItem()!=Items.flint_and_steel) return false; + + // + TileEntity e=world.getTileEntity(x, y, z); + if(!(e instanceof TileEntityMagicCore)) return true; + if(!((TileEntityMagicCore) e).getCircleName().equals("null")) return true; + + //check size + int r=0; + for(int i=1;i<5;i++){ + Block b=world.getBlock(x+i,y,z); + if(b==BlockCore.charm) r=i; + } + if(r==0){ + return true; + } + + //check magic circle + String mc= Registry.FindMatchingMagicCircle(world, x, y, z, r); + if(mc==null){ + return true; + } + + //damage flint + if(!player.capabilities.isCreativeMode) current.damageItem(1, player); + player.inventory.markDirty(); + if(!world.isRemote){ + world.playSoundEffect((double) x + 0.5D, (double) y + 0.5D, (double) z + 0.5D, "fire.ignite", 1.0F, world.rand.nextFloat() * 0.4F + 0.8F); + player.triggerAchievement(AchievementRegistry.circle); + } + + ((TileEntityMagicCore) e).setMagicCircle(mc, r); + ((TileEntityMagicCore) e).clearCharms(); + return true; + } + + @SideOnly(Side.CLIENT) + public void randomDisplayTick(World world, int x, int y, int z, Random rand) { + TileEntity e=world.getTileEntity(x,y,z); + if(!(e instanceof TileEntityMagicCore)) return; + + if (!((TileEntityMagicCore) e).getCircleName().equals("null")) { + double cr=((TileEntityMagicCore) e).getCircleRadius()+0.5; + double dx=x+0.5+cr*(rand.nextFloat()- rand.nextFloat()); + double dz=z+0.5+cr*(rand.nextFloat()- rand.nextFloat()); + + EffectRenderer er= FMLClientHandler.instance().getClient().effectRenderer; + er.addEffect(new EntityGlowFX(world, dx, y+0.0625f, dz)); + } + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockMirror.class b/src/main/java/jp/plusplus/fbs/block/BlockMirror.class new file mode 100644 index 0000000..240b39c Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockMirror.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockMirror.java b/src/main/java/jp/plusplus/fbs/block/BlockMirror.java new file mode 100644 index 0000000..731c0b9 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockMirror.java @@ -0,0 +1,134 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.client.FMLClientHandler; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.Registry; +import jp.plusplus.fbs.particle.EntityGlowFX; +import jp.plusplus.fbs.tileentity.TileEntityExtractingFurnace; +import jp.plusplus.fbs.tileentity.TileEntityMirror; +import net.minecraft.block.Block; +import net.minecraft.block.BlockContainer; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.client.particle.EffectRenderer; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.init.Blocks; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import shift.mceconomy2.api.MCEconomyAPI; +import shift.sextiarysector.block.BlockMonitor; + +import java.util.ArrayList; +import java.util.Random; + +import static net.minecraftforge.common.util.ForgeDirection.UP; + +/** + * Createdby pluslus_Fon 2015/06/24. + */ +public class BlockMirror extends BlockBase implements ITileEntityProvider{ + + public BlockMirror() { + super(Material.rock); + setBlockName("mirror"); + setBlockTextureName("mirror"); + setHardness(3.5F); + setStepSound(soundTypeGlass); + infoName="mirror"; + infoRow=1; + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityMirror(); + } + @Override + public boolean canPlaceTorchOnTop(World par1World, int par2, int par3, int par4){ + return false; + } + + @Override + public boolean onBlockActivated(World par1World, int par2, int par3, int par4, EntityPlayer par5EntityPlayer, int par6, float par7, float par8, float par9) { + MCEconomyAPI.openShopGui(Registry.shopMCE2Id, par5EntityPlayer, par1World, par2, par3, par4); + return true; + } + @Override + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack item) { + int l = MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + + if (l == 0) { + world.setBlockMetadataWithNotify(x, y, z, 2, 2); + world.setBlock(x, y + 1, z, BlockCore.mirror); + world.setBlockMetadataWithNotify(x, y + 1, z, 2 | 8, 2); + } + + if (l == 1) { + world.setBlockMetadataWithNotify(x, y, z, 5, 2); + world.setBlock(x,y+1,z, BlockCore.mirror); + world.setBlockMetadataWithNotify(x, y+1, z, 5|8, 2); + } + + if (l == 2) { + world.setBlockMetadataWithNotify(x, y, z, 3, 2); + world.setBlock(x,y+1,z, BlockCore.mirror); + world.setBlockMetadataWithNotify(x, y+1, z, 3|8, 2); + } + + if (l == 3) { + world.setBlockMetadataWithNotify(x, y, z, 4, 2); + world.setBlock(x,y+1,z, BlockCore.mirror); + world.setBlockMetadataWithNotify(x, y+1, z, 4|8, 2); + } + } + + @Override + public void onBlockAdded(World world, int x, int y, int z) { + super.onBlockAdded(world, x,y,z); + + } + public void breakBlock(World world, int x, int y, int z, Block p_149749_5_, int meta) { + world.removeTileEntity(x,y,z); + if((meta&8)!=0 && world.getBlock(x,y-1,z)==BlockCore.mirror) world.func_147480_a(x,y-1,z, true); + else if(world.getBlock(x,y+1,z)==BlockCore.mirror) world.func_147480_a(x,y+1,z, false); + } + + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune){ + if((metadata&8)!=0) return new ArrayList(); + return super.getDrops(world, x,y,z,metadata,fortune); + } + + public boolean canPlaceBlockAt(World world, int x, int y, int z) { + return world.getBlock(x, y, z).isReplaceable(world, x, y, z) && world.getBlock(x, y+1, z).isReplaceable(world, x, y+1, z); + } + + @Override + public int getRenderType(){ + return FBS.renderMirrorId; + } + @Override + public boolean renderAsNormalBlock(){ + return false; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @SideOnly(Side.CLIENT) + public boolean shouldSideBeRendered(IBlockAccess p_149646_1_, int p_149646_2_, int p_149646_3_, int p_149646_4_, int p_149646_5_) { + return true; + } +} \ No newline at end of file diff --git a/src/main/java/jp/plusplus/fbs/block/BlockMushroom.class b/src/main/java/jp/plusplus/fbs/block/BlockMushroom.class new file mode 100644 index 0000000..6cb3ace Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockMushroom.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockMushroom.java b/src/main/java/jp/plusplus/fbs/block/BlockMushroom.java new file mode 100644 index 0000000..2023174 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockMushroom.java @@ -0,0 +1,103 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.Registry; +import jp.plusplus.fbs.alchemy.AlchemyRegistry; +import jp.plusplus.fbs.alchemy.ItemAlchemyMaterial; +import jp.plusplus.fbs.item.ItemCore; +import jp.plusplus.fbs.tileentity.TileEntityHavestable; +import jp.plusplus.fbs.tileentity.TileEntityHavestableMushroom; +import net.minecraft.block.material.Material; +import net.minecraft.creativetab.CreativeTabs; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.world.World; +import net.minecraft.world.biome.BiomeGenBase; + +import java.util.ArrayList; +import java.util.List; +import java.util.Random; + +/** + * Created by plusplus_F on 2016/02/23. + */ +public class BlockMushroom extends BlockHerb { + public BlockMushroom() { + setBlockName("mushroom"); + } + + @Override + @SideOnly(Side.CLIENT) + public void getSubBlocks(Item p_149666_1_, CreativeTabs p_149666_2_, List p_149666_3_) { + for (int i = 0; i < 3; i++) p_149666_3_.add(new ItemStack(p_149666_1_, 1, i)); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityHavestableMushroom(60, p_149915_2_); + } + + @Override + public String getUnlocalizedName(int meta) { + return "tile.fbs.mushroom"+meta; + } + + @Override + public ArrayList getHarvestItems(World world, int x, int y, int z) { + ArrayList ret = new ArrayList(); + int meta = world.getBlockMetadata(x, y, z); + + switch (meta){ + case 0: + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 25)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 26)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 27)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 29)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 41)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterialEatable, 1, 0)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterialEatable, 1, 2)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterialEatable, 1, 3)); + break; + + case 1: + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 25)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 26)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 27)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 28)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 29)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 41)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterialEatable, 1, 1)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterialEatable, 1, 2)); + break; + + case 2: + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 42)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 43)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 44)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterial, 1, 45)); + ret.add(AlchemyRegistry.getItemStack(ItemCore.alchemyMaterialEatable, 1, 1)); + break; + + } + + return ret; + } + + @Override + public ArrayList harvest(World world, int x, int y, int z, Random rand) { + ArrayList ret = new ArrayList(); + ArrayList list = getHarvestItems(world, x, y, z); + int num = 1 + rand.nextInt(2); + int index=rand.nextInt(list.size()-1); + + for (int i = 0; i < num; i++) { + ret.add(list.get(index).copy()); + } + + getTE(world, x, y, z).onHarvest(); + return ret; + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockOre.class b/src/main/java/jp/plusplus/fbs/block/BlockOre.class new file mode 100644 index 0000000..d3d2d16 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockOre.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockOre.java b/src/main/java/jp/plusplus/fbs/block/BlockOre.java new file mode 100644 index 0000000..1461dba --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockOre.java @@ -0,0 +1,47 @@ +package jp.plusplus.fbs.block; + +import jp.plusplus.fbs.item.ItemCore; +import net.minecraft.item.Item; +import net.minecraft.util.MathHelper; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; + +import java.util.Random; + +/** + * Created by pluslus_F on 2015/06/23. + */ +public class BlockOre extends BlockBlock { + public BlockOre() { + super("ore"); + } + + @Override + public Item getItemDropped(int meta, Random p_149650_2_, int p_149650_3_){ + return ItemCore.gem; + } + + @Override + public int quantityDropped(Random p_149745_1_) { + return 1; + } + @Override + public int quantityDroppedWithBonus(int p_149679_1_, Random p_149679_2_) { + int j = p_149679_2_.nextInt(p_149679_1_ + 2) - 1; + if (j < 0) { + j = 0; + } + + return this.quantityDropped(p_149679_2_) * (j + 1); + } + + @Override + public void dropBlockAsItemWithChance(World p_149690_1_, int p_149690_2_, int p_149690_3_, int p_149690_4_, int p_149690_5_, float p_149690_6_, int p_149690_7_) { + super.dropBlockAsItemWithChance(p_149690_1_, p_149690_2_, p_149690_3_, p_149690_4_, p_149690_5_, p_149690_6_, p_149690_7_); + } + + @Override + public int getExpDrop(IBlockAccess p_149690_1_, int p_149690_5_, int p_149690_7_) { + return MathHelper.getRandomIntegerInRange(this.rand, 3, 4); + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockPortalAutumn.class b/src/main/java/jp/plusplus/fbs/block/BlockPortalAutumn.class new file mode 100644 index 0000000..360affc Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockPortalAutumn.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockPortalAutumn.java b/src/main/java/jp/plusplus/fbs/block/BlockPortalAutumn.java new file mode 100644 index 0000000..dcaf7a3 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockPortalAutumn.java @@ -0,0 +1,96 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.AchievementRegistry; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.world.autumn.TeleporterAutumn; +import net.minecraft.block.Block; +import net.minecraft.block.BlockEndPortal; +import net.minecraft.block.BlockPortal; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.init.Blocks; +import net.minecraft.item.Item; +import net.minecraft.item.ItemMonsterPlacer; +import net.minecraft.server.management.ServerConfigurationManager; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import net.minecraft.world.World; +import net.minecraft.world.WorldServer; + +import java.util.Random; + +/** + * Created by plusplus_F on 2015/11/07. + */ +public class BlockPortalAutumn extends BlockBase { + private IIcon iconSide; + + protected BlockPortalAutumn() { + super(Material.wood); + setBlockName("butterfly"); + setBlockTextureName("butterfly"); + setHardness(1.5f); + setResistance(5.0f); + setHarvestLevel("axe", 0); + } + + @Override + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister p_149651_1_) { + blockIcon = p_149651_1_.registerIcon(this.getTextureName()+"Top"); + iconSide = p_149651_1_.registerIcon(this.getTextureName()+"Side"); + } + + @Override + @SideOnly(Side.CLIENT) + public IIcon getIcon(int p_149691_1_, int p_149691_2_) { + return p_149691_1_==1?this.blockIcon:iconSide; + } + + + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer entity, int p_149727_6_, float p_149727_7_, float p_149727_8_, float p_149727_9_) { + if (entity.ridingEntity == null && entity.riddenByEntity == null && entity.timeUntilPortal==0) { + // 現在地が独自ディメンション以外 + if (world.provider.dimensionId != FBS.dimensionAutumnId) { + if (entity instanceof EntityPlayerMP) { + // 1行で書くと長過ぎるので一旦ローカル変数に格納 + EntityPlayerMP entityPlayerMP = (EntityPlayerMP) entity; + ServerConfigurationManager serverConfigurationManager = entityPlayerMP.mcServer.getConfigurationManager(); + WorldServer worldServer = entityPlayerMP.mcServer.worldServerForDimension(FBS.dimensionAutumnId); + + // 移動後にネザーポータルが作成されるので即座に再送還されないように + entityPlayerMP.timeUntilPortal = 20; + entityPlayerMP.setInPortal(); + + // 独自ディメンションに移動する + serverConfigurationManager.transferPlayerToDimension(entityPlayerMP, FBS.dimensionAutumnId, new TeleporterAutumn(worldServer)); + entityPlayerMP.triggerAchievement(AchievementRegistry.eternalAutumn); + return true; + } + } + // 現在地が独自ディメンション + else { + if (entity instanceof EntityPlayerMP) { + // 1行で書くと長過ぎるので一旦ローカル変数に格納 + EntityPlayerMP entityPlayerMP = (EntityPlayerMP) entity; + ServerConfigurationManager serverConfigurationManager = entityPlayerMP.mcServer.getConfigurationManager(); + WorldServer worldServer = entityPlayerMP.mcServer.worldServerForDimension(0); + + entityPlayerMP.timeUntilPortal = 20; + entityPlayerMP.setInPortal(); + + // 独自ディメンションからはオーバーワールドに移動 + serverConfigurationManager.transferPlayerToDimension(entityPlayerMP, 0, new TeleporterAutumn(worldServer)); + return true; + } + } + } + return false; + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockPortalWarp.class b/src/main/java/jp/plusplus/fbs/block/BlockPortalWarp.class new file mode 100644 index 0000000..1cc3567 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockPortalWarp.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockPortalWarp.java b/src/main/java/jp/plusplus/fbs/block/BlockPortalWarp.java new file mode 100644 index 0000000..6d99149 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockPortalWarp.java @@ -0,0 +1,210 @@ +package jp.plusplus.fbs.block; + +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.exprop.FBSEntityProperties; +import jp.plusplus.fbs.tileentity.TileEntityPortalWarp; +import jp.plusplus.fbs.world.TeleporterWarp; +import jp.plusplus.fbs.world.crack.TeleporterToCrack; +import net.minecraft.block.Block; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.client.renderer.texture.IIconRegister; +import net.minecraft.entity.Entity; +import net.minecraft.entity.player.EntityPlayerMP; +import net.minecraft.item.Item; +import net.minecraft.server.management.ServerConfigurationManager; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.AxisAlignedBB; +import net.minecraft.util.ChunkCoordinates; +import net.minecraft.util.IIcon; +import net.minecraft.util.MathHelper; +import net.minecraft.world.*; +import net.minecraft.world.chunk.Chunk; + +import java.util.Random; + +/** + * Created by plusplus_F on 2015/10/23. + * meta: 8...向き, 4...狭間生成フラグ, 1...上下 + */ +public class BlockPortalWarp extends BlockBase implements ITileEntityProvider { + protected IIcon[] icons; + + public BlockPortalWarp() { + super(Material.portal); + this.setTickRandomly(true); + setCreativeTab(null); + setBlockName("portalWarp"); + setHardness(0.5f); + setResistance(1.f); + setStepSound(Block.soundTypeGlass); + } + + @Override + public int tickRate(World w) { + return 30; + } + + @SideOnly(Side.CLIENT) + public void registerBlockIcons(IIconRegister p_149651_1_) { + icons = new IIcon[2]; + icons[0] = p_149651_1_.registerIcon(FBS.MODID + ":portalWarpUp"); + icons[1] = p_149651_1_.registerIcon(FBS.MODID + ":portalWarpDown"); + } + + @SideOnly(Side.CLIENT) + public IIcon getIcon(int p_149691_1_, int p_149691_2_) { + return (p_149691_2_ & 1) == 0 ? icons[1] : icons[0]; + } + + @Override + public void updateTick(World w, int x, int y, int z, Random rand) { + if (!w.isRemote) { + int meta = w.getBlockMetadata(x, y, z); + if ((meta & 1) != 0 || rand.nextInt(10) != 0) return; + w.func_147480_a(x, y, z, false); + } + } + + @Override + public int quantityDropped(int meta, int fortune, Random random) { + return 0; + } + + @Override + public Item getItemDropped(int p_149650_1_, Random p_149650_2_, int p_149650_3_) { + return null; + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + protected boolean canSilkHarvest() { + return false; + } + + @SideOnly(Side.CLIENT) + public Item getItem(World p_149694_1_, int p_149694_2_, int p_149694_3_, int p_149694_4_) { + return Item.getItemById(0); + } + + @Override + public AxisAlignedBB getCollisionBoundingBoxFromPool(World p_149668_1_, int p_149668_2_, int p_149668_3_, int p_149668_4_) { + return null; + //return super.getCollisionBoundingBoxFromPool(p_149668_1_, p_149668_2_, p_149668_3_, p_149668_4_); + } + + @Override + public void setBlockBoundsBasedOnState(IBlockAccess p_149719_1_, int p_149719_2_, int p_149719_3_, int p_149719_4_) { + int l = p_149719_1_.getBlockMetadata(p_149719_2_, p_149719_3_, p_149719_4_) & 8; + if(l==0) setBlockBounds(0,0,0.5f,1,1,0.5f); + else setBlockBounds(0.5f,0,0,0.5f,1,1); + } + + @Override + @SideOnly(Side.CLIENT) + public AxisAlignedBB getSelectedBoundingBoxFromPool(World p_149633_1_, int p_149633_2_, int p_149633_3_, int p_149633_4_) { + return super.getCollisionBoundingBoxFromPool(p_149633_1_, p_149633_2_, p_149633_3_, p_149633_4_); + } + + @Override + public void onEntityCollidedWithBlock(World w, int x, int y, int z, Entity e) { + //FBS.logger.info("collided:"+(e.getClass().toString())); + if (e instanceof EntityPlayerMP && !w.isRemote) { + int meta=w.getBlockMetadata(x,y,z); + if((meta&4)!=0){ + //狭間を生成して移動 + EntityPlayerMP entityPlayerMP = (EntityPlayerMP) e; + ServerConfigurationManager serverConfigurationManager = entityPlayerMP.mcServer.getConfigurationManager(); + WorldServer worldServer = entityPlayerMP.mcServer.worldServerForDimension(FBS.dimensionCrackId); + + //基準座標を得る + ChunkCoordinates cc=WorldProvider.getProviderForDimension(FBS.dimensionCrackId).getEntrancePortalLocation(); + + //基準座標からテキトーに回ると多分地面があるはず + boolean found=false; + for(int r=1;r<30 && !found;r++){ + for(int aa=0;aa<8;aa++){ + float angle=(float)Math.PI/8.f*aa; + int bx=MathHelper.floor_float(cc.posX+5*r*MathHelper.cos(angle)); + int bz=MathHelper.floor_float(cc.posZ+5*r*MathHelper.sin(angle)); + + int cx=bx%16; + int cz=bz%16; + if(cx<0) cx+=16; + if(cz<0) cz+=16; + + Chunk c=worldServer.getChunkProvider().provideChunk(bx%16, bz%16); + int h=c.getHeightValue(cx, cz); + if(h>0){ + cc.posX=bx; + cc.posY=h+10; + cc.posZ=bz; + found=true; + break; + } + } + } + + + entityPlayerMP.setPositionAndUpdate(cc.posX + 0.5, cc.posY, cc.posZ + 0.5); + serverConfigurationManager.transferPlayerToDimension(entityPlayerMP, FBS.dimensionCrackId, new TeleporterWarp(worldServer)); + } + else{ + //通常のワープ処理 + EntityPlayerMP playerMP = (EntityPlayerMP) e; + TileEntity te = w.getTileEntity(x, y, z); + if (!(te instanceof TileEntityPortalWarp)) return; + FBSEntityProperties.WarpPosition dest = ((TileEntityPortalWarp) te).destination; + if (dest == null) return; + + playerMP.setPositionAndUpdate(dest.x + 0.5, dest.y+3, dest.z + 0.5); + if (playerMP.dimension != dest.dimId) { + //playerMP.travelToDimension(dest.dimId); + EntityPlayerMP entityPlayerMP = (EntityPlayerMP) e; + ServerConfigurationManager serverConfigurationManager = entityPlayerMP.mcServer.getConfigurationManager(); + WorldServer worldServer = entityPlayerMP.mcServer.worldServerForDimension(dest.dimId); + + serverConfigurationManager.transferPlayerToDimension(entityPlayerMP, dest.dimId, new TeleporterWarp(worldServer)); + } + } + } + } + + @Override + public int getRenderType() { + return FBS.renderPortalWarpId; + } + + @SideOnly(Side.CLIENT) + public int getRenderBlockPass() { + return 1; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public void onNeighborBlockChange(World w, int x, int y, int z, Block block) { + int meta = w.getBlockMetadata(x, y, z); + Block b; + if ((meta & 1) == 0) b = w.getBlock(x, y + 1, z); + else b = w.getBlock(x, y - 1, z); + + if (b != this) { + w.func_147480_a(x, y, z, false); + } + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityPortalWarp(); + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/BlockSchoolTable.class b/src/main/java/jp/plusplus/fbs/block/BlockSchoolTable.class new file mode 100644 index 0000000..da9273b Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/BlockSchoolTable.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/BlockSchoolTable.java b/src/main/java/jp/plusplus/fbs/block/BlockSchoolTable.java new file mode 100644 index 0000000..c2f9ec3 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/BlockSchoolTable.java @@ -0,0 +1,54 @@ +package jp.plusplus.fbs.block; + +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.tileentity.TileEntityForRender; +import net.minecraft.block.ITileEntityProvider; +import net.minecraft.block.material.Material; +import net.minecraft.entity.EntityLivingBase; +import net.minecraft.item.ItemStack; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.MathHelper; +import net.minecraft.world.World; + +/** + * Created by plusplus_F on 2015/09/25. + */ +public class BlockSchoolTable extends BlockBase implements ITileEntityProvider { + public BlockSchoolTable() { + super(Material.wood); + setBlockName("schoolTable"); + setBlockTextureName("bookshelfTop"); + setHardness(1.0f); + setResistance(15.f); + } + + @Override + public boolean isOpaqueCube() { + return false; + } + + @Override + public boolean renderAsNormalBlock() { + return false; + } + + @Override + public int getRenderType() { + return FBS.renderDecorationId; + } + + + public void onBlockPlacedBy(World world, int x, int y, int z, EntityLivingBase entity, ItemStack item) { + int l = MathHelper.floor_double((double) (entity.rotationYaw * 4.0F / 360.0F) + 0.5D) & 3; + + if (l == 0) world.setBlockMetadataWithNotify(x, y, z, 2, 2); + if (l == 1) world.setBlockMetadataWithNotify(x, y, z, 5, 2); + if (l == 2) world.setBlockMetadataWithNotify(x, y, z, 3, 2); + if (l == 3) world.setBlockMetadataWithNotify(x, y, z, 4, 2); + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityForRender(); + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/IMeta.class b/src/main/java/jp/plusplus/fbs/block/IMeta.class new file mode 100644 index 0000000..e3d0758 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/IMeta.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/IMeta.java b/src/main/java/jp/plusplus/fbs/block/IMeta.java new file mode 100644 index 0000000..36720e5 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/IMeta.java @@ -0,0 +1,8 @@ +package jp.plusplus.fbs.block; + +/** + * Created by plusplus_F on 2015/11/15. + */ +public interface IMeta { + public String getUnlocalizedName(int meta); +} diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyCauldron.class b/src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyCauldron.class new file mode 100644 index 0000000..d9da65c Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyCauldron.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyCauldron.java b/src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyCauldron.java new file mode 100644 index 0000000..4fa6c6a --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyCauldron.java @@ -0,0 +1,157 @@ +// Date: 2015/08/19 8:45:36 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + + +package jp.plusplus.fbs.block.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelAlchemyCauldron extends ModelBase { + //fields + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + ModelRenderer Shape5; + ModelRenderer Shape6; + ModelRenderer Shape7; + ModelRenderer Shape8; + ModelRenderer Shape9; + ModelRenderer Shape10; + ModelRenderer Shape11; + ModelRenderer Shape12; + ModelRenderer Shape13; + ModelRenderer Shape14; + ModelRenderer Shape15; + + public ModelAlchemyCauldron() { + textureWidth = 128; + textureHeight = 64; + + Shape1 = new ModelRenderer(this, 0, 0); + Shape1.addBox(-2F, -2F, -2F, 20, 2, 20); + Shape1.setRotationPoint(0F, 0F, 0F); + Shape1.setTextureSize(128, 64); + Shape1.mirror = true; + setRotation(Shape1, 0F, 0F, 0F); + Shape2 = new ModelRenderer(this, 60, 0); + Shape2.addBox(-3F, -5F, -3F, 22, 3, 1); + Shape2.setRotationPoint(0F, 0F, 0F); + Shape2.setTextureSize(128, 64); + Shape2.mirror = true; + setRotation(Shape2, 0F, 0F, 0F); + Shape3 = new ModelRenderer(this, 60, 0); + Shape3.addBox(-3F, -5F, 18F, 22, 3, 1); + Shape3.setRotationPoint(0F, 0F, 0F); + Shape3.setTextureSize(128, 64); + Shape3.mirror = true; + setRotation(Shape3, 0F, 0F, 0F); + Shape4 = new ModelRenderer(this, 0, 22); + Shape4.addBox(-3F, -5F, -2F, 1, 3, 20); + Shape4.setRotationPoint(0F, 0F, 0F); + Shape4.setTextureSize(128, 64); + Shape4.mirror = true; + setRotation(Shape4, 0F, 0F, 0F); + Shape5 = new ModelRenderer(this, 0, 22); + Shape5.addBox(18F, -5F, -2F, 1, 3, 20); + Shape5.setRotationPoint(0F, 0F, 0F); + Shape5.setTextureSize(128, 64); + Shape5.mirror = true; + setRotation(Shape5, 0F, 0F, 0F); + Shape6 = new ModelRenderer(this, 60, 4); + Shape6.addBox(-4F, -7F, -4F, 24, 2, 1); + Shape6.setRotationPoint(0F, 0F, 0F); + Shape6.setTextureSize(128, 64); + Shape6.mirror = true; + setRotation(Shape6, 0F, 0F, 0F); + Shape7 = new ModelRenderer(this, 60, 4); + Shape7.addBox(-4F, -7F, 19F, 24, 2, 1); + Shape7.setRotationPoint(0F, 0F, 0F); + Shape7.setTextureSize(128, 64); + Shape7.mirror = true; + setRotation(Shape7, 0F, 0F, 0F); + Shape8 = new ModelRenderer(this, 42, 22); + Shape8.addBox(-4F, -7F, -3F, 1, 2, 22); + Shape8.setRotationPoint(0F, 0F, 0F); + Shape8.setTextureSize(128, 64); + Shape8.mirror = true; + setRotation(Shape8, 0F, 0F, 0F); + Shape9 = new ModelRenderer(this, 42, 22); + Shape9.addBox(19F, -7F, -3F, 1, 2, 22); + Shape9.setRotationPoint(0F, 0F, 0F); + Shape9.setTextureSize(128, 64); + Shape9.mirror = true; + setRotation(Shape9, 0F, 0F, 0F); + Shape10 = new ModelRenderer(this, 0, 0); + Shape10.addBox(20F, -7F, 4F, 3, 1, 2); + Shape10.setRotationPoint(0F, 0F, 0F); + Shape10.setTextureSize(128, 64); + Shape10.mirror = true; + setRotation(Shape10, 0F, 0F, 0F); + Shape11 = new ModelRenderer(this, 0, 0); + Shape11.addBox(20F, -7F, 10F, 3, 1, 2); + Shape11.setRotationPoint(0F, 0F, 0F); + Shape11.setTextureSize(128, 64); + Shape11.mirror = true; + setRotation(Shape11, 0F, 0F, 0F); + Shape12 = new ModelRenderer(this, 0, 3); + Shape12.addBox(23F, -7F, 4F, 2, 2, 8); + Shape12.setRotationPoint(0F, 0F, 0F); + Shape12.setTextureSize(128, 64); + Shape12.mirror = true; + setRotation(Shape12, 0F, 0F, 0F); + Shape13 = new ModelRenderer(this, 0, 0); + Shape13.addBox(-7F, -7F, 10F, 3, 1, 2); + Shape13.setRotationPoint(0F, 0F, 0F); + Shape13.setTextureSize(128, 64); + Shape13.mirror = true; + setRotation(Shape13, 0F, 0F, 0F); + Shape14 = new ModelRenderer(this, 0, 0); + Shape14.addBox(-7F, -7F, 4F, 3, 1, 2); + Shape14.setRotationPoint(0F, 0F, 0F); + Shape14.setTextureSize(128, 64); + Shape14.mirror = true; + setRotation(Shape14, 0F, 0F, 0F); + Shape15 = new ModelRenderer(this, 0, 3); + Shape15.addBox(-9F, -7F, 4F, 2, 2, 8); + Shape15.setRotationPoint(0F, 0F, 0F); + Shape15.setTextureSize(128, 64); + Shape15.mirror = true; + setRotation(Shape15, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + Shape8.render(f5); + Shape9.render(f5); + Shape10.render(f5); + Shape11.render(f5); + Shape12.render(f5); + Shape13.render(f5); + Shape14.render(f5); + Shape15.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, null); + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyTable.class b/src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyTable.class new file mode 100644 index 0000000..ca14176 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyTable.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyTable.java b/src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyTable.java new file mode 100644 index 0000000..8244ba8 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyTable.java @@ -0,0 +1,210 @@ +// Date: 2015/09/25 14:00:36 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + + + + + + +package jp.plusplus.fbs.block.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelAlchemyTable extends ModelBase { + //fields + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + ModelRenderer Shape5; + ModelRenderer Shape6; + ModelRenderer Shape7; + ModelRenderer Shape7b; + ModelRenderer Shape8; + ModelRenderer Shape8b; + ModelRenderer Shape9; + ModelRenderer Shape10; + ModelRenderer Shape11; + ModelRenderer Shape12; + ModelRenderer Shape13; + ModelRenderer Shape14; + ModelRenderer Shape15; + ModelRenderer Shape16; + ModelRenderer Shape17; + ModelRenderer Shape18; + ModelRenderer Shape19; + + public ModelAlchemyTable() { + textureWidth = 128; + textureHeight = 64; + + Shape1 = new ModelRenderer(this, 0, 4); + Shape1.addBox(-8F, -8F, -8F, 32, 1, 14); + Shape1.setRotationPoint(0F, 0F, 0F); + Shape1.setTextureSize(128, 64); + Shape1.mirror = true; + setRotation(Shape1, 0F, 0F, 0F); + Shape2 = new ModelRenderer(this, 0, 19); + Shape2.addBox(-5F, -7F, -7F, 26, 3, 12); + Shape2.setRotationPoint(0F, 0F, 0F); + Shape2.setTextureSize(128, 64); + Shape2.mirror = true; + setRotation(Shape2, 0F, 0F, 0F); + Shape3 = new ModelRenderer(this, 0, 0); + Shape3.addBox(-7F, -7F, -7F, 2, 15, 2); + Shape3.setRotationPoint(0F, 0F, 0F); + Shape3.setTextureSize(128, 64); + Shape3.mirror = true; + setRotation(Shape3, 0F, 0F, 0F); + Shape4 = new ModelRenderer(this, 0, 0); + Shape4.addBox(-7F, -7F, 3F, 2, 15, 2); + Shape4.setRotationPoint(0F, 0F, 0F); + Shape4.setTextureSize(128, 64); + Shape4.mirror = true; + setRotation(Shape4, 0F, 0F, 0F); + Shape5 = new ModelRenderer(this, 0, 0); + Shape5.addBox(21F, -7F, -7F, 2, 15, 2); + Shape5.setRotationPoint(0F, 0F, 0F); + Shape5.setTextureSize(128, 64); + Shape5.mirror = true; + setRotation(Shape5, 0F, 0F, 0F); + Shape6 = new ModelRenderer(this, 0, 0); + Shape6.addBox(21F, -7F, 3F, 2, 15, 2); + Shape6.setRotationPoint(0F, 0F, 0F); + Shape6.setTextureSize(128, 64); + Shape6.mirror = true; + setRotation(Shape6, 0F, 0F, 0F); + Shape7 = new ModelRenderer(this, 78, 0); + Shape7.addBox(-7F, -7F, -5F, 2, 2, 8); + Shape7.setRotationPoint(0F, 0F, 0F); + Shape7.setTextureSize(128, 64); + Shape7.mirror = true; + setRotation(Shape7, 0F, 0F, 0F); + Shape7b = new ModelRenderer(this, 78, 0); + Shape7b.addBox(-7F, 4F, -5F, 2, 2, 8); + Shape7b.setRotationPoint(0F, 0F, 0F); + Shape7b.setTextureSize(128, 64); + Shape7b.mirror = true; + setRotation(Shape7b, 0F, 0F, 0F); + Shape8 = new ModelRenderer(this, 78, 0); + Shape8.addBox(21F, -7F, -5F, 2, 2, 8); + Shape8.setRotationPoint(0F, 0F, 0F); + Shape8.setTextureSize(128, 64); + Shape8.mirror = true; + setRotation(Shape8, 0F, 0F, 0F); + Shape8b = new ModelRenderer(this, 78, 0); + Shape8b.addBox(21F, 4F, -5F, 2, 2, 8); + Shape8b.setRotationPoint(0F, 0F, 0F); + Shape8b.setTextureSize(128, 64); + Shape8b.mirror = true; + setRotation(Shape8b, 0F, 0F, 0F); + Shape9 = new ModelRenderer(this, 0, 26); + Shape9.addBox(0F, 0F, 0F, 1, 1, 4); + Shape9.setRotationPoint(9F, -9F, -5F); + Shape9.setTextureSize(128, 64); + Shape9.mirror = true; + setRotation(Shape9, 0F, 0.2617994F, 0F); + Shape10 = new ModelRenderer(this, 0, 24); + Shape10.addBox(-1F, 0F, 4F, 3, 1, 1); + Shape10.setRotationPoint(9F, -9F, -5F); + Shape10.setTextureSize(128, 64); + Shape10.mirror = true; + setRotation(Shape10, 0F, 0.2617994F, 0F); + Shape11 = new ModelRenderer(this, 0, 24); + Shape11.addBox(-1F, 0F, 6F, 3, 1, 1); + Shape11.setRotationPoint(9F, -9F, -5F); + Shape11.setTextureSize(128, 64); + Shape11.mirror = true; + setRotation(Shape11, 0F, 0.2617994F, 0F); + Shape12 = new ModelRenderer(this, 8, 0); + Shape12.addBox(-1F, 0F, 5F, 1, 1, 1); + Shape12.setRotationPoint(9F, -9F, -5F); + Shape12.setTextureSize(128, 64); + Shape12.mirror = true; + setRotation(Shape12, 0F, 0.2617994F, 0F); + Shape13 = new ModelRenderer(this, 8, 0); + Shape13.addBox(1F, 0F, 5F, 1, 1, 1); + Shape13.setRotationPoint(9F, -9F, -5F); + Shape13.setTextureSize(128, 64); + Shape13.mirror = true; + setRotation(Shape13, 0F, 0.2617994F, 0F); + Shape14 = new ModelRenderer(this, 0, 34); + Shape14.addBox(-2.5F, 0F, -3.5F, 5, 1, 7); + Shape14.setRotationPoint(3F, -9F, -3F); + Shape14.setTextureSize(128, 64); + Shape14.mirror = true; + setRotation(Shape14, 0F, 0F, 0F); + Shape15 = new ModelRenderer(this, 24, 34); + Shape15.addBox(-2.5F, 0F, -3.5F, 5, 1, 7); + Shape15.setRotationPoint(-4F, -9F, 1F); + Shape15.setTextureSize(128, 64); + Shape15.mirror = true; + setRotation(Shape15, 0F, 0.3141593F, 0F); + Shape16 = new ModelRenderer(this, 48, 34); + Shape16.addBox(-2.5F, 0F, -3.5F, 5, 1, 7); + Shape16.setRotationPoint(-4F, -10F, 1F); + Shape16.setTextureSize(128, 64); + Shape16.mirror = true; + setRotation(Shape16, 0F, 0.0872665F, 0F); + Shape17 = new ModelRenderer(this, 48, 34); + Shape17.addBox(-2.5F, 0F, -3.5F, 5, 1, 7); + Shape17.setRotationPoint(18F, -9F, 0F); + Shape17.setTextureSize(128, 64); + Shape17.mirror = true; + setRotation(Shape17, 0F, 2.670354F, 0F); + Shape18 = new ModelRenderer(this, 0, 34); + Shape18.addBox(-2.5F, 0F, -3.5F, 5, 1, 7); + Shape18.setRotationPoint(18F, -10F, 1F); + Shape18.setTextureSize(128, 64); + Shape18.mirror = true; + setRotation(Shape18, 0F, 2.094395F, 0F); + Shape19 = new ModelRenderer(this, 72, 34); + Shape19.addBox(-2.5F, 0F, -3.5F, 5, 1, 7); + Shape19.setRotationPoint(19F, -11F, 1F); + Shape19.setTextureSize(128, 64); + Shape19.mirror = true; + setRotation(Shape19, 0F, 2.617994F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + Shape7b.render(f5); + Shape8.render(f5); + Shape8b.render(f5); + Shape9.render(f5); + Shape10.render(f5); + Shape11.render(f5); + Shape12.render(f5); + Shape13.render(f5); + Shape14.render(f5); + Shape15.render(f5); + Shape16.render(f5); + Shape17.render(f5); + Shape18.render(f5); + Shape19.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, null); + } + +} diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelBonfire.class b/src/main/java/jp/plusplus/fbs/block/model/ModelBonfire.class new file mode 100644 index 0000000..a888006 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/model/ModelBonfire.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelBonfire.java b/src/main/java/jp/plusplus/fbs/block/model/ModelBonfire.java new file mode 100644 index 0000000..488d463 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/model/ModelBonfire.java @@ -0,0 +1,98 @@ +// Date: 2015/10/20 7:29:06 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + + + + + + +package jp.plusplus.fbs.block.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelBonfire extends ModelBase { + //fields + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + ModelRenderer Shape5; + ModelRenderer Shape6; + ModelRenderer Shape7; + + public ModelBonfire() { + textureWidth = 64; + textureHeight = 32; + + Shape1 = new ModelRenderer(this, 0, 0); + Shape1.addBox(-1F, -1F, -6F, 2, 2, 8); + Shape1.setRotationPoint(0F, 21F, -2F); + Shape1.setTextureSize(64, 32); + Shape1.mirror = true; + setRotation(Shape1, 0.3346075F, 0F, 0F); + Shape2 = new ModelRenderer(this, 0, 0); + Shape2.addBox(-1F, -1F, -6F, 2, 2, 8); + Shape2.setRotationPoint(-1.466667F, 23F, -1.133333F); + Shape2.setTextureSize(64, 32); + Shape2.mirror = true; + setRotation(Shape2, 0F, 1.003822F, 0F); + Shape3 = new ModelRenderer(this, 20, 0); + Shape3.addBox(-1F, -1F, -5F, 2, 2, 7); + Shape3.setRotationPoint(4.666667F, 23F, 4.266667F); + Shape3.setTextureSize(64, 32); + Shape3.mirror = true; + setRotation(Shape3, 0F, 0.8551081F, 0F); + Shape4 = new ModelRenderer(this, 38, 0); + Shape4.addBox(-1F, -1F, -3F, 2, 2, 6); + Shape4.setRotationPoint(-2.866667F, 23F, 3.733333F); + Shape4.setTextureSize(64, 32); + Shape4.mirror = true; + setRotation(Shape4, 0F, -0.669215F, 0F); + Shape5 = new ModelRenderer(this, 0, 0); + Shape5.addBox(-1F, -1F, -4F, 2, 2, 8); + Shape5.setRotationPoint(-3.6F, 21.26667F, -0.2666667F); + Shape5.setTextureSize(64, 32); + Shape5.mirror = true; + setRotation(Shape5, 0.4833219F, 1.283798F, 0F); + Shape6 = new ModelRenderer(this, 20, 0); + Shape6.addBox(-1F, -1F, -3.4F, 2, 2, 7); + Shape6.setRotationPoint(3.8F, 21.86667F, -1.866667F); + Shape6.setTextureSize(64, 32); + Shape6.mirror = true; + setRotation(Shape6, -0.3346075F, 2.193538F, 0F); + Shape7 = new ModelRenderer(this, 0, 0); + Shape7.addBox(-1F, -1F, -5.4F, 2, 2, 8); + Shape7.setRotationPoint(0.7333333F, 22.2F, 5.2F); + Shape7.setTextureSize(64, 32); + Shape7.mirror = true; + setRotation(Shape7, -0.3346075F, 0.1115358F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, null); + } + +} diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelFork.class b/src/main/java/jp/plusplus/fbs/block/model/ModelFork.class new file mode 100644 index 0000000..9d55e23 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/model/ModelFork.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelFork.java b/src/main/java/jp/plusplus/fbs/block/model/ModelFork.java new file mode 100644 index 0000000..364c34d --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/model/ModelFork.java @@ -0,0 +1,82 @@ +// Date: 2015/11/06 14:30:42 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + + + + + + +package jp.plusplus.fbs.block.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelFork extends ModelBase { + //fields + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape5; + ModelRenderer Shape6; + ModelRenderer Shape7; + + public ModelFork() { + textureWidth = 64; + textureHeight = 32; + + Shape1 = new ModelRenderer(this, 0, 0); + Shape1.addBox(-1F, -0.5F, -11F, 2, 1, 14); + Shape1.setRotationPoint(0F, 0F, 0F); + Shape1.setTextureSize(64, 32); + Shape1.mirror = true; + setRotation(Shape1, 0F, 0F, 0F); + Shape2 = new ModelRenderer(this, 0, 0); + Shape2.addBox(-2F, 0F, 3F, 4, 1, 1); + Shape2.setRotationPoint(0F, 0F, 0F); + Shape2.setTextureSize(64, 32); + Shape2.mirror = true; + setRotation(Shape2, 0F, 0F, 0F); + Shape5 = new ModelRenderer(this, 35, 17); + Shape5.addBox(-2F, 0.5F, 4F, 1, 1, 6); + Shape5.setRotationPoint(0F, 0F, 0F); + Shape5.setTextureSize(64, 32); + Shape5.mirror = true; + setRotation(Shape5, 0F, 0F, 0F); + Shape6 = new ModelRenderer(this, 35, 1); + Shape6.addBox(1F, 0.5F, 4F, 1, 1, 6); + Shape6.setRotationPoint(0F, 0F, 0F); + Shape6.setTextureSize(64, 32); + Shape6.mirror = true; + setRotation(Shape6, 0F, 0F, 0F); + Shape7 = new ModelRenderer(this, 35, 9); + Shape7.addBox(-0.5F, 0.5F, 4F, 1, 1, 6); + Shape7.setRotationPoint(0F, 0F, 0F); + Shape7.setTextureSize(64, 32); + Shape7.mirror = true; + setRotation(Shape7, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5); + Shape1.render(f5); + Shape2.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, null); + } + +} diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelHerb.class b/src/main/java/jp/plusplus/fbs/block/model/ModelHerb.class new file mode 100644 index 0000000..2c77717 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/model/ModelHerb.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelHerb.java b/src/main/java/jp/plusplus/fbs/block/model/ModelHerb.java new file mode 100644 index 0000000..43e8153 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/model/ModelHerb.java @@ -0,0 +1,124 @@ +// Date: 2015/11/15 17:51:17 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + + + + + + +package jp.plusplus.fbs.block.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelHerb extends ModelBase { + //fields + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + ModelRenderer Shape5; + ModelRenderer Shape6; + ModelRenderer Shape7; + ModelRenderer Shape8; + ModelRenderer Shape9; + ModelRenderer Shape10; + + public ModelHerb(int meta) { + textureWidth = 64; + textureHeight = 32; + + Shape1 = new ModelRenderer(this, 0, 0); + Shape1.addBox(-4F, 7F, -3F, 2, 1, 2); + Shape1.setRotationPoint(0F, 16F, 0F); + Shape1.setTextureSize(64, 32); + Shape1.mirror = true; + setRotation(Shape1, 0F, 0F, 0F); + Shape2 = new ModelRenderer(this, 8, 0); + Shape2.addBox(3F, 7F, 3F, 2, 1, 1); + Shape2.setRotationPoint(0F, 16F, 0F); + Shape2.setTextureSize(64, 32); + Shape2.mirror = true; + setRotation(Shape2, 0F, 0F, 0F); + Shape3 = new ModelRenderer(this, 8, 0); + Shape3.addBox(3F, 7F, 2F, 2, 1, 1); + Shape3.setRotationPoint(0F, 16F, 0F); + Shape3.setTextureSize(64, 32); + Shape3.mirror = true; + setRotation(Shape3, 0F, 1.570796F, 0F); + Shape4 = new ModelRenderer(this, 0, 0); + Shape4.addBox(-2F, 7F, 2F, 2, 1, 2); + Shape4.setRotationPoint(0F, 16F, 0F); + Shape4.setTextureSize(64, 32); + Shape4.mirror = true; + setRotation(Shape4, 0F, 0F, 0F); + + Shape5 = new ModelRenderer(this, 8*(meta%8), 3+15*(meta/8)); + Shape5.addBox(-2F, -4F, -4F, 4, 12, 0); + Shape5.setRotationPoint(0F, 16F, 0F); + Shape5.setTextureSize(64, 32); + Shape5.mirror = true; + setRotation(Shape5, 0F, 0F, 0F); + Shape6 = new ModelRenderer(this, 8*(meta%8), 3+15*(meta/8)); + Shape6.addBox(2F, -4F, 0F, 4, 12, 0); + Shape6.setRotationPoint(0F, 16F, 0F); + Shape6.setTextureSize(64, 32); + Shape6.mirror = true; + setRotation(Shape6, 0F, 1.570796F, 0F); + Shape7 = new ModelRenderer(this, 8*(meta%8), 3+15*(meta/8)); + Shape7.addBox(0F, -4F, 3F, 4, 12, 0); + Shape7.setRotationPoint(0F, 16F, 0F); + Shape7.setTextureSize(64, 32); + Shape7.mirror = true; + setRotation(Shape7, 0F, 0F, 0F); + Shape8 = new ModelRenderer(this, 8*(meta%8), 3+15*(meta/8)); + Shape8.addBox(-5F, -4F, 2F, 4, 12, 0); + Shape8.setRotationPoint(0F, 16F, 0F); + Shape8.setTextureSize(64, 32); + Shape8.mirror = true; + setRotation(Shape8, 0F, 1.570796F, 0F); + Shape9 = new ModelRenderer(this, 8*(meta%8), 3+15*(meta/8)); + Shape9.addBox(-3F, -4F, -4F, 4, 12, 0); + Shape9.setRotationPoint(0F, 16F, 0F); + Shape9.setTextureSize(64, 32); + Shape9.mirror = true; + setRotation(Shape9, 0F, 1.570796F, 0F); + Shape10 = new ModelRenderer(this, 8*(meta%8), 3+15*(meta/8)); + Shape10.addBox(-6F, -4F, 1F, 4, 12, 0); + Shape10.setRotationPoint(0F, 16F, 0F); + Shape10.setTextureSize(64, 32); + Shape10.mirror = true; + setRotation(Shape10, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + } + public void renderHerbs(float f5){ + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + Shape8.render(f5); + Shape9.render(f5); + Shape10.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, null); + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelKnife.class b/src/main/java/jp/plusplus/fbs/block/model/ModelKnife.class new file mode 100644 index 0000000..b86ec1f Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/model/ModelKnife.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelKnife.java b/src/main/java/jp/plusplus/fbs/block/model/ModelKnife.java new file mode 100644 index 0000000..e20aaec --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/model/ModelKnife.java @@ -0,0 +1,74 @@ +// Date: 2015/11/06 14:29:36 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + + + + + + +package jp.plusplus.fbs.block.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelKnife extends ModelBase { + //fields + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + + public ModelKnife() { + textureWidth = 64; + textureHeight = 32; + + Shape1 = new ModelRenderer(this, 0, 0); + Shape1.addBox(-1F, -0.5F, -11F, 2, 1, 14); + Shape1.setRotationPoint(0F, 0F, 0F); + Shape1.setTextureSize(64, 32); + Shape1.mirror = true; + setRotation(Shape1, 0F, 0F, 0F); + Shape2 = new ModelRenderer(this, 2, 17); + Shape2.addBox(-2F, -0.5F, 3F, 3, 1, 7); + Shape2.setRotationPoint(0F, 0F, 0F); + Shape2.setTextureSize(64, 32); + Shape2.mirror = true; + setRotation(Shape2, 0F, 0F, 0F); + Shape3 = new ModelRenderer(this, 0, 0); + Shape3.addBox(-1F, -0.5F, 10F, 2, 1, 1); + Shape3.setRotationPoint(0F, 0F, 0F); + Shape3.setTextureSize(64, 32); + Shape3.mirror = true; + setRotation(Shape3, 0F, 0F, 0F); + Shape4 = new ModelRenderer(this, 0, 0); + Shape4.addBox(0F, -0.5F, 11F, 1, 1, 1); + Shape4.setRotationPoint(0F, 0F, 0F); + Shape4.setTextureSize(64, 32); + Shape4.mirror = true; + setRotation(Shape4, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, null); + } + +} diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelMushroom.class b/src/main/java/jp/plusplus/fbs/block/model/ModelMushroom.class new file mode 100644 index 0000000..68a1172 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/model/ModelMushroom.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelMushroom.java b/src/main/java/jp/plusplus/fbs/block/model/ModelMushroom.java new file mode 100644 index 0000000..4d5d667 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/model/ModelMushroom.java @@ -0,0 +1,96 @@ +// Date: 2016/02/23 14:02:41 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + +package jp.plusplus.fbs.block.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelMushroom extends ModelBase { + //fields + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + ModelRenderer Shape5; + ModelRenderer Shape6; + ModelRenderer Shape7; + + public ModelMushroom(int color) { + textureWidth = 64; + textureHeight = 32; + + Shape1 = new ModelRenderer(this, 18, 0); + Shape1.addBox(-4F, 6F, -4F, 2, 2, 2); + Shape1.setRotationPoint(0F, 16F, 0F); + Shape1.setTextureSize(64, 32); + Shape1.mirror = true; + setRotation(Shape1, 0F, 0F, 0F); + Shape2 = new ModelRenderer(this, 0+color*20, 19); + Shape2.addBox(0F, 6F, 1F, 5, 1, 5); + Shape2.setRotationPoint(0F, 16F, 0F); + Shape2.setTextureSize(64, 32); + Shape2.mirror = true; + setRotation(Shape2, 0F, 0F, 0F); + Shape3 = new ModelRenderer(this, 0, 0); + Shape3.addBox(2F, 7F, 3F, 1, 1, 1); + Shape3.setRotationPoint(0F, 16F, 0F); + Shape3.setTextureSize(64, 32); + Shape3.mirror = true; + setRotation(Shape3, 0F, 0F, 0F); + Shape4 = new ModelRenderer(this, 0+(color%2)*24, 0+(color/2)*7); + Shape4.addBox(-6F, 5F, -6F, 6, 1, 6); + Shape4.setRotationPoint(0F, 16F, 0F); + Shape4.setTextureSize(64, 32); + Shape4.mirror = true; + setRotation(Shape4, 0F, 0F, 0F); + Shape5 = new ModelRenderer(this, 0+color*20, 14); + Shape5.addBox(-5F, 4F, -5F, 4, 1, 4); + Shape5.setRotationPoint(0F, 16F, 0F); + Shape5.setTextureSize(64, 32); + Shape5.mirror = true; + setRotation(Shape5, 0F, 0F, 0F); + Shape6 = new ModelRenderer(this, 0, 2); + Shape6.addBox(3F, 7F, -3F, 2, 1, 1); + Shape6.setRotationPoint(0F, 16F, 0F); + Shape6.setTextureSize(64, 32); + Shape6.mirror = true; + setRotation(Shape6, 0F, 0F, 0F); + Shape7 = new ModelRenderer(this, 0, 4); + Shape7.addBox(-3F, 7F, 3F, 1, 1, 1); + Shape7.setRotationPoint(0F, 16F, 0F); + Shape7.setTextureSize(64, 32); + Shape7.mirror = true; + setRotation(Shape7, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5); + Shape6.render(f5); + Shape7.render(f5); + } + + public void renderMush(float f5) { + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, null); + } + +} diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelSchoolTable.class b/src/main/java/jp/plusplus/fbs/block/model/ModelSchoolTable.class new file mode 100644 index 0000000..4b121db Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/model/ModelSchoolTable.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelSchoolTable.java b/src/main/java/jp/plusplus/fbs/block/model/ModelSchoolTable.java new file mode 100644 index 0000000..20e797a --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/model/ModelSchoolTable.java @@ -0,0 +1,133 @@ +// Date: 2015/09/25 11:01:28 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + +package jp.plusplus.fbs.block.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelSchoolTable extends ModelBase { + //fields + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + ModelRenderer Shape5; + ModelRenderer Shape6; + ModelRenderer Shape7; + ModelRenderer Shape8; + ModelRenderer Shape9; + ModelRenderer Shape10; + ModelRenderer Shape11; + ModelRenderer Shape12; + + public ModelSchoolTable() { + textureWidth = 64; + textureHeight = 32; + + Shape1 = new ModelRenderer(this, 0, 0); + Shape1.addBox(-7F, -7F, 4F, 1, 15, 1); + Shape1.setRotationPoint(0F, 0F, 0F); + Shape1.setTextureSize(64, 32); + Shape1.mirror = true; + setRotation(Shape1, 0F, 0F, 0F); + Shape2 = new ModelRenderer(this, 0, 0); + Shape2.addBox(6F, -7F, -5F, 1, 15, 1); + Shape2.setRotationPoint(0F, 0F, 0F); + Shape2.setTextureSize(64, 32); + Shape2.mirror = true; + setRotation(Shape2, 0F, 0F, 0F); + Shape3 = new ModelRenderer(this, 0, 0); + Shape3.addBox(-7F, -7F, -5F, 1, 15, 1); + Shape3.setRotationPoint(0F, 0F, 0F); + Shape3.setTextureSize(64, 32); + Shape3.mirror = true; + setRotation(Shape3, 0F, 0F, 0F); + Shape4 = new ModelRenderer(this, 0, 0); + Shape4.addBox(6F, -7F, 4F, 1, 15, 1); + Shape4.setRotationPoint(0F, 0F, 0F); + Shape4.setTextureSize(64, 32); + Shape4.mirror = true; + setRotation(Shape4, 0F, 0F, 0F); + Shape5 = new ModelRenderer(this, 0, 4); + Shape5.addBox(-8F, -8F, -6F, 16, 1, 12); + Shape5.setRotationPoint(0F, 0F, 0F); + Shape5.setTextureSize(64, 32); + Shape5.mirror = true; + setRotation(Shape5, 0F, 0F, 0F); + Shape6 = new ModelRenderer(this, 44, 0); + Shape6.addBox(-7F, -7F, -4F, 1, 1, 8); + Shape6.setRotationPoint(0F, 0F, 0F); + Shape6.setTextureSize(64, 32); + Shape6.mirror = true; + setRotation(Shape6, 0F, 0F, 0F); + Shape7 = new ModelRenderer(this, 44, 0); + Shape7.addBox(6F, -7F, -4F, 1, 1, 8); + Shape7.setRotationPoint(0F, 0F, 0F); + Shape7.setTextureSize(64, 32); + Shape7.mirror = true; + setRotation(Shape7, 0F, 0F, 0F); + Shape8 = new ModelRenderer(this, 44, 0); + Shape8.addBox(-7F, 4F, -4F, 1, 1, 8); + Shape8.setRotationPoint(0F, 0F, 0F); + Shape8.setTextureSize(64, 32); + Shape8.mirror = true; + setRotation(Shape8, 0F, 0F, 0F); + Shape9 = new ModelRenderer(this, 44, 0); + Shape9.addBox(6F, 4F, -4F, 1, 1, 8); + Shape9.setRotationPoint(0F, 0F, 0F); + Shape9.setTextureSize(64, 32); + Shape9.mirror = true; + setRotation(Shape9, 0F, 0F, 0F); + Shape10 = new ModelRenderer(this, 0, 17); + Shape10.addBox(-6F, -6F, -5F, 12, 1, 9); + Shape10.setRotationPoint(0F, 0F, 0F); + Shape10.setTextureSize(64, 32); + Shape10.mirror = true; + setRotation(Shape10, 0F, 0F, 0F); + Shape11 = new ModelRenderer(this, 4, 2); + Shape11.addBox(-6F, -7F, 4F, 12, 1, 1); + Shape11.setRotationPoint(0F, 0F, 0F); + Shape11.setTextureSize(64, 32); + Shape11.mirror = true; + setRotation(Shape11, 0F, 0F, 0F); + Shape12 = new ModelRenderer(this, 4, 0); + Shape12.addBox(-6F, 4F, 4F, 12, 1, 1); + Shape12.setRotationPoint(0F, 0F, 0F); + Shape12.setTextureSize(64, 32); + Shape12.mirror = true; + setRotation(Shape12, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + Shape8.render(f5); + Shape9.render(f5); + Shape10.render(f5); + Shape11.render(f5); + Shape12.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, null); + } + +} diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelSpoon.class b/src/main/java/jp/plusplus/fbs/block/model/ModelSpoon.class new file mode 100644 index 0000000..aff3268 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/model/ModelSpoon.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/model/ModelSpoon.java b/src/main/java/jp/plusplus/fbs/block/model/ModelSpoon.java new file mode 100644 index 0000000..893a54e --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/model/ModelSpoon.java @@ -0,0 +1,98 @@ +// Date: 2015/11/06 12:50:16 +// Template version 1.1 +// Java generated by Techne +// Keep in mind that you still need to fill in some blanks +// - ZeuX + + + + + + +package jp.plusplus.fbs.block.model; + +import net.minecraft.client.model.ModelBase; +import net.minecraft.client.model.ModelRenderer; +import net.minecraft.entity.Entity; + +public class ModelSpoon extends ModelBase { + //fields + ModelRenderer Shape1; + ModelRenderer Shape2; + ModelRenderer Shape3; + ModelRenderer Shape4; + ModelRenderer Shape5; + ModelRenderer Shape6; + ModelRenderer Shape7; + + public ModelSpoon() { + textureWidth = 64; + textureHeight = 32; + + Shape1 = new ModelRenderer(this, 0, 0); + Shape1.addBox(-1F, -0.5F, -11F, 2, 1, 14); + Shape1.setRotationPoint(0F, 0F, 0F); + Shape1.setTextureSize(64, 32); + Shape1.mirror = true; + setRotation(Shape1, 0F, 0F, 0F); + Shape2 = new ModelRenderer(this, 0, 0); + Shape2.addBox(-2F, 0F, 3F, 4, 1, 1); + Shape2.setRotationPoint(0F, 0F, 0F); + Shape2.setTextureSize(64, 32); + Shape2.mirror = true; + setRotation(Shape2, 0F, 0F, 0F); + Shape3 = new ModelRenderer(this, 18, 5); + Shape3.addBox(-3F, 0.5F, 4F, 6, 1, 1); + Shape3.setRotationPoint(0F, 0F, 0F); + Shape3.setTextureSize(64, 32); + Shape3.mirror = true; + setRotation(Shape3, 0F, 0F, 0F); + Shape4 = new ModelRenderer(this, 18, 0); + Shape4.addBox(-2F, 1.5F, 5F, 4, 1, 4); + Shape4.setRotationPoint(0F, 0F, 0F); + Shape4.setTextureSize(64, 32); + Shape4.mirror = true; + setRotation(Shape4, 0F, 0F, 0F); + Shape5 = new ModelRenderer(this, 0, 2); + Shape5.addBox(-3F, 0.5F, 5F, 1, 1, 5); + Shape5.setRotationPoint(0F, 0F, 0F); + Shape5.setTextureSize(64, 32); + Shape5.mirror = true; + setRotation(Shape5, 0F, 0F, 0F); + Shape6 = new ModelRenderer(this, 0, 2); + Shape6.addBox(2F, 0.5F, 5F, 1, 1, 5); + Shape6.setRotationPoint(0F, 0F, 0F); + Shape6.setTextureSize(64, 32); + Shape6.mirror = true; + setRotation(Shape6, 0F, 0F, 0F); + Shape7 = new ModelRenderer(this, 0, 8); + Shape7.addBox(-2F, 0.5F, 9F, 4, 1, 2); + Shape7.setRotationPoint(0F, 0F, 0F); + Shape7.setTextureSize(64, 32); + Shape7.mirror = true; + setRotation(Shape7, 0F, 0F, 0F); + } + + public void render(Entity entity, float f, float f1, float f2, float f3, float f4, float f5) { + super.render(entity, f, f1, f2, f3, f4, f5); + setRotationAngles(f, f1, f2, f3, f4, f5); + Shape1.render(f5); + Shape2.render(f5); + Shape3.render(f5); + Shape4.render(f5); + Shape5.render(f5); + Shape6.render(f5); + Shape7.render(f5); + } + + private void setRotation(ModelRenderer model, float x, float y, float z) { + model.rotateAngleX = x; + model.rotateAngleY = y; + model.rotateAngleZ = z; + } + + public void setRotationAngles(float f, float f1, float f2, float f3, float f4, float f5) { + super.setRotationAngles(f, f1, f2, f3, f4, f5, null); + } + +} diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyCauldron.class b/src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyCauldron.class new file mode 100644 index 0000000..99a999b Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyCauldron.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyCauldron.java b/src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyCauldron.java new file mode 100644 index 0000000..9c8fd60 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyCauldron.java @@ -0,0 +1,188 @@ +package jp.plusplus.fbs.block.render; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.block.BlockCore; +import jp.plusplus.fbs.block.model.ModelAlchemyCauldron; +import jp.plusplus.fbs.model.ModelMirror; +import mods.defeatedcrow.common.fluid.BlockCamOilFluid; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.IBlockAccess; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +/** + * Created by pluslus_F on 2015/09/24. + */ +public class RenderAlchemyCauldron extends TileEntitySpecialRenderer implements ISimpleBlockRenderingHandler { + public static ResourceLocation rl = new ResourceLocation(FBS.MODID + ":textures/models/AlchemyCauldron.png"); + protected ModelAlchemyCauldron model = new ModelAlchemyCauldron(); + float f4 = 4.0f / 16.0f; + float f5 = 5.0f / 16.0f; + float f9 = 9.0f / 16.0f; + float f11 = 11.0f / 16.0f; + float f12 = 12.0f / 16.0f; + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + GL11.glPushMatrix(); + GL11.glTranslatef(0.5f, 0.5f, 0.5f); + GL11.glRotatef(180, 0, 0, 1); + GL11.glRotatef(90, 0, -1, 0); + + float scale = 0.0625f*0.8f; + GL11.glScalef(scale, scale, scale); + + bindTexture(rl); + model.render(null, 0, 0, 0, 0, 0, 1.0f); + bindTexture(TextureMap.locationBlocksTexture); + + GL11.glScalef(1f, 1f, 1f); + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + if (modelId == this.getRenderId()) { + int meta = world.getBlockMetadata(x, y, z)&7; + + renderer.setOverrideBlockTexture(Blocks.brick_block.getIcon(0, 0)); + + + if (meta == 0) { + renderer.setRenderBounds(f5, 0, f5, 1, f5, 1); + renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(f5, f5, f5, f12, f9, f12); + renderer.renderStandardBlock(block, x, y, z); + } else if (meta == 1) { + renderer.setRenderBounds(0, 0, f5, f11, f5, 1); + renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(f4, f5, f5, f11, f9, f12); + renderer.renderStandardBlock(block, x, y, z); + } else if (meta == 2) { + renderer.setRenderBounds(f5, 0, 0, 1, f5, f11); + renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(f5, f5, f5, f12, f9, f11); + renderer.renderStandardBlock(block, x, y, z); + } else if (meta == 3) { + renderer.setRenderBounds(0, 0, 0, f11, f5, f11); + renderer.renderStandardBlock(block, x, y, z); + renderer.setRenderBounds(f4, f5, f5, f11, f9, f11); + renderer.renderStandardBlock(block, x, y, z); + } + + renderer.setRenderBounds(0, 0, 0, 1, 1, 1); + renderer.clearOverrideBlockTexture(); + return true; + } + return false; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return FBS.renderAlchemyCauldronId; + } + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float p_147500_8_) { + int meta = te.getWorldObj().getBlockMetadata(te.xCoord, te.yCoord, te.zCoord); + if ((meta&7) != 0) return; + + GL11.glPushMatrix(); + + if((meta&8)!=0){ + GL11.glTranslatef((float) x + 0.5f, (float) y + (16.0f - 7.0f) / 16.0f, (float) z + 0.5f); + GL11.glRotatef(90.0f, 0, 1, 0); + } + else{ + GL11.glTranslatef((float) x + 0.5f + 1.f, (float) y + (16.0f - 7.0f) / 16.0f, (float) z + 0.5f); + } + + GL11.glRotatef(180.0f, 0, 0, 1); + float scale = 0.0625f; + GL11.glScalef(scale, scale, scale); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + + this.bindTexture(rl); + model.render(null, 0, 0, 0, 0, 0, 1.0f); + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glPopMatrix(); + + + //溜まった水の描画 + IIcon icon = BlockCore.mana.getIcon(); + if (icon == null) return; + float minU=icon.getInterpolatedU(16 * 0); + float maxU=icon.getInterpolatedU(16 * 1); + float minV=icon.getInterpolatedV(16 * 0); + float maxV=icon.getInterpolatedV(16 * 1); + + bindTexture(TextureMap.locationBlocksTexture); + GL11.glPushMatrix(); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glColor4f(2.0F, 2.0F, 2.0F, 0.75F); + GL11.glTranslatef((float) x, (float) y, (float) z); + GL11.glRotatef(0.0F, 0.0F, 1.0F, 0.0F); + + float height = 15.0f/16.0f; + Tessellator tessellator=Tessellator.instance; + + //0 + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0f, 1.0f, 0.0f); + tessellator.addVertexWithUV(f5, height, f5, minU, minV); + tessellator.addVertexWithUV(f5, height, 1, minU, maxV); + tessellator.addVertexWithUV(1, height, 1, maxU, maxV); + tessellator.addVertexWithUV(1, height, f5, maxU, minV); + tessellator.draw(); + + //1 + GL11.glTranslatef(1.0f, 0, 0); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0f, 1.0f, 0.0f); + tessellator.addVertexWithUV(0, height, f5, minU, minV); + tessellator.addVertexWithUV(0, height, 1, minU, maxV); + tessellator.addVertexWithUV(f11, height, 1, maxU, maxV); + tessellator.addVertexWithUV(f11, height, f5, maxU, minV); + tessellator.draw(); + + //2 + GL11.glTranslatef(-1.0f, 0, 1); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0f, 1.0f, 0.0f); + tessellator.addVertexWithUV(f5, height, 0, minU, minV); + tessellator.addVertexWithUV(f5, height, f11, minU, maxV); + tessellator.addVertexWithUV(1, height, f11, maxU, maxV); + tessellator.addVertexWithUV(1, height, 0, maxU, minV); + tessellator.draw(); + + //3 + GL11.glTranslatef(1.0f, 0, 0); + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0f, 1.0f, 0.0f); + tessellator.addVertexWithUV(0, height, 0, minU, minV); + tessellator.addVertexWithUV(0, height, f11, minU, maxV); + tessellator.addVertexWithUV(f11, height, f11, maxU, maxV); + tessellator.addVertexWithUV(f11, height, 0, maxU, minV); + tessellator.draw(); + + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyTable.class b/src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyTable.class new file mode 100644 index 0000000..c53632d Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyTable.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyTable.java b/src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyTable.java new file mode 100644 index 0000000..0527eb7 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyTable.java @@ -0,0 +1,93 @@ +package jp.plusplus.fbs.block.render; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.block.BlockCore; +import jp.plusplus.fbs.block.model.ModelAlchemyCauldron; +import jp.plusplus.fbs.block.model.ModelAlchemyTable; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.IBlockAccess; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +/** + * Created by pluslus_F on 2015/09/25. + */ +public class RenderAlchemyTable extends TileEntitySpecialRenderer implements ISimpleBlockRenderingHandler { + public static ResourceLocation rl = new ResourceLocation(FBS.MODID + ":textures/models/AlchemyTable.png"); + protected ModelAlchemyTable model = new ModelAlchemyTable(); + float f4 = 4.0f / 16.0f; + float f5 = 5.0f / 16.0f; + float f9 = 9.0f / 16.0f; + float f11 = 11.0f / 16.0f; + float f12 = 12.0f / 16.0f; + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + GL11.glPushMatrix(); + GL11.glTranslatef(0.5f, 0.5f, 0.5f); + GL11.glRotatef(180, 0, 0, 1); + GL11.glRotatef(90, 0, -1, 0); + + float scale = 0.0625f*0.8f; + GL11.glScalef(scale, scale, scale); + + bindTexture(rl); + model.render(null, 0, 0, 0, 0, 0, 1.0f); + bindTexture(TextureMap.locationBlocksTexture); + + GL11.glScalef(1f, 1f, 1f); + GL11.glPopMatrix(); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + if (modelId == this.getRenderId()) { + return true; + } + return false; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return FBS.renderAlchemyTableId; + } + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float p_147500_8_) { + int meta = te.getWorldObj().getBlockMetadata(te.xCoord, te.yCoord, te.zCoord); + if ((meta&8) != 0) return; + + GL11.glPushMatrix(); + GL11.glTranslatef((float) x + 0.5f + 1.f, (float) y + 0.5f, (float) z + 0.5f); + GL11.glRotatef(180.0f, 0, 0, 1); + float scale = 0.0625f; + GL11.glScalef(scale, scale, scale); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + + switch(meta){ + case 4: GL11.glRotatef(90, 0, -1, 0); break; + case 5: GL11.glRotatef(90, 0, 1, 0); break; + case 3: GL11.glRotatef(180, 0, -1, 0); break; + default: break; + } + + this.bindTexture(rl); + model.render(null, 0, 0, 0, 0, 0, 1.0f); + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderBarrier.class b/src/main/java/jp/plusplus/fbs/block/render/RenderBarrier.class new file mode 100644 index 0000000..1ec59e5 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/render/RenderBarrier.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderBarrier.java b/src/main/java/jp/plusplus/fbs/block/render/RenderBarrier.java new file mode 100644 index 0000000..9ca1dbd --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/render/RenderBarrier.java @@ -0,0 +1,106 @@ +package jp.plusplus.fbs.block.render; + +import codechicken.lib.render.BlockRenderer; +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import jp.plusplus.fbs.FBS; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +/** + * Created by plusplus_F on 2015/09/27. + */ +public class RenderBarrier implements ISimpleBlockRenderingHandler { + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + + if (modelId == this.getRenderId()){ + IIcon icon=block.getIcon(0,0); + + GL11.glPushMatrix(); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glColor4f(2.0F, 2.0F, 2.0F, 0.75F); + + Tessellator tessellator = Tessellator.instance; + block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + renderer.setRenderBoundsFromBlock(block); + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + renderer.setRenderBoundsFromBlock(block); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, icon); + tessellator.draw(); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, icon); + tessellator.draw(); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, icon); + tessellator.draw(); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, icon); + tessellator.draw(); + + tessellator.startDrawingQuads(); + tessellator.setNormal(-1F, 0.0F, 0.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, icon); + tessellator.draw(); + + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, icon); + tessellator.draw(); + + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + renderer.setRenderBoundsFromBlock(block); + GL11.glPopMatrix(); + } + + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + if(modelId==getRenderId()){ + + + GL11.glPushMatrix(); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + GL11.glEnable(GL11.GL_BLEND); + GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA); + GL11.glColor4f(2.0F, 2.0F, 2.0F, 0.75F); + + block.setBlockBounds(0, 0, 0, 1, 1, 1); + renderer.setRenderBoundsFromBlock(block); + renderer.renderStandardBlock(block, x, y, z); + + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glDisable(GL11.GL_BLEND); + GL11.glPopMatrix(); + + return true; + } + return false; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return false; + } + + @Override + public int getRenderId() { + return FBS.renderBarrierId; + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderCharm.class b/src/main/java/jp/plusplus/fbs/block/render/RenderCharm.class new file mode 100644 index 0000000..321f200 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/render/RenderCharm.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderCharm.java b/src/main/java/jp/plusplus/fbs/block/render/RenderCharm.java new file mode 100644 index 0000000..2a94b0e --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/render/RenderCharm.java @@ -0,0 +1,52 @@ +package jp.plusplus.fbs.block.render; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.block.BlockCore; +import jp.plusplus.fbs.tileentity.TileEntityMagicCore; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; + +/** + * Created by pluslus_F on 2015/06/17. + */ +public class RenderCharm implements ISimpleBlockRenderingHandler { + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + if (modelId == this.getRenderId()){ + + if(block== BlockCore.magicCore){ + TileEntity te=world.getTileEntity(x,y,z); + if(te instanceof TileEntityMagicCore){ + if(!((TileEntityMagicCore) te).getCircleName().equals("null")) return true; + } + } + + block.setBlockBounds(0, 0, 0, 1, 0.0625f, 1); + renderer.renderMaxY=0.01f; + renderer.renderStandardBlock(block, x, y, z); + + return true; + } + return false; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return false; + } + + @Override + public int getRenderId() { + return FBS.renderCharmId; + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderDecorations.class b/src/main/java/jp/plusplus/fbs/block/render/RenderDecorations.class new file mode 100644 index 0000000..02e79b8 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/render/RenderDecorations.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderDecorations.java b/src/main/java/jp/plusplus/fbs/block/render/RenderDecorations.java new file mode 100644 index 0000000..98574c2 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/render/RenderDecorations.java @@ -0,0 +1,198 @@ +package jp.plusplus.fbs.block.render; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.block.BlockCore; +import jp.plusplus.fbs.block.model.ModelAlchemyTable; +import jp.plusplus.fbs.block.model.ModelBonfire; +import jp.plusplus.fbs.block.model.ModelSchoolTable; +import jp.plusplus.fbs.render.TessellatorWrapper; +import net.minecraft.block.Block; +import net.minecraft.block.BlockFire; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.IBlockAccess; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +/** + * Created by plusplus_F on 2015/09/25. + */ +public class RenderDecorations extends TileEntitySpecialRenderer implements ISimpleBlockRenderingHandler { + public static final ResourceLocation rl0=new ResourceLocation(FBS.MODID+":textures/models/SchoolTable.png"); + public ModelSchoolTable md0=new ModelSchoolTable(); + + public static final ResourceLocation rl1 = new ResourceLocation(FBS.MODID + ":textures/models/AlchemyTable.png"); + public ModelAlchemyTable md1 = new ModelAlchemyTable(); + + public static final ResourceLocation rl2=new ResourceLocation(FBS.MODID+":textures/models/Bonfire.png"); + public ModelBonfire md2=new ModelBonfire(); + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + if(getRenderId()!=modelId) return; + int type=getRenderType(block, metadata); + + GL11.glPushMatrix(); + GL11.glTranslatef(0.5f, 0.5f, 0.5f); + GL11.glRotatef(180, 0, 0, 1); + if(type==0) GL11.glRotatef(90, 0, 1, 0); + float scale = 0.0625f; + GL11.glScalef(scale, scale, scale); + + if(type==0){ + GL11.glTranslatef(0, 2f, 0); + bindTexture(rl0); + md0.render(null,0,0,0,0,0,1.0f); + } + else if(type==1){ + GL11.glTranslatef(-5, 4f, 0); + scale=0.8f; + GL11.glScalef(scale, scale, scale); + bindTexture(rl1); + md1.render(null, 0, 0, 0, 0, 0, 1.0f); + } + else if(type==2){ + //GL11.glTranslatef(-5, 4f, 0); + bindTexture(rl2); + GL11.glTranslatef(0, -16f, 0); + md2.render(null, 0, 0, 0, 0, 0, 1.0f); + } + + GL11.glScalef(1f, 1f, 1f); + GL11.glPopMatrix(); + + bindTexture(TextureMap.locationBlocksTexture); + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + if(getRenderId()==modelId){ + + int meta=world.getBlockMetadata(x,y,z); + int type=getRenderType(block, meta); + if(type==2 && meta>0){ + /* + renderer.setOverrideBlockTexture(Blocks.fire.getIcon(0,0)); + + renderer.renderMinY=0; + renderer.renderMaxY=1; + + GL11.glPushMatrix(); + + renderer.renderMinZ=0; + renderer.renderMaxZ=1; + renderer.renderMinX=renderer.renderMaxX=0.25; + renderer.renderStandardBlock(block, x, y, z); + renderer.renderMinX=renderer.renderMaxX=0.75; + renderer.renderStandardBlock(block, x, y, z); + + renderer.renderMinX=0; + renderer.renderMaxX=1; + renderer.renderMinZ=renderer.renderMaxZ=0.25; + renderer.renderStandardBlock(block, x, y, z); + renderer.renderMinZ=renderer.renderMaxZ=0.75; + renderer.renderStandardBlock(block, x, y, z); + + renderer.clearOverrideBlockTexture(); + */ + } + + return true; + } + return false; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return FBS.renderDecorationId; + } + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float p_147500_8_) { + int meta=te.getWorldObj().getBlockMetadata(te.xCoord, te.yCoord, te.zCoord); + int type=getRenderType(te.getBlockType(), meta); + + GL11.glPushMatrix(); + GL11.glTranslatef((float) x + 0.5f, (float) y + 0.5f, (float) z + 0.5f); + GL11.glRotatef(180.0f, 0, 0, 1); + float scale = 0.0625f; + GL11.glScalef(scale, scale, scale); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + + if(type==0){ + switch(meta){ + case 4: GL11.glRotatef(90, 0, -1, 0); break; + case 5: GL11.glRotatef(90, 0, 1, 0); break; + case 3: GL11.glRotatef(180, 0, -1, 0); break; + default: break; + } + + bindTexture(rl0); + md0.render(null, 0,0,0,0,0,1.f); + } + else if(type==1){ + if((meta&8)==0){ + switch(meta){ + case 4: GL11.glRotatef(90, 0, -1, 0); break; + case 5: GL11.glRotatef(90, 0, 1, 0); break; + case 3: GL11.glRotatef(180, 0, -1, 0); break; + default: break; + } + + this.bindTexture(rl1); + md1.render(null, 0, 0, 0, 0, 0, 1.0f); + } + } + else if(type==2){ + GL11.glTranslatef(0, -16.f, 0); + bindTexture(rl2); + md2.render(null, 0,0,0,0,0,1.f); + + //焔の描画 + if(meta>0) { + bindTexture(TextureMap.locationBlocksTexture); + IIcon icon = Blocks.fire.getIcon(0, 0); + + GL11.glPushMatrix(); + GL11.glTranslatef(-4f, 16.f-3f, -4f); + //GL11.glScalef(0.5f, 0.5f, 0.5f); + float ssc=9f; + GL11.glScalef(ssc, ssc, ssc); + + TessellatorWrapper.SetBlockRender(false); + TessellatorWrapper.DrawXNeg(0.25f, 0.f, 0.f, 1.f, 1.f, icon); + TessellatorWrapper.DrawXPos(0.25f, 0.f, 0.f, 1.f, 1.f, icon); + TessellatorWrapper.DrawXNeg(0.75f, 0.f, 0.f, 1.f, 1.f, icon); + TessellatorWrapper.DrawXPos(0.75f, 0.f, 0.f, 1.f, 1.f, icon); + + TessellatorWrapper.DrawZNeg(0.f, 0.f, 0.25f, 1.f, 1.f, icon); + TessellatorWrapper.DrawZPos(0.f, 0.f, 0.25f, 1.f, 1.f, icon); + TessellatorWrapper.DrawZNeg(0.f, 0.f, 0.75f, 1.f, 1.f, icon); + TessellatorWrapper.DrawZPos(0.f, 0.f, 0.75f, 1.f, 1.f, icon); + + GL11.glPopMatrix(); + } + } + + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glPopMatrix(); + } + + public int getRenderType(Block block, int meta){ + if(block==BlockCore.schoolTable) return 0; + if(block==BlockCore.tableAlchemist) return 1; + if(block==BlockCore.bonfire) return 2; + return 0; + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderDirectional.class b/src/main/java/jp/plusplus/fbs/block/render/RenderDirectional.class new file mode 100644 index 0000000..ca922cc Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/render/RenderDirectional.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderDirectional.java b/src/main/java/jp/plusplus/fbs/block/render/RenderDirectional.java new file mode 100644 index 0000000..ecc5df7 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/render/RenderDirectional.java @@ -0,0 +1,99 @@ +package jp.plusplus.fbs.block.render; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import jp.plusplus.fbs.FBS; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.world.IBlockAccess; +import org.lwjgl.opengl.GL11; + +/** + * Createdby pluslus_Fon 2015/06/13. + */ +public class RenderDirectional implements ISimpleBlockRenderingHandler { + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelID, RenderBlocks renderer) { + IIcon tFront; + IIcon tSide; + IIcon tTop; + IIcon tBottom; + + if (modelID == this.getRenderId()){ + tFront=block.getIcon(2, 2); + tSide=block.getIcon(2,0); + tTop=block.getIcon(1,0); + tBottom=block.getIcon(0,0); + + Tessellator tessellator = Tessellator.instance; + block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + renderer.setRenderBoundsFromBlock(block); + GL11.glTranslatef(-0.5F, -0.5F, -0.5F); + renderer.setRenderBoundsFromBlock(block); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, -1F, 0.0F); + renderer.renderFaceYNeg(block, 0.0D, 0.0D, 0.0D, tBottom); + tessellator.draw(); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 1.0F, 0.0F); + renderer.renderFaceYPos(block, 0.0D, 0.0D, 0.0D, tTop); + tessellator.draw(); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, -1F); + renderer.renderFaceXPos(block, 0.0D, 0.0D, 0.0D, tFront); + tessellator.draw(); + + tessellator.startDrawingQuads(); + tessellator.setNormal(0.0F, 0.0F, 1.0F); + renderer.renderFaceXNeg(block, 0.0D, 0.0D, 0.0D, tSide); + tessellator.draw(); + + tessellator.startDrawingQuads(); + tessellator.setNormal(-1F, 0.0F, 0.0F); + renderer.renderFaceZNeg(block, 0.0D, 0.0D, 0.0D, tSide); + tessellator.draw(); + + tessellator.startDrawingQuads(); + tessellator.setNormal(1.0F, 0.0F, 0.0F); + renderer.renderFaceZPos(block, 0.0D, 0.0D, 0.0D, tSide); + tessellator.draw(); + + GL11.glTranslatef(0.5F, 0.5F, 0.5F); + block.setBlockBounds(0.0F, 0.0F, 0.0F, 1.0F, 1.0F, 1.0F); + renderer.setRenderBoundsFromBlock(block); + } + } + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + if (modelId == this.getRenderId()) { + /* + TileEntity te=world.getTileEntity(x,y,z); + if(!(te instanceof IDirectional)) return false; + byte side=((IDirectional)te).getSide(); + */ + + block.setBlockBounds(0, 0, 0, 1, 1, 1); + renderer.setRenderBoundsFromBlock(block); + renderer.renderStandardBlock(block, x, y, z); + + return true; + } + return false; + } + + @Override + public boolean shouldRender3DInInventory(int i) { + return true; + } + + @Override + public int getRenderId() { + return FBS.renderDirectionalId; + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderHarvestable.class b/src/main/java/jp/plusplus/fbs/block/render/RenderHarvestable.class new file mode 100644 index 0000000..cf3a6be Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/render/RenderHarvestable.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderHarvestable.java b/src/main/java/jp/plusplus/fbs/block/render/RenderHarvestable.java new file mode 100644 index 0000000..3afccc8 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/render/RenderHarvestable.java @@ -0,0 +1,191 @@ +package jp.plusplus.fbs.block.render; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.api.IPottery; +import jp.plusplus.fbs.block.BlockCore; +import jp.plusplus.fbs.block.model.ModelHerb; +import jp.plusplus.fbs.block.model.ModelMushroom; +import jp.plusplus.fbs.tileentity.TileEntityHavestable; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.EntityRenderer; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.Tessellator; +import net.minecraft.client.renderer.texture.TextureMap; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.init.Blocks; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.IIcon; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.IBlockAccess; +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +/** + * Created by plusplus_F on 2015/11/15. + */ +public class RenderHarvestable extends TileEntitySpecialRenderer implements ISimpleBlockRenderingHandler { + public static ResourceLocation rlHerb = new ResourceLocation(FBS.MODID + ":textures/models/Herb.png"); + protected ModelHerb[] herbs; + + public static ResourceLocation rlMushroom=new ResourceLocation(FBS.MODID + ":textures/models/Mushroom.png"); + protected ModelMushroom[] mushes; + + public RenderHarvestable(){ + herbs=new ModelHerb[9]; + for(int i=0;i> 16 & 255) / 255.0F; + float f1 = (float) (l >> 8 & 255) / 255.0F; + float f2 = (float) (l & 255) / 255.0F; + + if (EntityRenderer.anaglyphEnable) { + float f3 = (f * 30.0F + f1 * 59.0F + f2 * 11.0F) / 100.0F; + float f4 = (f * 30.0F + f1 * 70.0F) / 100.0F; + float f5 = (f * 30.0F + f2 * 70.0F) / 100.0F; + f = f3; + f1 = f4; + f2 = f5; + } + + tessellator.setColorOpaque_F(f, f1, f2); + double d1 = (double) x; + double d2 = (double) y; + double d0 = (double) z; + long i1; + + i1 = (long) (x * 3129871) ^ (long) y * 116129781L ^ (long) z; + i1 = i1 * i1 * 42317861L + i1 * 11L; + d1 += ((double) ((float) (i1 >> 16 & 15L) / 15.0F) - 0.5D) * 0.5D; + d2 += ((double) ((float) (i1 >> 20 & 15L) / 15.0F) - 1.0D) * 0.2D; + d0 += ((double) ((float) (i1 >> 24 & 15L) / 15.0F) - 0.5D) * 0.5D; + + IIcon iicon = block.getIcon(world, x, y, z, 0); + RenderBlocks.getInstance().drawCrossedSquares(iicon, d1, d2, d0, 1.0F); + } + return true; + } + + return false; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return true; + } + + @Override + public int getRenderId() { + return FBS.renderHerbId; + } + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float p_147500_8_) { + int meta = te.getWorldObj().getBlockMetadata(te.xCoord, te.yCoord, te.zCoord); + GL11.glPushMatrix(); + GL11.glTranslatef((float) x + 0.5f, (float) y + 1+0.5f, (float) z + 0.5f); + + GL11.glRotatef(180.0f, 0, 0, 1); + float scale = 0.0625f; + GL11.glScalef(scale, scale, scale); + GL11.glEnable(GL12.GL_RESCALE_NORMAL); + + if(te instanceof TileEntityHavestable){ + Block b=te.getBlockType(); + TileEntityHavestable teh=(TileEntityHavestable) te; + + if(b==BlockCore.harvestableHerb){ + this.bindTexture(rlHerb); + herbs[meta].render(null, 0, 0, 0, 0, 0, 1.0f); + if(teh.canHarvest()){ + herbs[meta].renderHerbs(1.0f); + } + } + else if(b==BlockCore.harvestableMushroom){ + this.bindTexture(rlMushroom); + mushes[meta].render(null, 0, 0, 0, 0, 0, 1.0f); + if(teh.canHarvest()){ + mushes[meta].renderMush(1.0f); + } + } + } + + GL11.glDisable(GL12.GL_RESCALE_NORMAL); + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderMirror.class b/src/main/java/jp/plusplus/fbs/block/render/RenderMirror.class new file mode 100644 index 0000000..ae647d1 Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/render/RenderMirror.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderMirror.java b/src/main/java/jp/plusplus/fbs/block/render/RenderMirror.java new file mode 100644 index 0000000..bbab4ab --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/render/RenderMirror.java @@ -0,0 +1,76 @@ +package jp.plusplus.fbs.block.render; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import jp.plusplus.fbs.FBS; +import jp.plusplus.fbs.model.ModelMirror; +import net.minecraft.block.Block; +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.client.renderer.tileentity.TileEntitySpecialRenderer; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.world.IBlockAccess; +import net.minecraftforge.common.util.ForgeDirection; +import org.lwjgl.opengl.GL11; +import shift.sextiarysector.renderer.model.ModelWindmill; +import shift.sextiarysector.tileentity.TileEntityWindmill; + +/** + * Created by pluslus_F on 2015/06/24. + */ +public class RenderMirror extends TileEntitySpecialRenderer implements ISimpleBlockRenderingHandler { + public static ResourceLocation rl=new ResourceLocation(FBS.MODID+":textures/entity/mirror.png"); + protected ModelMirror model=new ModelMirror(); + + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + if (modelId == this.getRenderId()){ + return true; + } + return false; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return false; + } + + @Override + public int getRenderId() { + return FBS.renderMirrorId; + } + + @Override + public void renderTileEntityAt(TileEntity te, double x, double y, double z, float p_147500_8_) { + int dir=te.getBlockMetadata(); + if((dir&8)!=0) return; + + GL11.glPushMatrix(); + GL11.glTranslatef((float)x+0.5f, (float)y, (float)z+0.5f); + float scale = 0.0625f; + GL11.glScalef(scale,scale,scale); + + switch(dir){ + case 5: + GL11.glRotatef(90, 0, 1, 0); + break; + case 4: + GL11.glRotatef(90, 0, -1, 0); + break; + case 2: + GL11.glRotatef(180, 0, 1, 0); + break; + default: + break; + } + + this.bindTexture(rl); + model.render(null, 0,0,0, 0,0, 1.0f); + GL11.glPopMatrix(); + } +} diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderPortalWarp.class b/src/main/java/jp/plusplus/fbs/block/render/RenderPortalWarp.class new file mode 100644 index 0000000..8bec72d Binary files /dev/null and b/src/main/java/jp/plusplus/fbs/block/render/RenderPortalWarp.class differ diff --git a/src/main/java/jp/plusplus/fbs/block/render/RenderPortalWarp.java b/src/main/java/jp/plusplus/fbs/block/render/RenderPortalWarp.java new file mode 100644 index 0000000..160a554 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/block/render/RenderPortalWarp.java @@ -0,0 +1,46 @@ +package jp.plusplus.fbs.block.render; + +import cpw.mods.fml.client.registry.ISimpleBlockRenderingHandler; +import jp.plusplus.fbs.FBS; +import net.minecraft.block.Block; +import net.minecraft.client.renderer.RenderBlocks; +import net.minecraft.world.IBlockAccess; + +/** + * Created by plusplus_F on 2015/10/28. + */ +public class RenderPortalWarp implements ISimpleBlockRenderingHandler { + @Override + public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) { + + } + + @Override + public boolean renderWorldBlock(IBlockAccess world, int x, int y, int z, Block block, int modelId, RenderBlocks renderer) { + if(modelId==getRenderId()){ + int meta=world.getBlockMetadata(x,y,z); + if((meta&8)!=0){ + renderer.setRenderBounds(0.5,0,0,0.5,1,1); + } + else{ + renderer.setRenderBounds(0,0,0.5,1,1,0.5); + } + + renderer.renderStandardBlock(block, x,y,z); + + renderer.setRenderBounds(0,0,0,1,1,1); + return true; + } + return false; + } + + @Override + public boolean shouldRender3DInInventory(int modelId) { + return false; + } + + @Override + public int getRenderId() { + return FBS.renderPortalWarpId; + } +} -- cgit v1.2.3