NBTExplorer/SubstrateCS/Examples/GiveItem/Program.cs
2012-04-28 20:35:57 -04:00

54 lines
1.7 KiB
C#

using System;
using Substrate;
using Substrate.Core;
// This example will insert x amount of an item into a player's
// inventory in an SMP server (where there is a player directory)
namespace GiveItem
{
class Program
{
static void Main (string[] args)
{
if (args.Length != 4) {
Console.WriteLine("Usage: GiveItem <world> <player> <item-id> <cnt>");
return;
}
string dest = args[0];
string player = args[1];
int itemid = Convert.ToInt32(args[2]);
int count = Convert.ToInt32(args[3]);
// Open the world and grab its player manager
NbtWorld world = NbtWorld.Open(dest);
IPlayerManager pm = world.GetPlayerManager();
// Check that the named player exists
if (!pm.PlayerExists(player)) {
Console.WriteLine("No such player {0}!", player);
return;
}
// Get player (returned object is independent of the playermanager)
Player p = pm.GetPlayer(player);
// Find first slot to place item
for (int i = 0; i < p.Items.Capacity; i++) {
if (!p.Items.ItemExists(i)) {
// Create the item and set its stack count
Item item = new Item(itemid);
item.Count = count;
p.Items[i] = item;
// Don't keep adding items
break;
}
}
// Save the player
pm.SetPlayer(player, p);
}
}
}