From 70c1354a4a96698758a88c032866288f79de6f5a Mon Sep 17 00:00:00 2001 From: Benjamin Culkin Date: Sat, 24 Aug 2024 08:16:37 -0400 Subject: Initial commit --- .../fbs/storage/BlockMealOutletSingle.java | 92 ++++++++++++++++++++++ 1 file changed, 92 insertions(+) create mode 100644 src/main/java/jp/plusplus/fbs/storage/BlockMealOutletSingle.java (limited to 'src/main/java/jp/plusplus/fbs/storage/BlockMealOutletSingle.java') diff --git a/src/main/java/jp/plusplus/fbs/storage/BlockMealOutletSingle.java b/src/main/java/jp/plusplus/fbs/storage/BlockMealOutletSingle.java new file mode 100644 index 0000000..80f39d4 --- /dev/null +++ b/src/main/java/jp/plusplus/fbs/storage/BlockMealOutletSingle.java @@ -0,0 +1,92 @@ +package jp.plusplus.fbs.storage; + +import jp.plusplus.fbs.block.BlockCore; +import jp.plusplus.fbs.item.ItemCore; +import net.minecraft.block.Block; +import net.minecraft.block.material.Material; +import net.minecraft.entity.item.EntityItem; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.tileentity.TileEntity; +import net.minecraft.util.ChatComponentText; +import net.minecraft.util.StatCollector; +import net.minecraft.world.World; + +/** + * Created by plusplus_F on 2016/03/08. + */ +public class BlockMealOutletSingle extends BlockMealInlet { + public BlockMealOutletSingle() { + super(); + setBlockName("mealOutletSingle"); + infoName="mealOutlet"; + } + + @Override + public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) { + return new TileEntityMealOutletSingle(); + } + + @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_) { + TileEntityMealOutletSingle temos=(TileEntityMealOutletSingle)world.getTileEntity(x,y,z); + if(temos==null) return false; + + //リクエストを取り出す + if(temos.hasRequirement()){ + if(!world.isRemote){ + player.entityDropItem(temos.getRequirement().copy(), player.getEyeHeight()); + temos.setRequirement(null); + } + temos.markDirty(); + world.markBlockForUpdate(x,y,z); + return true; + } + + //リクエストを設定する + ItemStack hav=player.getCurrentEquippedItem(); + if(hav!=null && temos.hasFragment()){ + if(!world.isRemote){ + ItemStack f=hav.copy(); + f.stackSize=1; + temos.setRequirement(f); + + hav.stackSize--; + if(hav.stackSize<=0){ + player.inventory.setInventorySlotContents(player.inventory.currentItem, null); + } + + player.addChatComponentMessage(new ChatComponentText("Set requirement : "+f.getDisplayName())); + } + player.inventory.markDirty(); + world.markBlockForUpdate(x, y, z); + return true; + } + + return super.onBlockActivated(world, x, y, z, player, p_149727_6_, p_149727_7_, p_149727_8_, p_149727_9_); + } + + @Override + public void breakBlock(World par1World, int x, int y, int z, Block block, int par6){ + TileEntityMealOutletSingle te = (TileEntityMealOutletSingle)par1World.getTileEntity(x, y, z); + if(te!=null && te.hasRequirement()){ + 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; + ItemStack fragment=te.getRequirement(); + EntityItem entityitem = new EntityItem(par1World, (double)((float)x + f), (double)((float)y + f1), (double)((float)z + f2), new ItemStack(fragment.getItem(), fragment.stackSize, fragment.getItemDamage())); + if (fragment.hasTagCompound()){ + entityitem.getEntityItem().setTagCompound((NBTTagCompound)fragment.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); + } + super.breakBlock(par1World, x, y, z, block, par6); + } + +} -- cgit v1.2.3