Added netherite blocks and items

This commit is contained in:
Dylan K. Taylor 2022-07-14 20:39:09 +01:00
parent d4f4fda442
commit ba2baba7cc
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D
17 changed files with 119 additions and 19 deletions

View File

@ -504,6 +504,10 @@ class Block{
return 64;
}
public function isFireProofAsItem() : bool{
return false;
}
/**
* Returns the chance that the block will catch fire from nearby fire sources. Higher values lead to faster catching
* fire.

View File

@ -692,6 +692,7 @@ final class BlockTypeIds{
public const HANGING_ROOTS = 10665;
public const CARTOGRAPHY_TABLE = 10666;
public const SMITHING_TABLE = 10667;
public const NETHERITE = 10668;
public const FIRST_UNUSED_BLOCK_ID = 10668;
public const FIRST_UNUSED_BLOCK_ID = 10669;
}

View File

@ -496,6 +496,7 @@ use function mb_strtolower;
* @method static Wall MUD_BRICK_WALL()
* @method static MushroomStem MUSHROOM_STEM()
* @method static Mycelium MYCELIUM()
* @method static Opaque NETHERITE()
* @method static Netherrack NETHERRACK()
* @method static Opaque NETHER_BRICKS()
* @method static Fence NETHER_BRICK_FENCE()
@ -1380,6 +1381,10 @@ final class VanillaBlocks{
$slabBreakInfo = new BreakInfo(2.0, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 30.0);
self::register("ancient_debris", new Opaque(new BID(Ids::ANCIENT_DEBRIS), "Ancient Debris", new BreakInfo(30, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 3600.0)));
$netheriteBreakInfo = new BreakInfo(50, ToolType::PICKAXE, ToolTier::DIAMOND()->getHarvestLevel(), 3600.0);
self::register("netherite", new class(new BID(Ids::NETHERITE), "Netherite Block", $netheriteBreakInfo) extends Opaque{
public function isFireProofAsItem() : bool{ return true; }
});
$basaltBreakInfo = new BreakInfo(1.25, ToolType::PICKAXE, ToolTier::WOOD()->getHarvestLevel(), 21.0);
self::register("basalt", new SimplePillar(new BID(Ids::BASALT), "Basalt", $basaltBreakInfo));

View File

@ -1033,6 +1033,7 @@ final class BlockObjectToBlockStateSerializer implements BlockStateSerializer{
$this->map(Blocks::MUSHROOM_STEM(), fn() => Writer::create(Ids::BROWN_MUSHROOM_BLOCK)
->writeInt(StateNames::HUGE_MUSHROOM_BITS, BlockLegacyMetadata::MUSHROOM_BLOCK_STEM));
$this->mapSimple(Blocks::MYCELIUM(), Ids::MYCELIUM);
$this->mapSimple(Blocks::NETHERITE(), Ids::NETHERITE_BLOCK);
$this->mapSimple(Blocks::NETHERRACK(), Ids::NETHERRACK);
$this->mapSimple(Blocks::NETHER_BRICKS(), Ids::NETHER_BRICK);
$this->mapSimple(Blocks::NETHER_BRICK_FENCE(), Ids::NETHER_BRICK_FENCE);

View File

@ -840,6 +840,7 @@ final class BlockStateToBlockObjectDeserializer implements BlockStateDeserialize
->setAge($in->readBoundedInt(StateNames::AGE, 0, 3));
});
$this->map(Ids::NETHER_WART_BLOCK, fn() => Blocks::NETHER_WART_BLOCK());
$this->map(Ids::NETHERITE_BLOCK, fn() => Blocks::NETHERITE());
$this->map(Ids::NETHERRACK, fn() => Blocks::NETHERRACK());
$this->map(Ids::NETHERREACTOR, fn() => Blocks::NETHER_REACTOR_CORE());
$this->mapStairs(Ids::NORMAL_STONE_STAIRS, fn() => Blocks::STONE_STAIRS());

View File

@ -458,17 +458,17 @@ final class ItemDeserializer{
$this->map(Ids::NETHER_STAR, fn() => Items::NETHER_STAR());
$this->map(Ids::NETHER_WART, fn() => Blocks::NETHER_WART()->asItem());
$this->map(Ids::NETHERBRICK, fn() => Items::NETHER_BRICK());
//TODO: minecraft:netherite_axe
//TODO: minecraft:netherite_boots
//TODO: minecraft:netherite_chestplate
//TODO: minecraft:netherite_helmet
//TODO: minecraft:netherite_hoe
//TODO: minecraft:netherite_ingot
//TODO: minecraft:netherite_leggings
//TODO: minecraft:netherite_pickaxe
//TODO: minecraft:netherite_scrap
//TODO: minecraft:netherite_shovel
//TODO: minecraft:netherite_sword
$this->map(Ids::NETHERITE_AXE, fn() => Items::NETHERITE_AXE());
$this->map(Ids::NETHERITE_BOOTS, fn() => Items::NETHERITE_BOOTS());
$this->map(Ids::NETHERITE_CHESTPLATE, fn() => Items::NETHERITE_CHESTPLATE());
$this->map(Ids::NETHERITE_HELMET, fn() => Items::NETHERITE_HELMET());
$this->map(Ids::NETHERITE_HOE, fn() => Items::NETHERITE_HOE());
$this->map(Ids::NETHERITE_INGOT, fn() => Items::NETHERITE_INGOT());
$this->map(Ids::NETHERITE_LEGGINGS, fn() => Items::NETHERITE_LEGGINGS());
$this->map(Ids::NETHERITE_PICKAXE, fn() => Items::NETHERITE_PICKAXE());
$this->map(Ids::NETHERITE_SCRAP, fn() => Items::NETHERITE_SCRAP());
$this->map(Ids::NETHERITE_SHOVEL, fn() => Items::NETHERITE_SHOVEL());
$this->map(Ids::NETHERITE_SWORD, fn() => Items::NETHERITE_SWORD());
//TODO: minecraft:npc_spawn_egg
$this->map(Ids::OAK_BOAT, fn() => Items::OAK_BOAT());
$this->map(Ids::OAK_SIGN, fn() => Blocks::OAK_SIGN()->asItem());

View File

@ -436,6 +436,17 @@ final class ItemSerializer{
$this->map(Items::MINECART(), self::id(Ids::MINECART));
$this->map(Items::MUSHROOM_STEW(), self::id(Ids::MUSHROOM_STEW));
$this->map(Items::NAUTILUS_SHELL(), self::id(Ids::NAUTILUS_SHELL));
$this->map(Items::NETHERITE_AXE(), self::id(Ids::NETHERITE_AXE));
$this->map(Items::NETHERITE_BOOTS(), self::id(Ids::NETHERITE_BOOTS));
$this->map(Items::NETHERITE_CHESTPLATE(), self::id(Ids::NETHERITE_CHESTPLATE));
$this->map(Items::NETHERITE_HELMET(), self::id(Ids::NETHERITE_HELMET));
$this->map(Items::NETHERITE_HOE(), self::id(Ids::NETHERITE_HOE));
$this->map(Items::NETHERITE_INGOT(), self::id(Ids::NETHERITE_INGOT));
$this->map(Items::NETHERITE_LEGGINGS(), self::id(Ids::NETHERITE_LEGGINGS));
$this->map(Items::NETHERITE_PICKAXE(), self::id(Ids::NETHERITE_PICKAXE));
$this->map(Items::NETHERITE_SCRAP(), self::id(Ids::NETHERITE_SCRAP));
$this->map(Items::NETHERITE_SHOVEL(), self::id(Ids::NETHERITE_SHOVEL));
$this->map(Items::NETHERITE_SWORD(), self::id(Ids::NETHERITE_SWORD));
$this->map(Items::NETHER_BRICK(), self::id(Ids::NETHERBRICK));
$this->map(Items::NETHER_QUARTZ(), self::id(Ids::QUARTZ));
$this->map(Items::NETHER_STAR(), self::id(Ids::NETHER_STAR));

View File

@ -200,6 +200,10 @@ class ItemEntity extends Entity{
return $this->item;
}
public function isFireProof() : bool{
return $this->item->isFireProof();
}
public function canCollideWith(Entity $entity) : bool{
return false;
}

View File

@ -68,6 +68,10 @@ class Armor extends Durable{
return 1;
}
public function isFireProof() : bool{
return $this->armorInfo->isFireProof();
}
/**
* Returns the dyed colour of this armour piece. This generally only applies to leather armour.
*/

