summaryrefslogtreecommitdiff
path: root/src/main/java/jp/plusplus/fbs/block
diff options
context:
space:
mode:
authorBenjamin Culkin <scorpress@gmail.com>2024-08-24 08:16:37 -0400
committerBenjamin Culkin <scorpress@gmail.com>2024-08-24 08:16:37 -0400
commit70c1354a4a96698758a88c032866288f79de6f5a (patch)
treeeca51294e84b90a4cb3230bc2c7900469e784184 /src/main/java/jp/plusplus/fbs/block
Initial commitHEADtrunk
Diffstat (limited to 'src/main/java/jp/plusplus/fbs/block')
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockAlchemistTable.classbin0 -> 5761 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockAlchemistTable.java128
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron$BlockPos.classbin0 -> 1117 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron.classbin0 -> 8037 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron.java202
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockBarrier.classbin0 -> 3589 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockBarrier.java99
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockBase.classbin0 -> 4395 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockBase.java98
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockBlock.classbin0 -> 2572 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockBlock.java59
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockBonfire.classbin0 -> 8676 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockBonfire.java241
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockBookshelfDark.classbin0 -> 6274 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockBookshelfDark.java136
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockCharm.classbin0 -> 3451 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockCharm.java93
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockCore.classbin0 -> 5359 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockCore.java145
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockCropLavender.classbin0 -> 1969 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockCropLavender.java51
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockCropRedLily.classbin0 -> 3730 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockCropRedLily.java103
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockExtractingFurnace.classbin0 -> 9369 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockExtractingFurnace.java225
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockFBSLeaves.classbin0 -> 4143 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockFBSLeaves.java121
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockFBSWood.classbin0 -> 1028 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockFBSWood.java19
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockFBSWorkbench.classbin0 -> 5792 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockFBSWorkbench.java134
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockFallenLeaves.classbin0 -> 3266 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockFallenLeaves.java57
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockFillingTable.classbin0 -> 5467 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockFillingTable.java105
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockGrass.classbin0 -> 5255 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockGrass.java106
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockHerb.classbin0 -> 9775 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockHerb.java213
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockMagicCore.classbin0 -> 6325 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockMagicCore.java151
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockMirror.classbin0 -> 5140 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockMirror.java134
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockMushroom.classbin0 -> 4009 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockMushroom.java103
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockOre.classbin0 -> 1720 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockOre.java47
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockPortalAutumn.classbin0 -> 4027 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockPortalAutumn.java96
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockPortalWarp.classbin0 -> 8993 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockPortalWarp.java210
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockSchoolTable.classbin0 -> 2147 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/BlockSchoolTable.java54
-rw-r--r--src/main/java/jp/plusplus/fbs/block/IMeta.classbin0 -> 166 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/IMeta.java8
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyCauldron.classbin0 -> 3778 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyCauldron.java157
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyTable.classbin0 -> 4702 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyTable.java210
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelBonfire.classbin0 -> 2772 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelBonfire.java98
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelFork.classbin0 -> 2323 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelFork.java82
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelHerb.classbin0 -> 3205 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelHerb.java124
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelKnife.classbin0 -> 2185 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelKnife.java74
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelMushroom.classbin0 -> 2748 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelMushroom.java96
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelSchoolTable.classbin0 -> 3311 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelSchoolTable.java133
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelSpoon.classbin0 -> 2614 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/model/ModelSpoon.java98
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyCauldron.classbin0 -> 5760 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyCauldron.java188
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyTable.classbin0 -> 3330 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyTable.java93
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderBarrier.classbin0 -> 2918 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderBarrier.java106
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderCharm.classbin0 -> 2041 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderCharm.java52
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderDecorations.classbin0 -> 5180 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderDecorations.java198
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderDirectional.classbin0 -> 2750 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderDirectional.java99
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderHarvestable.classbin0 -> 6538 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderHarvestable.java191
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderMirror.classbin0 -> 2615 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderMirror.java76
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderPortalWarp.classbin0 -> 1693 bytes
-rw-r--r--src/main/java/jp/plusplus/fbs/block/render/RenderPortalWarp.java46
91 files changed, 5259 insertions, 0 deletions
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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockAlchemistTable.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron$BlockPos.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockAlchemyCauldron.class
Binary files 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<BlockPos> getBlocks(World w, int x, int y, int z){
+ ArrayList<BlockPos> pos=new ArrayList<BlockPos>();
+ 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<BlockPos> 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<BlockPos> 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<BlockPos> 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockBarrier.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockBase.class
Binary files 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<infoRow;i++){
+ list.add(I18n.format("info.fbs."+infoName+"."+i));
+ }
+ }
+ }
+
+ @Override
+ public void breakBlock(World par1World, int x, int y, int z, Block block, int par6){
+ TileEntity tileentity = par1World.getTileEntity(x, y, z);
+
+ if(tileentity==null){
+ super.breakBlock(par1World, 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(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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockBlock.class
Binary files 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;i<NAMES.length;i++){
+ icons[i]=iconRegister.registerIcon(getTextureName()+NAMES[i]);
+ }
+ }
+ @Override
+ @SideOnly(Side.CLIENT)
+ public IIcon getIcon(int side, int meta) {
+ return icons[meta];
+ }
+
+}
diff --git a/src/main/java/jp/plusplus/fbs/block/BlockBonfire.class b/src/main/java/jp/plusplus/fbs/block/BlockBonfire.class
new file mode 100644
index 0000000..3767ee7
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockBonfire.class
Binary files differ
diff --git a/src/main/java/jp/plusplus/fbs/block/BlockBonfire.java b/src/main/java/jp/plusplus/fbs/block/BlockBonfire.java
new file mode 100644
index 0000000..e5e5074
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockBonfire.java
@@ -0,0 +1,241 @@
+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.Registry;
+import jp.plusplus.fbs.tileentity.TileEntityForRender;
+import jp.plusplus.fbs.tileentity.TileEntityMagicCore;
+import net.minecraft.block.*;
+import net.minecraft.block.material.Material;
+import net.minecraft.entity.Entity;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
+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 java.util.Random;
+
+import static net.minecraftforge.common.util.ForgeDirection.*;
+import static net.minecraftforge.common.util.ForgeDirection.DOWN;
+import static net.minecraftforge.common.util.ForgeDirection.NORTH;
+
+/**
+ * Created by plusplus_F on 2015/10/19.
+ * 焚き火ブロック
+ */
+public class BlockBonfire extends BlockBase implements ITileEntityProvider {
+ public BlockBonfire() {
+ super(Material.rock);
+ setBlockName("bonfire");
+ setTickRandomly(true);
+ setHardness(0.8f);
+ setResistance(1.5f);
+ setBlockTextureName("planks_oak");
+ }
+
+ @Override
+ public int getLightValue(IBlockAccess world, int x, int y, int z) {
+ return world.getBlockMetadata(x,y,z)>0?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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockBookshelfDark.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockCharm.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockCore.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockCropLavender.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockCropRedLily.class
Binary files 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<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
+ //ArrayList<ItemStack> ret = super.getDrops(world, x, y, z, metadata, fortune);
+ ArrayList<ItemStack> ret=new ArrayList<ItemStack>();
+ 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockExtractingFurnace.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockFBSLeaves.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockFBSWood.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockFBSWorkbench.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockFallenLeaves.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockFillingTable.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockGrass.class
Binary files 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<ItemStack> getHarvestItems(World world, int x, int y, int z) {
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
+
+ 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<ItemStack> harvest(World world, int x, int y, int z, Random rand) {
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
+ ArrayList<ItemStack> 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockHerb.class
Binary files 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<ItemStack> 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<ItemStack> getHarvestItems(World world, int x, int y, int z) {
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
+ 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<ItemStack> harvest(World world, int x, int y, int z, Random rand, EntityPlayer player) {
+ return harvest(world, x, y, z, rand);
+ }
+
+ @Override
+ public ArrayList<ItemStack> harvest(World world, int x, int y, int z, Random rand) {
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
+ ArrayList<ItemStack> 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockMagicCore.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockMirror.class
Binary files 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<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune){
+ if((metadata&8)!=0) return new ArrayList<ItemStack>();
+ 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockMushroom.class
Binary files 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<ItemStack> getHarvestItems(World world, int x, int y, int z) {
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
+ 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<ItemStack> harvest(World world, int x, int y, int z, Random rand) {
+ ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
+ ArrayList<ItemStack> 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockOre.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockPortalAutumn.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockPortalWarp.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/BlockSchoolTable.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/IMeta.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyCauldron.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/model/ModelAlchemyTable.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/model/ModelBonfire.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/model/ModelFork.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/model/ModelHerb.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/model/ModelKnife.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/model/ModelMushroom.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/model/ModelSchoolTable.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/model/ModelSpoon.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyCauldron.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/render/RenderAlchemyTable.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/render/RenderBarrier.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/render/RenderCharm.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/render/RenderDecorations.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/render/RenderDirectional.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/render/RenderHarvestable.class
Binary files 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<herbs.length;i++) herbs[i]=new ModelHerb(i);
+
+ mushes=new ModelMushroom[3];
+ for(int i=0;i<mushes.length;i++) mushes[i]=new ModelMushroom(i);
+ }
+
+ @Override
+ public void renderInventoryBlock(Block block, int metadata, int modelId, RenderBlocks renderer) {
+ if(modelId!=getRenderId()) return;
+
+ GL11.glPushMatrix();
+ GL11.glTranslatef(0.5f, 1.75f, 0.5f);
+ GL11.glRotatef(180, 0, 0, 1);
+
+ float scale = 0.0625f;
+ scale*=1.25f;
+ GL11.glScalef(scale, scale, scale);
+
+ if(block==BlockCore.harvestableHerb){
+ bindTexture(rlHerb);
+ herbs[metadata].render(null, 0, 0, 0, 0, 0, 1.0f);
+ herbs[metadata].renderHerbs(1.0f);
+ }
+ else if(block==BlockCore.harvestableMushroom){
+ bindTexture(rlMushroom);
+ mushes[metadata].render(null, 0, 0, 0, 0, 0, 1.0f);
+ mushes[metadata].renderMush(1.0f);
+ }
+ else if(block==BlockCore.harvestableGrass){
+ GL11.glPopMatrix();
+ GL11.glPushMatrix();
+ Tessellator tessellator = Tessellator.instance;
+ IIcon p_147765_1_=block.getIcon(0, 0);
+
+ double p_147765_8_=0.8;
+ double d3 = (double)p_147765_1_.getMinU();
+ double d4 = (double)p_147765_1_.getMinV();
+ double d5 = (double)p_147765_1_.getMaxU();
+ double d6 = (double)p_147765_1_.getMaxV();
+ double d7 = 0.45D * (double)p_147765_8_;
+ double d8 = 0 + 0.5D - d7;
+ double d9 = 0 + 0.5D + d7;
+ double d10 = 0 + 0.5D - d7;
+ double d11 = 0 + 0.5D + d7;
+ tessellator.startDrawingQuads();
+ tessellator.addVertexWithUV(d8, (double)p_147765_8_, d10, d3, d4);
+ tessellator.addVertexWithUV(d8, 0.0D, d10, d3, d6);
+ tessellator.addVertexWithUV(d9, 0.0D, d11, d5, d6);
+ tessellator.addVertexWithUV(d9, (double)p_147765_8_, d11, d5, d4);
+ tessellator.addVertexWithUV(d9, (double)p_147765_8_, d11, d3, d4);
+ tessellator.addVertexWithUV(d9, 0.0D, d11, d3, d6);
+ tessellator.addVertexWithUV(d8, 0.0D, d10, d5, d6);
+ tessellator.addVertexWithUV(d8, (double)p_147765_8_, d10, d5, d4);
+ tessellator.addVertexWithUV(d8, (double)p_147765_8_, d11, d3, d4);
+ tessellator.addVertexWithUV(d8, 0.0D, d11, d3, d6);
+ tessellator.addVertexWithUV(d9, 0.0D, d10, d5, d6);
+ tessellator.addVertexWithUV(d9, (double)p_147765_8_, d10, d5, d4);
+ tessellator.addVertexWithUV(d9, (double)p_147765_8_, d10, d3, d4);
+ tessellator.addVertexWithUV(d9, 0.0D, d10, d3, d6);
+ tessellator.addVertexWithUV(d8, 0.0D, d11, d5, d6);
+ tessellator.addVertexWithUV(d8, (double)p_147765_8_, d11, d5, d4);
+ tessellator.draw();
+ }
+ 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==getRenderId()){
+ if(block==BlockCore.harvestableGrass) {
+ Tessellator tessellator = Tessellator.instance;
+ tessellator.setBrightness(block.getMixedBrightnessForBlock(world, x, y, z));
+ int l = block.colorMultiplier(world, x, y, z);
+ float f = (float) (l >> 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/render/RenderMirror.class
Binary files 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
--- /dev/null
+++ b/src/main/java/jp/plusplus/fbs/block/render/RenderPortalWarp.class
Binary files 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;
+ }
+}