public override bool OnBlockInteractStart(IWorldAccessor world, IPlayer byPlayer, BlockSelection blockSel, ref EnumHandling handling) { handling = EnumHandling.PreventSubsequent; BlockEntity entity = world.BlockAccessor.GetBlockEntity(blockSel.Position); if (entity is BlockEntityResinVessel) { BlockEntityResinVessel vessel = (BlockEntityResinVessel)entity; if (!vessel.Inventory.Empty) { ItemStack stack = vessel.Inventory[0].TakeOutWhole(); if (!byPlayer.InventoryManager.TryGiveItemstack(stack)) { world.SpawnItemEntity(stack, blockSel.Position.ToVec3d().Add(0.5, 0.5, 0.5)); } vessel.UpdateAsset(); return(true); } else { return(false); } } return(false); }
public override void OnBlockRemoved(IWorldAccessor world, BlockPos pos, ref EnumHandling handling) { handling = EnumHandling.PassThrough; BlockEntity entity = world.BlockAccessor.GetBlockEntity(pos); if (entity is BlockEntityResinVessel) { BlockEntityResinVessel vessel = (BlockEntityResinVessel)entity; IPlayer[] players = world.AllOnlinePlayers; for (int i = 0; i < players.Length; i++) { if (players[i].InventoryManager.HasInventory(vessel.Inventory)) { players[i].InventoryManager.CloseInventory(vessel.Inventory); } } } }