View File

@ -27,7 +27,9 @@ class ArmorTypeInfo{
public function __construct(
private int $defensePoints,
private int $maxDurability,
private int $armorSlot
private int $armorSlot,
private int $toughness = 0,
private bool $fireProof = false
){}
public function getDefensePoints() : int{
@ -41,4 +43,12 @@ class ArmorTypeInfo{
public function getArmorSlot() : int{
return $this->armorSlot;
}
public function getToughness() : int{
return $this->toughness;
}
public function isFireProof() : bool{
return $this->fireProof;
}
}

View File

@ -467,6 +467,13 @@ class Item implements \JsonSerializable{
return $item;
}
/**
* Returns whether this item can survive being dropped into lava, or fire.
*/
public function isFireProof() : bool{
return false;
}
/**
* Returns how many points of damage this item will deal to an entity when used as a weapon.
*/

View File

@ -63,6 +63,10 @@ final class ItemBlock extends Item{
return $this->getBlock()->getFuelTime();
}
public function isFireProof() : bool{
return $this->getBlock()->isFireProofAsItem();
}
public function getMaxStackSize() : int{
return $this->getBlock()->getMaxStackSize();
}

View File

@ -293,6 +293,7 @@ final class ItemTypeIds{
public const RAW_IRON = 20254;
public const RAW_GOLD = 20255;
public const SPYGLASS = 20256;
public const NETHERITE_SCRAP = 20257;
public const FIRST_UNUSED_ITEM_ID = 20257;
public const FIRST_UNUSED_ITEM_ID = 20258;
}

View File

@ -780,6 +780,7 @@ final class StringToItemParser extends StringToTParser{
$result->registerBlock("nether_wart", fn() => Blocks::NETHER_WART());
$result->registerBlock("nether_wart_block", fn() => Blocks::NETHER_WART_BLOCK());
$result->registerBlock("nether_wart_plant", fn() => Blocks::NETHER_WART());
$result->registerBlock("netherite_block", fn() => Blocks::NETHERITE());
$result->registerBlock("netherrack", fn() => Blocks::NETHERRACK());
$result->registerBlock("netherreactor", fn() => Blocks::NETHER_REACTOR_CORE());
$result->registerBlock("normal_stone_stairs", fn() => Blocks::STONE_STAIRS());
@ -1325,6 +1326,17 @@ final class StringToItemParser extends StringToTParser{
$result->register("nether_quartz", fn() => Items::NETHER_QUARTZ());
$result->register("nether_star", fn() => Items::NETHER_STAR());
$result->register("netherbrick", fn() => Items::NETHER_BRICK());
$result->register("netherite_axe", fn() => Items::NETHERITE_AXE());
$result->register("netherite_boots", fn() => Items::NETHERITE_BOOTS());
$result->register("netherite_chestplate", fn() => Items::NETHERITE_CHESTPLATE());
$result->register("netherite_helmet", fn() => Items::NETHERITE_HELMET());
$result->register("netherite_hoe", fn() => Items::NETHERITE_HOE());
$result->register("netherite_ingot", fn() => Items::NETHERITE_INGOT());
$result->register("netherite_leggings", fn() => Items::NETHERITE_LEGGINGS());
$result->register("netherite_pickaxe", fn() => Items::NETHERITE_PICKAXE());
$result->register("netherite_scrap", fn() => Items::NETHERITE_SCRAP());
$result->register("netherite_shovel", fn() => Items::NETHERITE_SHOVEL());
$result->register("netherite_sword", fn() => Items::NETHERITE_SWORD());
$result->register("netherstar", fn() => Items::NETHER_STAR());
$result->register("night_vision_potion", fn() => Items::POTION()->setType(PotionType::NIGHT_VISION()));
$result->register("night_vision_splash_potion", fn() => Items::SPLASH_POTION()->setType(PotionType::NIGHT_VISION()));

View File

@ -50,4 +50,8 @@ abstract class TieredTool extends Tool{
return 0;
}
public function isFireProof() : bool{
return $this->tier->equals(ToolTier::NETHERITE());
}
}

View File

@ -34,6 +34,7 @@ use pocketmine\utils\EnumTrait;
* @method static ToolTier DIAMOND()
* @method static ToolTier GOLD()
* @method static ToolTier IRON()
* @method static ToolTier NETHERITE()
* @method static ToolTier STONE()
* @method static ToolTier WOOD()
*/
@ -48,7 +49,8 @@ final class ToolTier{
new self("gold", 2, 33, 5, 12),
new self("stone", 3, 132, 6, 4),
new self("iron", 4, 251, 7, 6),
new self("diamond", 5, 1562, 8, 8)
new self("diamond", 5, 1562, 8, 8),
new self("netherite", 6, 2032, 9, 9)
);
}

View File

@ -210,6 +210,17 @@ use pocketmine\world\World;
* @method static Minecart MINECART()
* @method static MushroomStew MUSHROOM_STEW()
* @method static Item NAUTILUS_SHELL()
* @method static Axe NETHERITE_AXE()
* @method static Armor NETHERITE_BOOTS()
* @method static Armor NETHERITE_CHESTPLATE()
* @method static Armor NETHERITE_HELMET()
* @method static Hoe NETHERITE_HOE()
* @method static Item NETHERITE_INGOT()
* @method static Armor NETHERITE_LEGGINGS()
* @method static Pickaxe NETHERITE_PICKAXE()
* @method static Item NETHERITE_SCRAP()
* @method static Shovel NETHERITE_SHOVEL()
* @method static Sword NETHERITE_SWORD()
* @method static Item NETHER_BRICK()
* @method static Item NETHER_QUARTZ()
* @method static Item NETHER_STAR()
@ -446,6 +457,12 @@ final class VanillaItems{
self::register("nether_brick", new Item(new IID(Ids::NETHER_BRICK), "Nether Brick"));
self::register("nether_quartz", new Item(new IID(Ids::NETHER_QUARTZ), "Nether Quartz"));
self::register("nether_star", new Item(new IID(Ids::NETHER_STAR), "Nether Star"));
self::register("netherite_ingot", new class(new IID(Ids::NETHERITE_INGOT), "Netherite Ingot") extends Item{
public function isFireProof() : bool{ return true; }
});
self::register("netherite_scrap", new class(new IID(Ids::NETHERITE_SCRAP), "Netherite Scrap") extends Item{
public function isFireProof() : bool{ return true; }
});
self::register("oak_sign", new ItemBlockWallOrFloor(new IID(Ids::OAK_SIGN), Blocks::OAK_SIGN(), Blocks::OAK_WALL_SIGN()));
self::register("painting", new PaintingItem(new IID(Ids::PAINTING), "Painting"));
self::register("paper", new Item(new IID(Ids::PAPER), "Paper"));
@ -544,51 +561,63 @@ final class VanillaItems{
self::register("diamond_axe", new Axe(new IID(Ids::DIAMOND_AXE), "Diamond Axe", ToolTier::DIAMOND()));
self::register("golden_axe", new Axe(new IID(Ids::GOLDEN_AXE), "Golden Axe", ToolTier::GOLD()));
self::register("iron_axe", new Axe(new IID(Ids::IRON_AXE), "Iron Axe", ToolTier::IRON()));
self::register("netherite_axe", new Axe(new IID(Ids::NETHERITE_AXE), "Netherite Axe", ToolTier::NETHERITE()));
self::register("stone_axe", new Axe(new IID(Ids::STONE_AXE), "Stone Axe", ToolTier::STONE()));
self::register("wooden_axe", new Axe(new IID(Ids::WOODEN_AXE), "Wooden Axe", ToolTier::WOOD()));
self::register("diamond_hoe", new Hoe(new IID(Ids::DIAMOND_HOE), "Diamond Hoe", ToolTier::DIAMOND()));
self::register("golden_hoe", new Hoe(new IID(Ids::GOLDEN_HOE), "Golden Hoe", ToolTier::GOLD()));
self::register("iron_hoe", new Hoe(new IID(Ids::IRON_HOE), "Iron Hoe", ToolTier::IRON()));
self::register("netherite_hoe", new Hoe(new IID(Ids::NETHERITE_HOE), "Netherite Hoe", ToolTier::NETHERITE()));
self::register("stone_hoe", new Hoe(new IID(Ids::STONE_HOE), "Stone Hoe", ToolTier::STONE()));
self::register("wooden_hoe", new Hoe(new IID(Ids::WOODEN_HOE), "Wooden Hoe", ToolTier::WOOD()));
self::register("diamond_pickaxe", new Pickaxe(new IID(Ids::DIAMOND_PICKAXE), "Diamond Pickaxe", ToolTier::DIAMOND()));
self::register("golden_pickaxe", new Pickaxe(new IID(Ids::GOLDEN_PICKAXE), "Golden Pickaxe", ToolTier::GOLD()));
self::register("iron_pickaxe", new Pickaxe(new IID(Ids::IRON_PICKAXE), "Iron Pickaxe", ToolTier::IRON()));
self::register("netherite_pickaxe", new Pickaxe(new IID(Ids::NETHERITE_PICKAXE), "Netherite Pickaxe", ToolTier::NETHERITE()));
self::register("stone_pickaxe", new Pickaxe(new IID(Ids::STONE_PICKAXE), "Stone Pickaxe", ToolTier::STONE()));
self::register("wooden_pickaxe", new Pickaxe(new IID(Ids::WOODEN_PICKAXE), "Wooden Pickaxe", ToolTier::WOOD()));
self::register("diamond_shovel", new Shovel(new IID(Ids::DIAMOND_SHOVEL), "Diamond Shovel", ToolTier::DIAMOND()));
self::register("golden_shovel", new Shovel(new IID(Ids::GOLDEN_SHOVEL), "Golden Shovel", ToolTier::GOLD()));
self::register("iron_shovel", new Shovel(new IID(Ids::IRON_SHOVEL), "Iron Shovel", ToolTier::IRON()));
self::register("netherite_shovel", new Shovel(new IID(Ids::NETHERITE_SHOVEL), "Netherite Shovel", ToolTier::NETHERITE()));
self::register("stone_shovel", new Shovel(new IID(Ids::STONE_SHOVEL), "Stone Shovel", ToolTier::STONE()));
self::register("wooden_shovel", new Shovel(new IID(Ids::WOODEN_SHOVEL), "Wooden Shovel", ToolTier::WOOD()));
self::register("diamond_sword", new Sword(new IID(Ids::DIAMOND_SWORD), "Diamond Sword", ToolTier::DIAMOND()));
self::register("golden_sword", new Sword(new IID(Ids::GOLDEN_SWORD), "Golden Sword", ToolTier::GOLD()));
self::register("iron_sword", new Sword(new IID(Ids::IRON_SWORD), "Iron Sword", ToolTier::IRON()));
self::register("netherite_sword", new Sword(new IID(Ids::NETHERITE_SWORD), "Netherite Sword", ToolTier::NETHERITE()));
self::register("stone_sword", new Sword(new IID(Ids::STONE_SWORD), "Stone Sword", ToolTier::STONE()));
self::register("wooden_sword", new Sword(new IID(Ids::WOODEN_SWORD), "Wooden Sword", ToolTier::WOOD()));
}
private static function registerArmorItems() : void{
self::register("chainmail_boots", new Armor(new IID(Ids::CHAINMAIL_BOOTS), "Chainmail Boots", new ArmorTypeInfo(1, 196, ArmorInventory::SLOT_FEET)));
self::register("diamond_boots", new Armor(new IID(Ids::DIAMOND_BOOTS), "Diamond Boots", new ArmorTypeInfo(3, 430, ArmorInventory::SLOT_FEET)));
self::register("diamond_boots", new Armor(new IID(Ids::DIAMOND_BOOTS), "Diamond Boots", new ArmorTypeInfo(3, 430, ArmorInventory::SLOT_FEET, 2)));
self::register("golden_boots", new Armor(new IID(Ids::GOLDEN_BOOTS), "Golden Boots", new ArmorTypeInfo(1, 92, ArmorInventory::SLOT_FEET)));
self::register("iron_boots", new Armor(new IID(Ids::IRON_BOOTS), "Iron Boots", new ArmorTypeInfo(2, 196, ArmorInventory::SLOT_FEET)));
self::register("leather_boots", new Armor(new IID(Ids::LEATHER_BOOTS), "Leather Boots", new ArmorTypeInfo(1, 66, ArmorInventory::SLOT_FEET)));
self::register("netherite_boots", new Armor(new IID(Ids::NETHERITE_BOOTS), "Netherite Boots", new ArmorTypeInfo(3, 482, ArmorInventory::SLOT_FEET, 3, true)));
self::register("chainmail_chestplate", new Armor(new IID(Ids::CHAINMAIL_CHESTPLATE), "Chainmail Chestplate", new ArmorTypeInfo(5, 241, ArmorInventory::SLOT_CHEST)));
self::register("diamond_chestplate", new Armor(new IID(Ids::DIAMOND_CHESTPLATE), "Diamond Chestplate", new ArmorTypeInfo(8, 529, ArmorInventory::SLOT_CHEST)));
self::register("diamond_chestplate", new Armor(new IID(Ids::DIAMOND_CHESTPLATE), "Diamond Chestplate", new ArmorTypeInfo(8, 529, ArmorInventory::SLOT_CHEST, 2)));
self::register("golden_chestplate", new Armor(new IID(Ids::GOLDEN_CHESTPLATE), "Golden Chestplate", new ArmorTypeInfo(5, 113, ArmorInventory::SLOT_CHEST)));
self::register("iron_chestplate", new Armor(new IID(Ids::IRON_CHESTPLATE), "Iron Chestplate", new ArmorTypeInfo(6, 241, ArmorInventory::SLOT_CHEST)));
self::register("leather_tunic", new Armor(new IID(Ids::LEATHER_TUNIC), "Leather Tunic", new ArmorTypeInfo(3, 81, ArmorInventory::SLOT_CHEST)));
self::register("netherite_chestplate", new Armor(new IID(Ids::NETHERITE_CHESTPLATE), "Netherite Chestplate", new ArmorTypeInfo(8, 593, ArmorInventory::SLOT_CHEST, 3, true)));
self::register("chainmail_helmet", new Armor(new IID(Ids::CHAINMAIL_HELMET), "Chainmail Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD)));
self::register("diamond_helmet", new Armor(new IID(Ids::DIAMOND_HELMET), "Diamond Helmet", new ArmorTypeInfo(3, 364, ArmorInventory::SLOT_HEAD)));
self::register("diamond_helmet", new Armor(new IID(Ids::DIAMOND_HELMET), "Diamond Helmet", new ArmorTypeInfo(3, 364, ArmorInventory::SLOT_HEAD, 2)));
self::register("golden_helmet", new Armor(new IID(Ids::GOLDEN_HELMET), "Golden Helmet", new ArmorTypeInfo(2, 78, ArmorInventory::SLOT_HEAD)));
self::register("iron_helmet", new Armor(new IID(Ids::IRON_HELMET), "Iron Helmet", new ArmorTypeInfo(2, 166, ArmorInventory::SLOT_HEAD)));
self::register("leather_cap", new Armor(new IID(Ids::LEATHER_CAP), "Leather Cap", new ArmorTypeInfo(1, 56, ArmorInventory::SLOT_HEAD)));
self::register("netherite_helmet", new Armor(new IID(Ids::NETHERITE_HELMET), "Netherite Helmet", new ArmorTypeInfo(3, 408, ArmorInventory::SLOT_HEAD, 3, true)));
self::register("chainmail_leggings", new Armor(new IID(Ids::CHAINMAIL_LEGGINGS), "Chainmail Leggings", new ArmorTypeInfo(4, 226, ArmorInventory::SLOT_LEGS)));
self::register("diamond_leggings", new Armor(new IID(Ids::DIAMOND_LEGGINGS), "Diamond Leggings", new ArmorTypeInfo(6, 496, ArmorInventory::SLOT_LEGS)));
self::register("diamond_leggings", new Armor(new IID(Ids::DIAMOND_LEGGINGS), "Diamond Leggings", new ArmorTypeInfo(6, 496, ArmorInventory::SLOT_LEGS, 2)));
self::register("golden_leggings", new Armor(new IID(Ids::GOLDEN_LEGGINGS), "Golden Leggings", new ArmorTypeInfo(3, 106, ArmorInventory::SLOT_LEGS)));
self::register("iron_leggings", new Armor(new IID(Ids::IRON_LEGGINGS), "Iron Leggings", new ArmorTypeInfo(5, 226, ArmorInventory::SLOT_LEGS)));
self::register("leather_pants", new Armor(new IID(Ids::LEATHER_PANTS), "Leather Pants", new ArmorTypeInfo(2, 76, ArmorInventory::SLOT_LEGS)));
self::register("netherite_leggings", new Armor(new IID(Ids::NETHERITE_LEGGINGS), "Netherite Leggings", new ArmorTypeInfo(6, 556, ArmorInventory::SLOT_LEGS, 3, true)));
}
}