123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 |
- //
- // IJMinecraftLevel.m
- // InsideJob
- //
- // Created by Adam Preble on 10/7/10.
- // Copyright 2010 Adam Preble. All rights reserved.
- //
- #import "IJMinecraftLevel.h"
- #import "IJInventoryItem.h"
- @implementation IJMinecraftLevel
- - (NBTContainer *)containerWithName:(NSString *)theName inArray:(NSArray *)array
- {
- for (NBTContainer *container in array)
- {
- if ([container.name isEqual:theName])
- return container;
- }
- return nil;
- }
- - (NBTContainer *)inventoryList
- {
- // Inventory is found in:
- // - compound "Data"
- // - compound "Player"
- // - list "Inventory"
- // *
- NBTContainer *dataCompound = [self childNamed:@"Data"];
- NBTContainer *playerCompound = [dataCompound childNamed:@"Player"];
- NBTContainer *inventoryList = [playerCompound childNamed:@"Inventory"];
- // TODO: Check for error conditions here.
- return inventoryList;
- }
- - (NSArray *)inventory
- {
- NSMutableArray *output = [NSMutableArray array];
- for (NSArray *listItems in [self inventoryList].children)
- {
- IJInventoryItem *invItem = [[IJInventoryItem alloc] init];
-
- invItem.itemId = [[self containerWithName:@"id" inArray:listItems].numberValue shortValue];
- invItem.count = [[self containerWithName:@"Count" inArray:listItems].numberValue unsignedCharValue];
- invItem.damage = [[self containerWithName:@"Damage" inArray:listItems].numberValue shortValue];
- invItem.slot = [[self containerWithName:@"Slot" inArray:listItems].numberValue unsignedCharValue];
- [output addObject:invItem];
- [invItem release];
- }
- return output;
- }
- - (void)setInventory:(NSArray *)newInventory
- {
- NSMutableArray *newChildren = [NSMutableArray array];
- NBTContainer *inventoryList = [self inventoryList];
- for (IJInventoryItem *invItem in newInventory)
- {
- NSArray *listItems = [NSArray arrayWithObjects:
- [NBTContainer containerWithName:@"id" type:NBTTypeShort numberValue:[NSNumber numberWithShort:invItem.itemId]],
- [NBTContainer containerWithName:@"Damage" type:NBTTypeShort numberValue:[NSNumber numberWithShort:invItem.damage]],
- [NBTContainer containerWithName:@"Count" type:NBTTypeByte numberValue:[NSNumber numberWithShort:invItem.count]],
- [NBTContainer containerWithName:@"Slot" type:NBTTypeByte numberValue:[NSNumber numberWithShort:invItem.slot]],
- nil];
- [newChildren addObject:listItems];
- }
- inventoryList.children = newChildren;
- }
- @end
|