[1.19] Added Entity, Block, Material and Item palettes, Enabled Entity and Inventory handling + Fixed few bugs.

[1.19] Added Entity, Block, Material and Item palettes, Enabled Entity and Inventory handling + Fixed few bugs.
This commit is contained in:
Anon 2022-09-01 17:07:44 +00:00 committed by GitHub
commit 19059414e8
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
20 changed files with 3759 additions and 810 deletions

View file

@ -335,7 +335,7 @@ namespace MinecraftClient.Inventory.ItemPalettes
mappings[319] = ItemType.AcaciaStairs;
mappings[320] = ItemType.DarkOakStairs;
mappings[321] = ItemType.SlimeBlock;
mappings[322] = ItemType.GrassPath;
mappings[322] = ItemType.DirtPath;
mappings[323] = ItemType.Sunflower;
mappings[324] = ItemType.Lilac;
mappings[325] = ItemType.RoseBush;

View file

@ -385,7 +385,7 @@ namespace MinecraftClient.Inventory.ItemPalettes
mappings[369] = ItemType.AcaciaStairs;
mappings[370] = ItemType.DarkOakStairs;
mappings[371] = ItemType.SlimeBlock;
mappings[372] = ItemType.GrassPath;
mappings[372] = ItemType.DirtPath;
mappings[373] = ItemType.Sunflower;
mappings[374] = ItemType.Lilac;
mappings[375] = ItemType.RoseBush;

View file

@ -385,7 +385,7 @@ namespace MinecraftClient.Inventory.ItemPalettes
mappings[369] = ItemType.AcaciaStairs;
mappings[370] = ItemType.DarkOakStairs;
mappings[371] = ItemType.SlimeBlock;
mappings[372] = ItemType.GrassPath;
mappings[372] = ItemType.DirtPath;
mappings[373] = ItemType.Sunflower;
mappings[374] = ItemType.Lilac;
mappings[375] = ItemType.RoseBush;

View file

@ -402,7 +402,7 @@ namespace MinecraftClient.Inventory.ItemPalettes
mappings[390] = ItemType.PackedIce;
mappings[391] = ItemType.AcaciaStairs;
mappings[392] = ItemType.DarkOakStairs;
mappings[393] = ItemType.GrassPath;
mappings[393] = ItemType.DirtPath;
mappings[394] = ItemType.Sunflower;
mappings[395] = ItemType.Lilac;
mappings[396] = ItemType.RoseBush;

View file

@ -402,7 +402,7 @@ namespace MinecraftClient.Inventory.ItemPalettes
mappings[390] = ItemType.PackedIce;
mappings[391] = ItemType.AcaciaStairs;
mappings[392] = ItemType.DarkOakStairs;
mappings[393] = ItemType.GrassPath;
mappings[393] = ItemType.DirtPath;
mappings[394] = ItemType.Sunflower;
mappings[395] = ItemType.Lilac;
mappings[396] = ItemType.RoseBush;

File diff suppressed because it is too large Load diff

View file

@ -1,11 +1,10 @@
namespace MinecraftClient.Inventory
{
/// <summary>
/// For MC version 1.16.2.
/// Generated using ItemPaletteGenerator.
/// Generated using the --generator flag on the client
/// Typical steps to handle new item IDs for newer Minecraft versions:
/// 1. Generate registries.json using data reporting on Vanilla Minecraft (https://wiki.vg/Data_Generators)
/// 2. Generate temporary ItemTypeXXX.cs and ItemPaletteXXX.cs using ItemPaletteGenerator.cs
/// 1. Generate registries.json using data reporting on Vanilla Minecraft (https://wiki.vg/Data_Generators) or download it from: https://github.com/PixiGeko/Minecraft-generated-data
/// 2. Generate temporary ItemTypeXXX.cs and ItemPaletteXXX.cs using the --generator flag on the client
/// 3. Perform a diff with existing versions, add missing entries in ItemType.cs and ItemTypeExtensions.cs
/// 4. If existing entity IDs were not randomized by Mojang, simply add missing entries to the latest existing ItemPaletteXXX.cs
/// 5. If existing entity IDs were randomized, add a new palette as ItemPaletteXXX.cs into the codebase
@ -17,6 +16,7 @@ namespace MinecraftClient.Inventory
AcaciaBoat,
AcaciaButton,
AcaciaChestBoat,
AcaciaDoor,
AcaciaFence,
AcaciaFenceGate,
@ -32,6 +32,7 @@ namespace MinecraftClient.Inventory
AcaciaWood,
ActivatorRail,
Air,
AllaySpawnEgg,
Allium,
AmethystBlock,
AmethystCluster,
@ -69,6 +70,7 @@ namespace MinecraftClient.Inventory
BigDripleaf,
BirchBoat,
BirchButton,
BirchChestBoat,
BirchDoor,
BirchFence,
BirchFenceGate,
@ -279,6 +281,7 @@ namespace MinecraftClient.Inventory
Dandelion,
DarkOakBoat,
DarkOakButton,
DarkOakChestBoat,
DarkOakDoor,
DarkOakFence,
DarkOakFenceGate,
@ -349,6 +352,8 @@ namespace MinecraftClient.Inventory
DioriteStairs,
DioriteWall,
Dirt,
DirtPath,
DiscFragment5,
Dispenser,
DolphinSpawnEgg,
DonkeySpawnEgg,
@ -360,6 +365,7 @@ namespace MinecraftClient.Inventory
DripstoneBlock,
Dropper,
DrownedSpawnEgg,
EchoShard,
Egg,
ElderGuardianSpawnEgg,
Elytra,
@ -408,6 +414,8 @@ namespace MinecraftClient.Inventory
FloweringAzalea,
FloweringAzaleaLeaves,
FoxSpawnEgg,
FrogSpawnEgg,
Frogspawn,
Furnace,
FurnaceMinecart,
GhastSpawnEgg,
@ -425,6 +433,7 @@ namespace MinecraftClient.Inventory
GlowSquidSpawnEgg,
Glowstone,
GlowstoneDust,
GoatHorn,
GoatSpawnEgg,
GoldBlock,
GoldIngot,
@ -448,7 +457,6 @@ namespace MinecraftClient.Inventory
GraniteWall,
Grass,
GrassBlock,
GrassPath,
Gravel,
GrayBanner,
GrayBed,
@ -527,6 +535,7 @@ namespace MinecraftClient.Inventory
Jukebox,
JungleBoat,
JungleButton,
JungleChestBoat,
JungleDoor,
JungleFence,
JungleFenceGate,
@ -624,6 +633,23 @@ namespace MinecraftClient.Inventory
MagmaBlock,
MagmaCream,
MagmaCubeSpawnEgg,
MangroveBoat,
MangroveButton,
MangroveChestBoat,
MangroveDoor,
MangroveFence,
MangroveFenceGate,
MangroveLeaves,
MangroveLog,
MangrovePlanks,
MangrovePressurePlate,
MangrovePropagule,
MangroveRoots,
MangroveSign,
MangroveSlab,
MangroveStairs,
MangroveTrapdoor,
MangroveWood,
Map,
MediumAmethystBud,
Melon,
@ -643,11 +669,18 @@ namespace MinecraftClient.Inventory
MossyStoneBrickStairs,
MossyStoneBrickWall,
MossyStoneBricks,
Mud,
MudBrickSlab,
MudBrickStairs,
MudBrickWall,
MudBricks,
MuddyMangroveRoots,
MuleSpawnEgg,
MushroomStem,
MushroomStew,
MusicDisc11,
MusicDisc13,
MusicDisc5,
MusicDiscBlocks,
MusicDiscCat,
MusicDiscChirp,
@ -692,6 +725,7 @@ namespace MinecraftClient.Inventory
NoteBlock,
OakBoat,
OakButton,
OakChestBoat,
OakDoor,
OakFence,
OakFenceGate,
@ -708,6 +742,7 @@ namespace MinecraftClient.Inventory
Observer,
Obsidian,
OcelotSpawnEgg,
OchreFroglight,
OrangeBanner,
OrangeBed,
OrangeCandle,
@ -728,10 +763,12 @@ namespace MinecraftClient.Inventory
OxidizedCutCopperSlab,
OxidizedCutCopperStairs,
PackedIce,
PackedMud,
Painting,
PandaSpawnEgg,
Paper,
ParrotSpawnEgg,
PearlescentFroglight,
Peony,
PetrifiedOakSlab,
PhantomMembrane,
@ -843,6 +880,7 @@ namespace MinecraftClient.Inventory
RawGoldBlock,
RawIron,
RawIronBlock,
RecoveryCompass,
RedBanner,
RedBed,
RedCandle,
@ -873,6 +911,7 @@ namespace MinecraftClient.Inventory
RedstoneLamp,
RedstoneOre,
RedstoneTorch,
ReinforcedDeepslate,
Repeater,
RepeatingCommandBlock,
RespawnAnchor,
@ -889,7 +928,11 @@ namespace MinecraftClient.Inventory
SandstoneStairs,
SandstoneWall,
Scaffolding,
Sculk,
SculkCatalyst,
SculkSensor,
SculkShrieker,
SculkVein,
Scute,
SeaLantern,
SeaPickle,
@ -942,6 +985,7 @@ namespace MinecraftClient.Inventory
SporeBlossom,
SpruceBoat,
SpruceButton,
SpruceChestBoat,
SpruceDoor,
SpruceFence,
SpruceFenceGate,
@ -987,6 +1031,8 @@ namespace MinecraftClient.Inventory
StrippedDarkOakWood,
StrippedJungleLog,
StrippedJungleWood,
StrippedMangroveLog,
StrippedMangroveWood,
StrippedOakLog,
StrippedOakWood,
StrippedSpruceLog,
@ -1000,6 +1046,8 @@ namespace MinecraftClient.Inventory
Sunflower,
SuspiciousStew,
SweetBerries,
TadpoleBucket,
TadpoleSpawnEgg,
TallGrass,
Target,
Terracotta,
@ -1024,11 +1072,13 @@ namespace MinecraftClient.Inventory
TurtleHelmet,
TurtleSpawnEgg,
TwistingVines,
VerdantFroglight,
VexSpawnEgg,
VillagerSpawnEgg,
VindicatorSpawnEgg,
Vine,
WanderingTraderSpawnEgg,
WardenSpawnEgg,
WarpedButton,
WarpedDoor,
WarpedFence,

View file

@ -760,7 +760,7 @@ namespace MinecraftClient.Mapping.BlockPalettes
materials[8158] = Material.EndStoneBricks;
for (int i = 8159; i <= 8162; i++)
materials[i] = Material.Beetroots;
materials[8163] = Material.GrassPath;
materials[8163] = Material.DirtPath;
materials[8164] = Material.EndGateway;
for (int i = 8165; i <= 8176; i++)
materials[i] = Material.RepeatingCommandBlock;

View file

@ -792,7 +792,7 @@ namespace MinecraftClient.Mapping.BlockPalettes
materials[8682] = Material.EndStoneBricks;
for (int i = 8683; i <= 8686; i++)
materials[i] = Material.Beetroots;
materials[8687] = Material.GrassPath;
materials[8687] = Material.DirtPath;
materials[8688] = Material.EndGateway;
for (int i = 8689; i <= 8700; i++)
materials[i] = Material.RepeatingCommandBlock;

View file

@ -792,7 +792,7 @@ namespace MinecraftClient.Mapping.BlockPalettes
materials[8682] = Material.EndStoneBricks;
for (int i = 8683; i <= 8686; i++)
materials[i] = Material.Beetroots;
materials[8687] = Material.GrassPath;
materials[8687] = Material.DirtPath;
materials[8688] = Material.EndGateway;
for (int i = 8689; i <= 8700; i++)
materials[i] = Material.RepeatingCommandBlock;

View file

@ -800,7 +800,7 @@ namespace MinecraftClient.Mapping.BlockPalettes
materials[9222] = Material.EndStoneBricks;
for (int i = 9223; i <= 9226; i++)
materials[i] = Material.Beetroots;
materials[9227] = Material.GrassPath;
materials[9227] = Material.DirtPath;
materials[9228] = Material.EndGateway;
for (int i = 9229; i <= 9240; i++)
materials[i] = Material.RepeatingCommandBlock;

View file

@ -820,7 +820,7 @@ namespace MinecraftClient.Mapping.BlockPalettes
materials[9468] = Material.EndStoneBricks;
for (int i = 9469; i <= 9472; i++)
materials[i] = Material.Beetroots;
materials[9473] = Material.GrassPath;
materials[9473] = Material.DirtPath;
materials[9474] = Material.EndGateway;
for (int i = 9475; i <= 9486; i++)
materials[i] = Material.RepeatingCommandBlock;

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,137 @@
using System;
using System.Collections.Generic;
namespace MinecraftClient.Mapping.EntityPalettes
{
public class EntityPalette119 : EntityPalette
{
private static Dictionary<int, EntityType> mappings = new Dictionary<int, EntityType>();
static EntityPalette119()
{
mappings[0] = EntityType.Allay;
mappings[1] = EntityType.AreaEffectCloud;
mappings[2] = EntityType.ArmorStand;
mappings[3] = EntityType.Arrow;
mappings[4] = EntityType.Axolotl;
mappings[5] = EntityType.Bat;
mappings[6] = EntityType.Bee;
mappings[7] = EntityType.Blaze;
mappings[8] = EntityType.Boat;
mappings[10] = EntityType.Cat;
mappings[11] = EntityType.CaveSpider;
mappings[9] = EntityType.ChestBoat;
mappings[54] = EntityType.ChestMinecart;
mappings[12] = EntityType.Chicken;
mappings[13] = EntityType.Cod;
mappings[55] = EntityType.CommandBlockMinecart;
mappings[14] = EntityType.Cow;
mappings[15] = EntityType.Creeper;
mappings[16] = EntityType.Dolphin;
mappings[17] = EntityType.Donkey;
mappings[18] = EntityType.DragonFireball;
mappings[19] = EntityType.Drowned;
mappings[93] = EntityType.Egg;
mappings[20] = EntityType.ElderGuardian;
mappings[21] = EntityType.EndCrystal;
mappings[22] = EntityType.EnderDragon;
mappings[94] = EntityType.EnderPearl;
mappings[23] = EntityType.Enderman;
mappings[24] = EntityType.Endermite;
mappings[25] = EntityType.Evoker;
mappings[26] = EntityType.EvokerFangs;
mappings[95] = EntityType.ExperienceBottle;
mappings[27] = EntityType.ExperienceOrb;
mappings[28] = EntityType.EyeOfEnder;
mappings[29] = EntityType.FallingBlock;
mappings[46] = EntityType.Fireball;
mappings[30] = EntityType.FireworkRocket;
mappings[117] = EntityType.FishingBobber;
mappings[31] = EntityType.Fox;
mappings[32] = EntityType.Frog;
mappings[56] = EntityType.FurnaceMinecart;
mappings[33] = EntityType.Ghast;
mappings[34] = EntityType.Giant;
mappings[35] = EntityType.GlowItemFrame;
mappings[36] = EntityType.GlowSquid;
mappings[37] = EntityType.Goat;
mappings[38] = EntityType.Guardian;
mappings[39] = EntityType.Hoglin;
mappings[57] = EntityType.HopperMinecart;
mappings[40] = EntityType.Horse;
mappings[41] = EntityType.Husk;
mappings[42] = EntityType.Illusioner;
mappings[43] = EntityType.IronGolem;
mappings[44] = EntityType.Item;
mappings[45] = EntityType.ItemFrame;
mappings[47] = EntityType.LeashKnot;
mappings[48] = EntityType.LightningBolt;
mappings[49] = EntityType.Llama;
mappings[50] = EntityType.LlamaSpit;
mappings[51] = EntityType.MagmaCube;
mappings[52] = EntityType.Marker;
mappings[53] = EntityType.Minecart;
mappings[61] = EntityType.Mooshroom;
mappings[60] = EntityType.Mule;
mappings[62] = EntityType.Ocelot;
mappings[63] = EntityType.Painting;
mappings[64] = EntityType.Panda;
mappings[65] = EntityType.Parrot;
mappings[66] = EntityType.Phantom;
mappings[67] = EntityType.Pig;
mappings[68] = EntityType.Piglin;
mappings[69] = EntityType.PiglinBrute;
mappings[70] = EntityType.Pillager;
mappings[116] = EntityType.Player;
mappings[71] = EntityType.PolarBear;
mappings[96] = EntityType.Potion;
mappings[73] = EntityType.Pufferfish;
mappings[74] = EntityType.Rabbit;
mappings[75] = EntityType.Ravager;
mappings[76] = EntityType.Salmon;
mappings[77] = EntityType.Sheep;
mappings[78] = EntityType.Shulker;
mappings[79] = EntityType.ShulkerBullet;
mappings[80] = EntityType.Silverfish;
mappings[81] = EntityType.Skeleton;
mappings[82] = EntityType.SkeletonHorse;
mappings[83] = EntityType.Slime;
mappings[84] = EntityType.SmallFireball;
mappings[85] = EntityType.SnowGolem;
mappings[86] = EntityType.Snowball;
mappings[58] = EntityType.SpawnerMinecart;
mappings[87] = EntityType.SpectralArrow;
mappings[88] = EntityType.Spider;
mappings[89] = EntityType.Squid;
mappings[90] = EntityType.Stray;
mappings[91] = EntityType.Strider;
mappings[92] = EntityType.Tadpole;
mappings[72] = EntityType.Tnt;
mappings[59] = EntityType.TntMinecart;
mappings[98] = EntityType.TraderLlama;
mappings[97] = EntityType.Trident;
mappings[99] = EntityType.TropicalFish;
mappings[100] = EntityType.Turtle;
mappings[101] = EntityType.Vex;
mappings[102] = EntityType.Villager;
mappings[103] = EntityType.Vindicator;
mappings[104] = EntityType.WanderingTrader;
mappings[105] = EntityType.Warden;
mappings[106] = EntityType.Witch;
mappings[107] = EntityType.Wither;
mappings[108] = EntityType.WitherSkeleton;
mappings[109] = EntityType.WitherSkull;
mappings[110] = EntityType.Wolf;
mappings[111] = EntityType.Zoglin;
mappings[112] = EntityType.Zombie;
mappings[113] = EntityType.ZombieHorse;
mappings[114] = EntityType.ZombieVillager;
mappings[115] = EntityType.ZombifiedPiglin;
}
protected override Dictionary<int, EntityType> GetDict()
{
return mappings;
}
}
}

View file

@ -4,16 +4,17 @@ namespace MinecraftClient.Mapping
/// Represents Minecraft Entity Types
/// </summary>
/// <remarks>
/// Generated from registries.json using EntityPaletteGenerator.cs.
/// Generated from registries.json using the --generator flag on the client
/// Typical steps to handle new entity IDs for newer Minecraft versions:
/// 1. Generate registries.json using data reporting on Vanilla Minecraft (https://wiki.vg/Data_Generators)
/// 2. Generate temporary EntityTypeXXX.cs and EntityPaletteXXX.cs using EntityPaletteGenerator.cs
/// 1. Generate registries.json using data reporting on Vanilla Minecraft (https://wiki.vg/Data_Generators) or download it from: https://github.com/PixiGeko/Minecraft-generated-data
/// 2. Generate temporary EntityTypeXXX.cs and EntityPaletteXXX.cs using the --generator flag on the client
/// 3. Perform a diff with existing versions, add missing entries in EntityType.cs and EntityTypeExtensions.cs
/// 4. If existing entity IDs were not randomized by Mojang, simply add missing entries to the latest existing EntityPaletteXXX.cs
/// 5. If existing entity IDs were randomized, add a new palette as EntityPaletteXXX.cs into the codebase (worst case)
/// </remarks>
public enum EntityType
{
Allay,
AreaEffectCloud,
ArmorStand,
Arrow,
@ -24,6 +25,7 @@ namespace MinecraftClient.Mapping
Boat,
Cat,
CaveSpider,
ChestBoat,
ChestMinecart,
Chicken,
Cod,
@ -38,9 +40,9 @@ namespace MinecraftClient.Mapping
ElderGuardian,
EndCrystal,
EnderDragon,
EnderPearl,
Enderman,
Endermite,
EnderPearl,
Evoker,
EvokerFangs,
ExperienceBottle,
@ -51,6 +53,7 @@ namespace MinecraftClient.Mapping
FireworkRocket,
FishingBobber,
Fox,
Frog,
FurnaceMinecart,
Ghast,
Giant,
@ -99,14 +102,15 @@ namespace MinecraftClient.Mapping
SkeletonHorse,
Slime,
SmallFireball,
Snowball,
SnowGolem,
Snowball,
SpawnerMinecart,
SpectralArrow,
Spider,
Squid,
Stray,
Strider,
Tadpole,
Tnt,
TntMinecart,
TraderLlama,
@ -117,6 +121,7 @@ namespace MinecraftClient.Mapping
Villager,
Vindicator,
WanderingTrader,
Warden,
Witch,
Wither,
WitherSkeleton,

View file

@ -4,10 +4,10 @@
/// Represents Minecraft Materials
/// </summary>
/// <remarks>
/// Generated from blocks.json using BlockPaletteGenerator.cs.
/// Generated from blocks.json using the --generator flag on the client
/// Typical steps to handle new blocks for newer Minecraft versions:
/// 1. Generate blocks.json using data reporting on Vanilla Minecraft (https://wiki.vg/Data_Generators)
/// 2. Generate temporary MaterialXXX.cs and PaletteXXX.cs using BlockPaletteGenerator.cs
/// 1. Generate blocks.json using data reporting on Vanilla Minecraft (https://wiki.vg/Data_Generators) or download it from: https://github.com/PixiGeko/Minecraft-generated-data
/// 2. Generate temporary MaterialXXX.cs and PaletteXXX.cs using the --generator flag on the client
/// 3. Perform a diff with existing versions, add missing entries in Material.cs and MaterialExtensions.cs
/// 4. If existing state IDs were not randomized by Mojang, simply add missing state entries to Palette113.cs
/// 5. If existing state IDs were randomized, add a new palette as PaletteXXX.cs into the codebase (worst case)
@ -52,8 +52,8 @@
Basalt,
Beacon,
Bedrock,
Beehive,
BeeNest,
Beehive,
Beetroots,
Bell,
BigDripleaf,
@ -84,13 +84,13 @@
BlackShulkerBox,
BlackStainedGlass,
BlackStainedGlassPane,
BlackTerracotta,
BlackWallBanner,
BlackWool,
Blackstone,
BlackstoneSlab,
BlackstoneStairs,
BlackstoneWall,
BlackTerracotta,
BlackWallBanner,
BlackWool,
BlastFurnace,
BlueBanner,
BlueBed,
@ -115,10 +115,10 @@
BrainCoralFan,
BrainCoralWallFan,
BrewingStand,
Bricks,
BrickSlab,
BrickStairs,
BrickWall,
Bricks,
BrownBanner,
BrownBed,
BrownCandle,
@ -277,10 +277,10 @@
DeadTubeCoralFan,
DeadTubeCoralWallFan,
Deepslate,
DeepslateBricks,
DeepslateBrickSlab,
DeepslateBrickStairs,
DeepslateBrickWall,
DeepslateBricks,
DeepslateCoalOre,
DeepslateCopperOre,
DeepslateDiamondOre,
@ -289,10 +289,10 @@
DeepslateIronOre,
DeepslateLapisOre,
DeepslateRedstoneOre,
DeepslateTiles,
DeepslateTileSlab,
DeepslateTileStairs,
DeepslateTileWall,
DeepslateTiles,
DetectorRail,
DiamondBlock,
DiamondOre,
@ -301,6 +301,7 @@
DioriteStairs,
DioriteWall,
Dirt,
DirtPath,
Dispenser,
DragonEgg,
DragonHead,
@ -311,16 +312,16 @@
EmeraldBlock,
EmeraldOre,
EnchantingTable,
EnderChest,
EndGateway,
EndPortal,
EndPortalFrame,
EndRod,
EndStone,
EndStoneBricks,
EndStoneBrickSlab,
EndStoneBrickStairs,
EndStoneBrickWall,
EndStoneBricks,
EnderChest,
ExposedCopper,
ExposedCutCopper,
ExposedCutCopperSlab,
@ -333,9 +334,10 @@
FireCoralFan,
FireCoralWallFan,
FletchingTable,
FlowerPot,
FloweringAzalea,
FloweringAzaleaLeaves,
FlowerPot,
Frogspawn,
FrostedIce,
Furnace,
GildedBlackstone,
@ -351,7 +353,6 @@
GraniteWall,
Grass,
GrassBlock,
GrassPath,
Gravel,
GrayBanner,
GrayBed,
@ -464,8 +465,8 @@
LightGrayTerracotta,
LightGrayWallBanner,
LightGrayWool,
LightningRod,
LightWeightedPressurePlate,
LightningRod,
Lilac,
LilyOfTheValley,
LilyPad,
@ -500,6 +501,22 @@
MagentaWallBanner,
MagentaWool,
MagmaBlock,
MangroveButton,
MangroveDoor,
MangroveFence,
MangroveFenceGate,
MangroveLeaves,
MangroveLog,
MangrovePlanks,
MangrovePressurePlate,
MangrovePropagule,
MangroveRoots,
MangroveSign,
MangroveSlab,
MangroveStairs,
MangroveTrapdoor,
MangroveWallSign,
MangroveWood,
MediumAmethystBud,
Melon,
MelonStem,
@ -509,26 +526,32 @@
MossyCobblestoneSlab,
MossyCobblestoneStairs,
MossyCobblestoneWall,
MossyStoneBricks,
MossyStoneBrickSlab,
MossyStoneBrickStairs,
MossyStoneBrickWall,
MossyStoneBricks,
MovingPiston,
Mud,
MudBrickSlab,
MudBrickStairs,
MudBrickWall,
MudBricks,
MuddyMangroveRoots,
MushroomStem,
Mycelium,
NetherBrickFence,
NetherBricks,
NetherBrickSlab,
NetherBrickStairs,
NetherBrickWall,
NetherBricks,
NetherGoldOre,
NetheriteBlock,
NetherPortal,
NetherQuartzOre,
Netherrack,
NetherSprouts,
NetherWart,
NetherWartBlock,
NetheriteBlock,
Netherrack,
NoteBlock,
OakButton,
OakDoor,
@ -547,6 +570,7 @@
OakWood,
Observer,
Obsidian,
OchreFroglight,
OrangeBanner,
OrangeBed,
OrangeCandle,
@ -568,6 +592,8 @@
OxidizedCutCopperSlab,
OxidizedCutCopperStairs,
PackedIce,
PackedMud,
PearlescentFroglight,
Peony,
PetrifiedOakSlab,
PinkBanner,
@ -596,10 +622,10 @@
PolishedAndesiteStairs,
PolishedBasalt,
PolishedBlackstone,
PolishedBlackstoneBricks,
PolishedBlackstoneBrickSlab,
PolishedBlackstoneBrickStairs,
PolishedBlackstoneBrickWall,
PolishedBlackstoneBricks,
PolishedBlackstoneButton,
PolishedBlackstonePressurePlate,
PolishedBlackstoneSlab,
@ -636,6 +662,7 @@
PottedFloweringAzaleaBush,
PottedJungleSapling,
PottedLilyOfTheValley,
PottedMangrovePropagule,
PottedOakSapling,
PottedOrangeTulip,
PottedOxeyeDaisy,
@ -652,9 +679,9 @@
PowderSnowCauldron,
PoweredRail,
Prismarine,
PrismarineBricks,
PrismarineBrickSlab,
PrismarineBrickStairs,
PrismarineBricks,
PrismarineSlab,
PrismarineStairs,
PrismarineWall,
@ -697,10 +724,10 @@
RedGlazedTerracotta,
RedMushroom,
RedMushroomBlock,
RedNetherBricks,
RedNetherBrickSlab,
RedNetherBrickStairs,
RedNetherBrickWall,
RedNetherBricks,
RedSand,
RedSandstone,
RedSandstoneSlab,
@ -709,16 +736,17 @@
RedShulkerBox,
RedStainedGlass,
RedStainedGlassPane,
RedTerracotta,
RedTulip,
RedWallBanner,
RedWool,
RedstoneBlock,
RedstoneLamp,
RedstoneOre,
RedstoneTorch,
RedstoneWallTorch,
RedstoneWire,
RedTerracotta,
RedTulip,
RedWallBanner,
RedWool,
ReinforcedDeepslate,
Repeater,
RepeatingCommandBlock,
RespawnAnchor,
@ -730,10 +758,14 @@
SandstoneStairs,
SandstoneWall,
Scaffolding,
Sculk,
SculkCatalyst,
SculkSensor,
Seagrass,
SculkShrieker,
SculkVein,
SeaLantern,
SeaPickle,
Seagrass,
Shroomlight,
ShulkerBox,
SkeletonSkull,
@ -784,15 +816,15 @@
SpruceWood,
StickyPiston,
Stone,
StoneBricks,
StoneBrickSlab,
StoneBrickStairs,
StoneBrickWall,
StoneBricks,
StoneButton,
Stonecutter,
StonePressurePlate,
StoneSlab,
StoneStairs,
Stonecutter,
StrippedAcaciaLog,
StrippedAcaciaWood,
StrippedBirchLog,
@ -803,6 +835,8 @@
StrippedDarkOakWood,
StrippedJungleLog,
StrippedJungleWood,
StrippedMangroveLog,
StrippedMangroveWood,
StrippedOakLog,
StrippedOakWood,
StrippedSpruceLog,
@ -832,6 +866,7 @@
TurtleEgg,
TwistingVines,
TwistingVinesPlant,
VerdantFroglight,
Vine,
VoidAir,
WallTorch,

View file

@ -367,7 +367,7 @@ namespace MinecraftClient.Mapping
Material.Farmland,
Material.Grass,
Material.GrassBlock,
Material.GrassPath,
Material.DirtPath,
Material.Gravel,
Material.GrayConcretePowder,
Material.GreenConcretePowder,

File diff suppressed because it is too large Load diff

View file

@ -403,13 +403,13 @@ namespace MinecraftClient.Protocol.Handlers
Double entityX = ReadNextDouble(cache);
Double entityY = ReadNextDouble(cache);
Double entityZ = ReadNextDouble(cache);
byte entityYaw = ReadNextByte(cache);
byte entityPitch = ReadNextByte(cache);
byte entityYaw = ReadNextByte(cache);
int metadata = -1;
if (living)
{
if (protocolversion >= Protocol18Handler.MC_1_18_2_Version)
if (protocolversion == Protocol18Handler.MC_1_18_2_Version)
entityYaw = ReadNextByte(cache);
else
entityPitch = ReadNextByte(cache);
@ -418,15 +418,17 @@ namespace MinecraftClient.Protocol.Handlers
{
if (protocolversion >= Protocol18Handler.MC_1_19_Version)
{
metadata = ReadNextVarInt(cache);
entityYaw = ReadNextByte(cache);
metadata = ReadNextVarInt(cache);
}
else
metadata = ReadNextInt(cache);
}
short velocityX = ReadNextShort(cache);
short velocityY = ReadNextShort(cache);
short velocityZ = ReadNextShort(cache);
return new Entity(entityID, entityType, new Location(entityX, entityY, entityZ), entityYaw, entityPitch, metadata);
}

View file

@ -23,7 +23,7 @@ using System.Text.RegularExpressions;
namespace MinecraftClient.Protocol.Handlers
{
/// <summary>
/// Implementation for Minecraft 1.7.X+ Protocols
/// Implementation for Minecraft 1.8.X+ Protocols
/// </summary>
/// <remarks>
/// Typical update steps for implementing protocol changes for a new Minecraft version:
@ -62,7 +62,7 @@ namespace MinecraftClient.Protocol.Handlers
private readonly List<string> autocomplete_result = new List<string>();
private readonly Dictionary<int, short> window_actions = new Dictionary<int, short>();
private bool login_phase = true;
private int protocolversion;
private int protocolVersion;
private int currentDimension;
Protocol18Forge pForge;
@ -83,7 +83,7 @@ namespace MinecraftClient.Protocol.Handlers
ChatParser.InitTranslations();
this.socketWrapper = new SocketWrapper(Client);
this.dataTypes = new DataTypes(protocolVersion);
this.protocolversion = protocolVersion;
this.protocolVersion = protocolVersion;
this.handler = handler;
this.pForge = new Protocol18Forge(forgeInfo, protocolVersion, dataTypes, this, handler);
this.pTerrain = new Protocol18Terrain(protocolVersion, dataTypes, handler);
@ -91,73 +91,81 @@ namespace MinecraftClient.Protocol.Handlers
this.log = handler.GetLogger();
this.randomGen = RandomNumberGenerator.Create();
if (handler.GetTerrainEnabled() && protocolversion > MC_1_18_2_Version)
if (handler.GetTerrainEnabled() && protocolVersion > MC_1_18_2_Version)
{
log.Error(Translations.Get("extra.terrainandmovement_disabled"));
handler.SetTerrainEnabled(false);
}
if (handler.GetInventoryEnabled() && (protocolversion < MC_1_10_Version || protocolversion > MC_1_18_2_Version))
if (handler.GetInventoryEnabled() && (protocolVersion < MC_1_10_Version || protocolVersion > MC_1_19_Version))
{
log.Error(Translations.Get("extra.inventory_disabled"));
handler.SetInventoryEnabled(false);
}
if (handler.GetEntityHandlingEnabled() && (protocolversion < MC_1_10_Version || protocolversion > MC_1_18_2_Version))
if (handler.GetEntityHandlingEnabled() && (protocolVersion < MC_1_10_Version || protocolVersion > MC_1_19_Version))
{
log.Error(Translations.Get("extra.entity_disabled"));
handler.SetEntityHandlingEnabled(false);
}
// Block palette
if (protocolversion >= MC_1_13_Version)
if (protocolVersion >= MC_1_13_Version)
{
if (protocolVersion > MC_1_18_2_Version && handler.GetTerrainEnabled())
if (protocolVersion > MC_1_19_Version && handler.GetTerrainEnabled())
throw new NotImplementedException(Translations.Get("exception.palette.block"));
if (protocolVersion >= MC_1_17_Version)
if (protocolVersion == MC_1_19_Version)
Block.Palette = new Palette119();
else if (protocolVersion >= MC_1_17_Version)
Block.Palette = new Palette117();
else if (protocolVersion >= MC_1_16_Version)
if (protocolVersion >= MC_1_16_Version)
Block.Palette = new Palette116();
else if (protocolVersion >= MC_1_15_Version)
Block.Palette = new Palette115();
else if (protocolVersion >= MC_1_14_Version)
Block.Palette = new Palette114();
else Block.Palette = new Palette113();
Block.Palette = new Palette116();
else if (protocolVersion >= MC_1_15_Version)
Block.Palette = new Palette115();
else if (protocolVersion >= MC_1_14_Version)
Block.Palette = new Palette114();
else Block.Palette = new Palette113();
}
else Block.Palette = new Palette112();
// Entity palette
if (protocolversion >= MC_1_13_Version)
if (protocolVersion >= MC_1_13_Version)
{
if (protocolversion > MC_1_18_2_Version && handler.GetEntityHandlingEnabled())
if (protocolVersion > MC_1_19_Version && handler.GetEntityHandlingEnabled())
throw new NotImplementedException(Translations.Get("exception.palette.entity"));
if (protocolversion >= MC_1_17_Version)
if (protocolVersion == MC_1_19_Version)
entityPalette = new EntityPalette119();
else if (protocolVersion >= MC_1_17_Version)
entityPalette = new EntityPalette117();
else if (protocolversion >= MC_1_16_2_Version)
if (protocolversion >= MC_1_16_2_Version)
entityPalette = new EntityPalette1162();
else if (protocolversion >= MC_1_16_Version)
entityPalette = new EntityPalette1161();
else if (protocolversion >= MC_1_15_Version)
entityPalette = new EntityPalette115();
else if (protocolVersion >= MC_1_14_Version)
entityPalette = new EntityPalette114();
else entityPalette = new EntityPalette113();
else if (protocolVersion >= MC_1_16_2_Version)
entityPalette = new EntityPalette1162();
else if (protocolVersion >= MC_1_16_Version)
entityPalette = new EntityPalette1161();
else if (protocolVersion >= MC_1_15_Version)
entityPalette = new EntityPalette115();
else if (protocolVersion >= MC_1_14_Version)
entityPalette = new EntityPalette114();
else entityPalette = new EntityPalette113();
}
else entityPalette = new EntityPalette112();
// Item palette
if (protocolversion >= MC_1_16_2_Version)
if (protocolVersion >= MC_1_16_2_Version)
{
if (protocolversion > MC_1_18_2_Version && handler.GetInventoryEnabled())
if (protocolVersion > MC_1_19_Version && handler.GetInventoryEnabled())
throw new NotImplementedException(Translations.Get("exception.palette.item"));
if (protocolversion >= MC_1_18_1_Version)
if (protocolVersion == MC_1_19_Version)
itemPalette = new ItemPalette119();
else if (protocolVersion >= MC_1_18_1_Version)
itemPalette = new ItemPalette118();
else if (protocolversion >= MC_1_17_Version)
else if (protocolVersion >= MC_1_17_Version)
itemPalette = new ItemPalette117();
else if (protocolversion >= MC_1_16_2_Version)
if (protocolversion >= MC_1_16_2_Version)
else if (protocolVersion >= MC_1_16_2_Version)
if (protocolVersion >= MC_1_16_2_Version)
itemPalette = new ItemPalette1162();
else itemPalette = new ItemPalette1161();
}
@ -244,7 +252,7 @@ namespace MinecraftClient.Protocol.Handlers
packetData.Enqueue(rawpacket[i]);
//Handle packet decompression
if (protocolversion >= MC_1_8_Version
if (protocolVersion >= MC_1_8_Version
&& compression_treshold > 0)
{
int sizeUncompressed = dataTypes.ReadNextVarInt(packetData);
@ -282,7 +290,7 @@ namespace MinecraftClient.Protocol.Handlers
switch (packetID) //Packet IDs are different while logging in
{
case 0x03:
if (protocolversion >= MC_1_8_Version)
if (protocolVersion >= MC_1_8_Version)
compression_treshold = dataTypes.ReadNextVarInt(packetData);
break;
case 0x04:
@ -309,12 +317,12 @@ namespace MinecraftClient.Protocol.Handlers
int playerEntityID = dataTypes.ReadNextInt(packetData);
handler.OnReceivePlayerEntityID(playerEntityID);
if (protocolversion >= MC_1_16_2_Version)
if (protocolVersion >= MC_1_16_2_Version)
dataTypes.ReadNextBool(packetData); // Is hardcore - 1.16.2 and above
handler.OnGamemodeUpdate(Guid.Empty, dataTypes.ReadNextByte(packetData));
if (protocolversion >= MC_1_16_Version)
if (protocolVersion >= MC_1_16_Version)
{
dataTypes.ReadNextByte(packetData); // Previous Gamemode - 1.16 and above
int worldCount = dataTypes.ReadNextVarInt(packetData); // Dimension Count (World Count) - 1.16 and above
@ -331,55 +339,55 @@ namespace MinecraftClient.Protocol.Handlers
// String identifier: 1.16 and 1.16.1
// varInt: [1.9.1 to 1.15.2]
// byte: below 1.9.1
if (protocolversion >= MC_1_16_Version)
if (protocolVersion >= MC_1_16_Version)
{
if (protocolversion >= MC_1_19_Version)
if (protocolVersion >= MC_1_19_Version)
{
dataTypes.ReadNextString(packetData); // Dimension Type: Identifier
currentDimensionType = new Dictionary<string, object>();
}
else if (protocolversion >= MC_1_16_2_Version)
else if (protocolVersion >= MC_1_16_2_Version)
currentDimensionType = dataTypes.ReadNextNbt(packetData); // Dimension Type: NBT Tag Compound
else
dataTypes.ReadNextString(packetData);
this.currentDimension = 0;
}
else if (protocolversion >= MC_1_9_1_Version)
else if (protocolVersion >= MC_1_9_1_Version)
this.currentDimension = dataTypes.ReadNextInt(packetData);
else
this.currentDimension = (sbyte)dataTypes.ReadNextByte(packetData);
if (protocolversion < MC_1_14_Version)
if (protocolVersion < MC_1_14_Version)
dataTypes.ReadNextByte(packetData); // Difficulty - 1.13 and below
if (protocolversion >= MC_1_16_Version)
if (protocolVersion >= MC_1_16_Version)
currentDimensionName = dataTypes.ReadNextString(packetData); // Dimension Name (World Name) - 1.16 and above
if (protocolversion >= MC_1_16_2_Version)
if (protocolVersion >= MC_1_16_2_Version)
World.SetDimension(currentDimensionName, currentDimensionType);
if (protocolversion >= MC_1_15_Version)
if (protocolVersion >= MC_1_15_Version)
dataTypes.ReadNextLong(packetData); // Hashed world seed - 1.15 and above
if (protocolversion >= MC_1_16_2_Version)
if (protocolVersion >= MC_1_16_2_Version)
dataTypes.ReadNextVarInt(packetData); // Max Players - 1.16.2 and above
else
dataTypes.ReadNextByte(packetData); // Max Players - 1.16.1 and below
if (protocolversion < MC_1_16_Version)
if (protocolVersion < MC_1_16_Version)
dataTypes.ReadNextString(packetData); // Level Type - 1.15 and below
if (protocolversion >= MC_1_14_Version)
if (protocolVersion >= MC_1_14_Version)
dataTypes.ReadNextVarInt(packetData); // View distance - 1.14 and above
if (protocolversion >= MC_1_18_1_Version)
if (protocolVersion >= MC_1_18_1_Version)
dataTypes.ReadNextVarInt(packetData); // Simulation Distance - 1.18 and above
if (protocolversion >= MC_1_8_Version)
if (protocolVersion >= MC_1_8_Version)
dataTypes.ReadNextBool(packetData); // Reduced debug info - 1.8 and above
if (protocolversion >= MC_1_15_Version)
if (protocolVersion >= MC_1_15_Version)
dataTypes.ReadNextBool(packetData); // Enable respawn screen - 1.15 and above
if (protocolversion >= MC_1_16_Version)
if (protocolVersion >= MC_1_16_Version)
{
dataTypes.ReadNextBool(packetData); // Is Debug - 1.16 and above
dataTypes.ReadNextBool(packetData); // Is Flat - 1.16 and above
}
if (protocolversion >= MC_1_19_Version)
if (protocolVersion >= MC_1_19_Version)
{
bool hasDeathLocation = dataTypes.ReadNextBool(packetData); // Has death location
if (hasDeathLocation)
@ -392,12 +400,12 @@ namespace MinecraftClient.Protocol.Handlers
case PacketTypesIn.ChatMessage:
int messageType = 0;
if (protocolversion <= MC_1_18_2_Version) // 1.18 and bellow
if (protocolVersion <= MC_1_18_2_Version) // 1.18 and bellow
{
string message = dataTypes.ReadNextString(packetData);
Guid senderUUID;
if (protocolversion >= MC_1_8_Version)
if (protocolVersion >= MC_1_8_Version)
{
//Hide system messages or xp bar messages?
messageType = dataTypes.ReadNextByte(packetData);
@ -405,7 +413,7 @@ namespace MinecraftClient.Protocol.Handlers
|| (messageType == 2 && !Settings.DisplayXPBarMessages))
break;
if (protocolversion >= MC_1_16_5_Version)
if (protocolVersion >= MC_1_16_5_Version)
senderUUID = dataTypes.ReadNextUUID(packetData);
else senderUUID = Guid.Empty;
}
@ -447,14 +455,14 @@ namespace MinecraftClient.Protocol.Handlers
case PacketTypesIn.Respawn:
string? dimensionNameInRespawn = null;
Dictionary<string, object> dimensionTypeInRespawn = null;
if (protocolversion >= MC_1_16_Version)
if (protocolVersion >= MC_1_16_Version)
{
if (protocolversion >= MC_1_19_Version)
if (protocolVersion >= MC_1_19_Version)
{
dataTypes.ReadNextString(packetData); // Dimension Type: Identifier
dimensionTypeInRespawn = new Dictionary<string, object>();
}
else if (protocolversion >= MC_1_16_2_Version)
else if (protocolVersion >= MC_1_16_2_Version)
dimensionTypeInRespawn = dataTypes.ReadNextNbt(packetData); // Dimension Type: NBT Tag Compound
else
dataTypes.ReadNextString(packetData);
@ -465,28 +473,28 @@ namespace MinecraftClient.Protocol.Handlers
// 1.15 and below
this.currentDimension = dataTypes.ReadNextInt(packetData);
}
if (protocolversion >= MC_1_16_Version)
if (protocolVersion >= MC_1_16_Version)
dimensionNameInRespawn = dataTypes.ReadNextString(packetData); // Dimension Name (World Name) - 1.16 and above
if (protocolversion >= MC_1_16_2_Version)
if (protocolVersion >= MC_1_16_2_Version)
World.SetDimension(dimensionNameInRespawn, dimensionTypeInRespawn);
if (protocolversion < MC_1_14_Version)
if (protocolVersion < MC_1_14_Version)
dataTypes.ReadNextByte(packetData); // Difficulty - 1.13 and below
if (protocolversion >= MC_1_15_Version)
if (protocolVersion >= MC_1_15_Version)
dataTypes.ReadNextLong(packetData); // Hashed world seed - 1.15 and above
dataTypes.ReadNextByte(packetData); // Gamemode
if (protocolversion >= MC_1_16_Version)
if (protocolVersion >= MC_1_16_Version)
dataTypes.ReadNextByte(packetData); // Previous Game mode - 1.16 and above
if (protocolversion < MC_1_16_Version)
if (protocolVersion < MC_1_16_Version)
dataTypes.ReadNextString(packetData); // Level Type - 1.15 and below
if (protocolversion >= MC_1_16_Version)
if (protocolVersion >= MC_1_16_Version)
{
dataTypes.ReadNextBool(packetData); // Is Debug - 1.16 and above
dataTypes.ReadNextBool(packetData); // Is Flat - 1.16 and above
dataTypes.ReadNextBool(packetData); // Copy metadata - 1.16 and above
}
if (protocolversion >= MC_1_19_Version)
if (protocolVersion >= MC_1_19_Version)
{
bool hasDeathLocation = dataTypes.ReadNextBool(packetData); // Has death location
if (hasDeathLocation)
@ -509,7 +517,7 @@ namespace MinecraftClient.Protocol.Handlers
// entity handling require player pos for distance calculating
if (handler.GetTerrainEnabled() || handler.GetEntityHandlingEnabled())
{
if (protocolversion >= MC_1_8_Version)
if (protocolVersion >= MC_1_8_Version)
{
Location location = handler.GetCurrentLocation();
location.X = (locMask & 1 << 0) != 0 ? location.X + x : x;
@ -520,14 +528,14 @@ namespace MinecraftClient.Protocol.Handlers
else handler.UpdateLocation(new Location(x, y, z), yaw, pitch);
}
if (protocolversion >= MC_1_9_Version)
if (protocolVersion >= MC_1_9_Version)
{
int teleportID = dataTypes.ReadNextVarInt(packetData);
// Teleport confirm packet
SendPacket(PacketTypesOut.TeleportConfirm, dataTypes.GetVarInt(teleportID));
}
if (protocolversion >= MC_1_17_Version)
if (protocolVersion >= MC_1_17_Version)
dataTypes.ReadNextBool(packetData); // Dismount Vehicle - 1.17 and above
break;
case PacketTypesIn.ChunkData:
@ -535,16 +543,16 @@ namespace MinecraftClient.Protocol.Handlers
{
int chunkX = dataTypes.ReadNextInt(packetData);
int chunkZ = dataTypes.ReadNextInt(packetData);
if (protocolversion >= MC_1_17_Version)
if (protocolVersion >= MC_1_17_Version)
{
ulong[]? verticalStripBitmask = null;
if (protocolversion == MC_1_17_Version || protocolversion == MC_1_17_1_Version)
if (protocolVersion == MC_1_17_Version || protocolVersion == MC_1_17_1_Version)
verticalStripBitmask = dataTypes.ReadNextULongArray(packetData); // Bit Mask Le:ngth and Primary Bit Mask
dataTypes.ReadNextNbt(packetData); // Heightmaps
if (protocolversion == MC_1_17_Version || protocolversion == MC_1_17_1_Version)
if (protocolVersion == MC_1_17_Version || protocolVersion == MC_1_17_1_Version)
{
int biomesLength = dataTypes.ReadNextVarInt(packetData); // Biomes length
for (int i = 0; i < biomesLength; i++)
@ -566,12 +574,12 @@ namespace MinecraftClient.Protocol.Handlers
else
{
bool chunksContinuous = dataTypes.ReadNextBool(packetData);
if (protocolversion >= MC_1_16_Version && protocolversion <= MC_1_16_1_Version)
if (protocolVersion >= MC_1_16_Version && protocolVersion <= MC_1_16_1_Version)
dataTypes.ReadNextBool(packetData); // Ignore old data - 1.16 to 1.16.1 only
ushort chunkMask = protocolversion >= MC_1_9_Version
ushort chunkMask = protocolVersion >= MC_1_9_Version
? (ushort)dataTypes.ReadNextVarInt(packetData)
: dataTypes.ReadNextUShort(packetData);
if (protocolversion < MC_1_8_Version)
if (protocolVersion < MC_1_8_Version)
{
ushort addBitmap = dataTypes.ReadNextUShort(packetData);
int compressedDataSize = dataTypes.ReadNextInt(packetData);
@ -584,15 +592,15 @@ namespace MinecraftClient.Protocol.Handlers
}
else
{
if (protocolversion >= MC_1_14_Version)
if (protocolVersion >= MC_1_14_Version)
dataTypes.ReadNextNbt(packetData); // Heightmaps - 1.14 and above
int biomesLength = 0;
if (protocolversion >= MC_1_16_2_Version)
if (protocolVersion >= MC_1_16_2_Version)
if (chunksContinuous)
biomesLength = dataTypes.ReadNextVarInt(packetData); // Biomes length - 1.16.2 and above
if (protocolversion >= MC_1_15_Version && chunksContinuous)
if (protocolVersion >= MC_1_15_Version && chunksContinuous)
{
if (protocolversion >= MC_1_16_2_Version)
if (protocolVersion >= MC_1_16_2_Version)
{
for (int i = 0; i < biomesLength; i++)
{
@ -615,13 +623,13 @@ namespace MinecraftClient.Protocol.Handlers
case PacketTypesIn.MapData:
int mapid = dataTypes.ReadNextVarInt(packetData);
byte scale = dataTypes.ReadNextByte(packetData);
bool trackingposition = protocolversion >= MC_1_17_Version ? false : dataTypes.ReadNextBool(packetData);
bool trackingposition = protocolVersion >= MC_1_17_Version ? false : dataTypes.ReadNextBool(packetData);
bool locked = false;
if (protocolversion >= MC_1_14_Version)
if (protocolVersion >= MC_1_14_Version)
{
locked = dataTypes.ReadNextBool(packetData);
}
if (protocolversion >= MC_1_17_Version)
if (protocolVersion >= MC_1_17_Version)
{
trackingposition = dataTypes.ReadNextBool(packetData);
}
@ -629,7 +637,7 @@ namespace MinecraftClient.Protocol.Handlers
handler.OnMapData(mapid, scale, trackingposition, locked, iconcount);
break;
case PacketTypesIn.TradeList:
if ((protocolversion >= MC_1_14_Version) && (handler.GetInventoryEnabled()))
if ((protocolVersion >= MC_1_14_Version) && (handler.GetInventoryEnabled()))
{
// MC 1.14 or greater
int windowID = dataTypes.ReadNextVarInt(packetData);
@ -651,7 +659,7 @@ namespace MinecraftClient.Protocol.Handlers
}
break;
case PacketTypesIn.Title:
if (protocolversion >= MC_1_8_Version)
if (protocolVersion >= MC_1_8_Version)
{
int action2 = dataTypes.ReadNextVarInt(packetData);
string titletext = String.Empty;
@ -661,7 +669,7 @@ namespace MinecraftClient.Protocol.Handlers
int fadein = -1;
int stay = -1;
int fadeout = -1;
if (protocolversion >= MC_1_10_Version)
if (protocolVersion >= MC_1_10_Version)
{
if (action2 == 0)
{
@ -710,7 +718,7 @@ namespace MinecraftClient.Protocol.Handlers
case PacketTypesIn.MultiBlockChange:
if (handler.GetTerrainEnabled())
{
if (protocolversion >= MC_1_16_2_Version)
if (protocolVersion >= MC_1_16_2_Version)
{
long chunkSection = dataTypes.ReadNextLong(packetData);
int sectionX = (int)(chunkSection >> 42);
@ -738,7 +746,7 @@ namespace MinecraftClient.Protocol.Handlers
{
int chunkX = dataTypes.ReadNextInt(packetData);
int chunkZ = dataTypes.ReadNextInt(packetData);
int recordCount = protocolversion < MC_1_8_Version
int recordCount = protocolVersion < MC_1_8_Version
? (int)dataTypes.ReadNextShort(packetData)
: dataTypes.ReadNextVarInt(packetData);
@ -748,7 +756,7 @@ namespace MinecraftClient.Protocol.Handlers
ushort blockIdMeta;
int blockY;
if (protocolversion < MC_1_8_Version)
if (protocolVersion < MC_1_8_Version)
{
blockIdMeta = dataTypes.ReadNextUShort(packetData);
blockY = (ushort)dataTypes.ReadNextByte(packetData);
@ -787,7 +795,7 @@ namespace MinecraftClient.Protocol.Handlers
case PacketTypesIn.BlockChange:
if (handler.GetTerrainEnabled())
{
if (protocolversion < MC_1_8_Version)
if (protocolVersion < MC_1_8_Version)
{
int blockX = dataTypes.ReadNextInt(packetData);
int blockY = dataTypes.ReadNextByte(packetData);
@ -823,14 +831,14 @@ namespace MinecraftClient.Protocol.Handlers
break;
case PacketTypesIn.MapChunkBulk:
if (protocolversion < MC_1_9_Version && handler.GetTerrainEnabled())
if (protocolVersion < MC_1_9_Version && handler.GetTerrainEnabled())
{
int chunkCount;
bool hasSkyLight;
Queue<byte> chunkData = packetData;
//Read global fields
if (protocolversion < MC_1_8_Version)
if (protocolVersion < MC_1_8_Version)
{
chunkCount = dataTypes.ReadNextShort(packetData);
int compressedDataSize = dataTypes.ReadNextInt(packetData);
@ -855,7 +863,7 @@ namespace MinecraftClient.Protocol.Handlers
chunkXs[chunkColumnNo] = dataTypes.ReadNextInt(packetData);
chunkZs[chunkColumnNo] = dataTypes.ReadNextInt(packetData);
chunkMasks[chunkColumnNo] = dataTypes.ReadNextUShort(packetData);
addBitmaps[chunkColumnNo] = protocolversion < MC_1_8_Version
addBitmaps[chunkColumnNo] = protocolVersion < MC_1_8_Version
? dataTypes.ReadNextUShort(packetData)
: (ushort)0;
}
@ -866,7 +874,7 @@ namespace MinecraftClient.Protocol.Handlers
}
break;
case PacketTypesIn.UnloadChunk:
if (protocolversion >= MC_1_9_Version && handler.GetTerrainEnabled())
if (protocolVersion >= MC_1_9_Version && handler.GetTerrainEnabled())
{
int chunkX = dataTypes.ReadNextInt(packetData);
int chunkZ = dataTypes.ReadNextInt(packetData);
@ -881,7 +889,7 @@ namespace MinecraftClient.Protocol.Handlers
}
break;
case PacketTypesIn.PlayerInfo:
if (protocolversion >= MC_1_8_Version)
if (protocolVersion >= MC_1_8_Version)
{
int action = dataTypes.ReadNextVarInt(packetData); // Action Name
int numberOfPlayers = dataTypes.ReadNextVarInt(packetData); // Number Of Players
@ -918,7 +926,7 @@ namespace MinecraftClient.Protocol.Handlers
// 1.19 Additions
long? keyExpiration = null;
byte[]? publicKey = null, signature = null;
if (protocolversion >= MC_1_19_Version)
if (protocolVersion >= MC_1_19_Version)
{
if (dataTypes.ReadNextBool(packetData)) // Has Sig Data (if true, red the following fields)
{
@ -968,7 +976,7 @@ namespace MinecraftClient.Protocol.Handlers
}
break;
case PacketTypesIn.TabComplete:
if (protocolversion >= MC_1_13_Version)
if (protocolVersion >= MC_1_13_Version)
{
autocomplete_transaction_id = dataTypes.ReadNextVarInt(packetData);
dataTypes.ReadNextVarInt(packetData); // Start of text to replace
@ -981,7 +989,7 @@ namespace MinecraftClient.Protocol.Handlers
for (int i = 0; i < autocomplete_count; i++)
{
autocomplete_result.Add(dataTypes.ReadNextString(packetData));
if (protocolversion >= MC_1_13_Version)
if (protocolVersion >= MC_1_13_Version)
{
// Skip optional tooltip for each tab-complete result
if (dataTypes.ReadNextBool(packetData))
@ -994,7 +1002,7 @@ namespace MinecraftClient.Protocol.Handlers
case PacketTypesIn.PluginMessage:
String channel = dataTypes.ReadNextString(packetData);
// Length is unneeded as the whole remaining packetData is the entire payload of the packet.
if (protocolversion < MC_1_8_Version)
if (protocolVersion < MC_1_8_Version)
pForge.ReadNextVarShort(packetData);
handler.OnPluginChannelMessage(channel, packetData.ToArray());
return pForge.HandlePluginMessage(channel, packetData, ref currentDimension);
@ -1002,13 +1010,13 @@ namespace MinecraftClient.Protocol.Handlers
handler.OnConnectionLost(ChatBot.DisconnectReason.InGameKick, ChatParser.ParseText(dataTypes.ReadNextString(packetData)));
return false;
case PacketTypesIn.SetCompression:
if (protocolversion >= MC_1_8_Version && protocolversion < MC_1_9_Version)
if (protocolVersion >= MC_1_8_Version && protocolVersion < MC_1_9_Version)
compression_treshold = dataTypes.ReadNextVarInt(packetData);
break;
case PacketTypesIn.OpenWindow:
if (handler.GetInventoryEnabled())
{
if (protocolversion < MC_1_14_Version)
if (protocolVersion < MC_1_14_Version)
{
// MC 1.13 or lower
byte windowID = dataTypes.ReadNextByte(packetData);
@ -1045,7 +1053,7 @@ namespace MinecraftClient.Protocol.Handlers
int stateId = -1;
int elements = 0;
if (protocolversion >= MC_1_17_1_Version)
if (protocolVersion >= MC_1_17_1_Version)
{
// State ID and Elements as VarInt - 1.17.1 and above
stateId = dataTypes.ReadNextVarInt(packetData);
@ -1065,7 +1073,7 @@ namespace MinecraftClient.Protocol.Handlers
inventorySlots[slotId] = item;
}
if (protocolversion >= MC_1_17_1_Version) // Carried Item - 1.17.1 and above
if (protocolVersion >= MC_1_17_1_Version) // Carried Item - 1.17.1 and above
dataTypes.ReadNextItemSlot(packetData, itemPalette);
handler.OnWindowItems(windowId, inventorySlots, stateId);
@ -1076,7 +1084,7 @@ namespace MinecraftClient.Protocol.Handlers
{
byte windowID = dataTypes.ReadNextByte(packetData);
int stateId = -1;
if (protocolversion >= MC_1_17_1_Version)
if (protocolVersion >= MC_1_17_1_Version)
stateId = dataTypes.ReadNextVarInt(packetData); // State ID - 1.17.1 and above
short slotID = dataTypes.ReadNextShort(packetData);
Item item = dataTypes.ReadNextItemSlot(packetData, itemPalette);
@ -1099,7 +1107,7 @@ namespace MinecraftClient.Protocol.Handlers
string url = dataTypes.ReadNextString(packetData);
string hash = dataTypes.ReadNextString(packetData);
bool forced = true; // Assume forced for MC 1.16 and below
if (protocolversion >= MC_1_17_Version)
if (protocolVersion >= MC_1_17_Version)
{
forced = dataTypes.ReadNextBool(packetData);
string forcedMessage = ChatParser.ParseText(dataTypes.ReadNextString(packetData));
@ -1111,7 +1119,7 @@ namespace MinecraftClient.Protocol.Handlers
break;
//Send back "accepted" and "successfully loaded" responses for plugins or server config making use of resource pack mandatory
byte[] responseHeader = new byte[0];
if (protocolversion < MC_1_10_Version) //MC 1.10 does not include resource pack hash in responses
if (protocolVersion < MC_1_10_Version) //MC 1.10 does not include resource pack hash in responses
responseHeader = dataTypes.ConcatBytes(dataTypes.GetVarInt(hash.Length), Encoding.UTF8.GetBytes(hash));
SendPacket(PacketTypesOut.ResourcePackStatus, dataTypes.ConcatBytes(responseHeader, dataTypes.GetVarInt(3))); //Accepted pack
SendPacket(PacketTypesOut.ResourcePackStatus, dataTypes.ConcatBytes(responseHeader, dataTypes.GetVarInt(0))); //Successfully loaded
@ -1127,7 +1135,7 @@ namespace MinecraftClient.Protocol.Handlers
if (handler.GetEntityHandlingEnabled())
{
int entityid = dataTypes.ReadNextVarInt(packetData);
if (protocolversion >= MC_1_16_Version)
if (protocolVersion >= MC_1_16_Version)
{
bool hasNext;
do
@ -1188,7 +1196,7 @@ namespace MinecraftClient.Protocol.Handlers
bool hasFactorData = false;
Dictionary<string, object>? factorCodec = null;
if (protocolversion >= MC_1_19_Version)
if (protocolVersion >= MC_1_19_Version)
{
hasFactorData = dataTypes.ReadNextBool(packetData);
factorCodec = dataTypes.ReadNextNbt(packetData);
@ -1202,7 +1210,7 @@ namespace MinecraftClient.Protocol.Handlers
if (handler.GetEntityHandlingEnabled())
{
int entityCount = 1; // 1.17.0 has only one entity per packet
if (protocolversion != MC_1_17_Version)
if (protocolVersion != MC_1_17_Version)
entityCount = dataTypes.ReadNextVarInt(packetData); // All other versions have a "count" field
int[] entityList = new int[entityCount];
for (int i = 0; i < entityCount; i++)
@ -1246,7 +1254,7 @@ namespace MinecraftClient.Protocol.Handlers
if (handler.GetEntityHandlingEnabled())
{
int EntityID = dataTypes.ReadNextVarInt(packetData);
int NumberOfProperties = protocolversion >= MC_1_17_Version ? dataTypes.ReadNextVarInt(packetData) : dataTypes.ReadNextInt(packetData);
int NumberOfProperties = protocolVersion >= MC_1_17_Version ? dataTypes.ReadNextVarInt(packetData) : dataTypes.ReadNextInt(packetData);
Dictionary<string, Double> keys = new Dictionary<string, Double>();
for (int i = 0; i < NumberOfProperties; i++)
{
@ -1285,11 +1293,11 @@ namespace MinecraftClient.Protocol.Handlers
// See https://wiki.vg/Entity_metadata#Living_Entity
int healthField = 7; // From 1.10 to 1.13.2
if (protocolversion >= MC_1_14_Version)
if (protocolVersion >= MC_1_14_Version)
healthField = 8; // 1.14 and above
if (protocolversion >= MC_1_17_Version)
if (protocolVersion >= MC_1_17_Version)
healthField = 9; // 1.17 and above
if (protocolversion > MC_1_18_2_Version)
if (protocolVersion > MC_1_19_Version)
throw new NotImplementedException(Translations.Get("exception.palette.healthfield"));
if (metadata.ContainsKey(healthField) && metadata[healthField] != null && metadata[healthField].GetType() == typeof(float))
@ -1333,7 +1341,7 @@ namespace MinecraftClient.Protocol.Handlers
case PacketTypesIn.UpdateHealth:
float health = dataTypes.ReadNextFloat(packetData);
int food;
if (protocolversion >= MC_1_8_Version)
if (protocolVersion >= MC_1_8_Version)
food = dataTypes.ReadNextVarInt(packetData);
else
food = dataTypes.ReadNextShort(packetData);
@ -1348,12 +1356,12 @@ namespace MinecraftClient.Protocol.Handlers
break;
case PacketTypesIn.Explosion:
Location explosionLocation;
if (protocolversion >= MC_1_19_Version)
if (protocolVersion >= MC_1_19_Version)
explosionLocation = new(dataTypes.ReadNextDouble(packetData), dataTypes.ReadNextDouble(packetData), dataTypes.ReadNextDouble(packetData));
else
explosionLocation = new(dataTypes.ReadNextFloat(packetData), dataTypes.ReadNextFloat(packetData), dataTypes.ReadNextFloat(packetData));
float explosionStrength = dataTypes.ReadNextFloat(packetData);
int explosionBlockCount = protocolversion >= MC_1_17_Version
int explosionBlockCount = protocolVersion >= MC_1_17_Version
? dataTypes.ReadNextVarInt(packetData)
: dataTypes.ReadNextInt(packetData);
// Ignoring additional fields (records, pushback)
@ -1377,12 +1385,12 @@ namespace MinecraftClient.Protocol.Handlers
break;
case PacketTypesIn.UpdateScore:
string entityname = dataTypes.ReadNextString(packetData);
int action3 = protocolversion >= MC_1_18_2_Version
int action3 = protocolVersion >= MC_1_18_2_Version
? dataTypes.ReadNextVarInt(packetData)
: dataTypes.ReadNextByte(packetData);
string objectivename2 = string.Empty;
int value = -1;
if (action3 != 1 || protocolversion >= MC_1_8_Version)
if (action3 != 1 || protocolVersion >= MC_1_8_Version)
objectivename2 = dataTypes.ReadNextString(packetData);
if (action3 != 1)
value = dataTypes.ReadNextVarInt(packetData);
@ -1421,7 +1429,7 @@ namespace MinecraftClient.Protocol.Handlers
Translations.Get("exception.packet_process",
packetPalette.GetIncommingTypeById(packetID),
packetID,
protocolversion,
protocolVersion,
login_phase,
innerException.GetType()),
innerException);
@ -1515,7 +1523,7 @@ namespace MinecraftClient.Protocol.Handlers
/// <returns>True if login successful</returns>
public bool Login(PlayerKeyPair? playerKeyPair)
{
byte[] protocol_version = dataTypes.GetVarInt(protocolversion);
byte[] protocol_version = dataTypes.GetVarInt(protocolVersion);
string server_address = pForge.GetServerAddress(handler.GetServerHost());
byte[] server_port = dataTypes.GetUShort((ushort)handler.GetServerPort());
byte[] next_state = dataTypes.GetVarInt(2);
@ -1524,7 +1532,7 @@ namespace MinecraftClient.Protocol.Handlers
List<byte> fullLoginPacket = new List<byte>();
fullLoginPacket.AddRange(dataTypes.GetString(handler.GetUsername())); // Username
if (protocolversion >= MC_1_19_Version)
if (protocolVersion >= MC_1_19_Version)
{
if (playerKeyPair == null)
fullLoginPacket.AddRange(dataTypes.GetBool(false)); // Has Sig Data
@ -1598,7 +1606,7 @@ namespace MinecraftClient.Protocol.Handlers
// Encryption Response packet
List<byte> encryptionResponse = new();
encryptionResponse.AddRange(dataTypes.GetArray(RSAService.Encrypt(secretKey, false))); // Shared Secret
if (protocolversion >= Protocol18Handler.MC_1_19_Version)
if (protocolVersion >= Protocol18Handler.MC_1_19_Version)
{
if (playerKeyPair == null)
{
@ -1646,7 +1654,7 @@ namespace MinecraftClient.Protocol.Handlers
Guid uuidReceived = dataTypes.ReadNextUUID(packetData);
string userName = dataTypes.ReadNextString(packetData);
Tuple<string, string, string>[]? playerProperty = null;
if (protocolversion >= Protocol18Handler.MC_1_19_Version)
if (protocolVersion >= Protocol18Handler.MC_1_19_Version)
{
int count = dataTypes.ReadNextVarInt(packetData); // Number Of Properties
playerProperty = new Tuple<string, string, string>[count];
@ -1701,9 +1709,9 @@ namespace MinecraftClient.Protocol.Handlers
byte[] tabcomplete_packet = new byte[] { };
if (protocolversion >= MC_1_8_Version)
if (protocolVersion >= MC_1_8_Version)
{
if (protocolversion >= MC_1_13_Version)
if (protocolVersion >= MC_1_13_Version)
{
tabcomplete_packet = dataTypes.ConcatBytes(tabcomplete_packet, transaction_id);
tabcomplete_packet = dataTypes.ConcatBytes(tabcomplete_packet, dataTypes.GetString(BehindCursor));
@ -1712,7 +1720,7 @@ namespace MinecraftClient.Protocol.Handlers
{
tabcomplete_packet = dataTypes.ConcatBytes(tabcomplete_packet, dataTypes.GetString(BehindCursor));
if (protocolversion >= MC_1_9_Version)
if (protocolVersion >= MC_1_9_Version)
{
tabcomplete_packet = dataTypes.ConcatBytes(tabcomplete_packet, assume_command);
}
@ -1745,7 +1753,7 @@ namespace MinecraftClient.Protocol.Handlers
/// Ping a Minecraft server to get information about the server
/// </summary>
/// <returns>True if ping was successful</returns>
public static bool doPing(string host, int port, ref int protocolversion, ref ForgeInfo? forgeInfo)
public static bool doPing(string host, int port, ref int protocolVersion, ref ForgeInfo? forgeInfo)
{
string version = "";
TcpClient tcp = ProxyHandler.newTcpClient(host, port);
@ -1797,12 +1805,12 @@ namespace MinecraftClient.Protocol.Handlers
//Retrieve protocol version number for handling this server
if (versionData.Properties.ContainsKey("protocol"))
protocolversion = int.Parse(versionData.Properties["protocol"].StringValue);
protocolVersion = int.Parse(versionData.Properties["protocol"].StringValue);
// Check for forge on the server.
Protocol18Forge.ServerInfoCheckForge(jsonData, ref forgeInfo);
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.server_protocol", version, protocolversion + (forgeInfo != null ? Translations.Get("mcc.with_forge") : "")));
ConsoleIO.WriteLineFormatted(Translations.Get("mcc.server_protocol", version, protocolVersion + (forgeInfo != null ? Translations.Get("mcc.with_forge") : "")));
return true;
}
@ -1818,7 +1826,7 @@ namespace MinecraftClient.Protocol.Handlers
/// <returns>Max length, in characters</returns>
public int GetMaxChatMessageLength()
{
return protocolversion > MC_1_10_Version
return protocolVersion > MC_1_10_Version
? 256
: 100;
}
@ -1832,7 +1840,7 @@ namespace MinecraftClient.Protocol.Handlers
/// <returns>Minecraft Protocol version number</returns>
public int GetProtocolVersion()
{
return protocolversion;
return protocolVersion;
}
@ -1953,7 +1961,7 @@ namespace MinecraftClient.Protocol.Handlers
return true;
// Process Chat Command - 1.19 and above
if (protocolversion >= MC_1_19_Version && message.StartsWith('/'))
if (protocolVersion >= MC_1_19_Version && message.StartsWith('/'))
return SendChatCommand(message[1..], playerKeyPair);
try
@ -1963,7 +1971,7 @@ namespace MinecraftClient.Protocol.Handlers
// Message: String (up to 256 chars)
fields.AddRange(dataTypes.GetString(message));
if (protocolversion >= MC_1_19_Version)
if (protocolVersion >= MC_1_19_Version)
{
// Timestamp: Instant(Long)
DateTimeOffset timeNow = DateTimeOffset.UtcNow;
@ -2041,7 +2049,7 @@ namespace MinecraftClient.Protocol.Handlers
return false;
// Plugin channels were significantly changed between Minecraft 1.12 and 1.13
// https://wiki.vg/index.php?title=Pre-release_protocol&oldid=14132#Plugin_Channels
if (protocolversion >= MC_1_13_Version)
if (protocolVersion >= MC_1_13_Version)
{
return SendPluginChannelPacket("minecraft:brand", dataTypes.GetString(brandInfo));
}
@ -2069,26 +2077,26 @@ namespace MinecraftClient.Protocol.Handlers
List<byte> fields = new List<byte>();
fields.AddRange(dataTypes.GetString(language));
fields.Add(viewDistance);
fields.AddRange(protocolversion >= MC_1_9_Version
fields.AddRange(protocolVersion >= MC_1_9_Version
? dataTypes.GetVarInt(chatMode)
: new byte[] { chatMode });
fields.Add(chatColors ? (byte)1 : (byte)0);
if (protocolversion < MC_1_8_Version)
if (protocolVersion < MC_1_8_Version)
{
fields.Add(difficulty);
fields.Add((byte)(skinParts & 0x1)); //show cape
}
else fields.Add(skinParts);
if (protocolversion >= MC_1_9_Version)
if (protocolVersion >= MC_1_9_Version)
fields.AddRange(dataTypes.GetVarInt(mainHand));
if (protocolversion >= MC_1_17_Version)
if (protocolVersion >= MC_1_17_Version)
{
if (protocolversion >= MC_1_18_1_Version)
if (protocolVersion >= MC_1_18_1_Version)
fields.Add(0); // 1.18 and above - Enable text filtering. (Always false)
else
fields.Add(1); // 1.17 and 1.17.1 - Disable text filtering. (Always true)
}
if (protocolversion >= MC_1_18_1_Version)
if (protocolVersion >= MC_1_18_1_Version)
fields.Add(1); // 1.18 and above - Allow server listings
SendPacket(PacketTypesOut.ClientSettings, fields);
}
@ -2124,7 +2132,7 @@ namespace MinecraftClient.Protocol.Handlers
SendPacket(packetType, dataTypes.ConcatBytes(
dataTypes.GetDouble(location.X),
dataTypes.GetDouble(location.Y),
protocolversion < MC_1_8_Version
protocolVersion < MC_1_8_Version
? dataTypes.GetDouble(location.Y + 1.62)
: new byte[0],
dataTypes.GetDouble(location.Z),
@ -2150,7 +2158,7 @@ namespace MinecraftClient.Protocol.Handlers
{
// In 1.7, length needs to be included.
// In 1.8, it must not be.
if (protocolversion < MC_1_8_Version)
if (protocolVersion < MC_1_8_Version)
{
byte[] length = BitConverter.GetBytes((short)data.Length);
Array.Reverse(length);
@ -2205,7 +2213,7 @@ namespace MinecraftClient.Protocol.Handlers
// Is player Sneaking (Only 1.16 and above)
// Currently hardcoded to false
// TODO: Update to reflect the real player state
if (protocolversion >= MC_1_16_Version)
if (protocolVersion >= MC_1_16_Version)
fields.AddRange(dataTypes.GetBool(false));
SendPacket(PacketTypesOut.InteractEntity, fields);
@ -2231,7 +2239,7 @@ namespace MinecraftClient.Protocol.Handlers
// Is player Sneaking (Only 1.16 and above)
// Currently hardcoded to false
// TODO: Update to reflect the real player state
if (protocolversion >= MC_1_16_Version)
if (protocolVersion >= MC_1_16_Version)
fields.AddRange(dataTypes.GetBool(false));
SendPacket(PacketTypesOut.InteractEntity, fields);
return true;
@ -2251,7 +2259,7 @@ namespace MinecraftClient.Protocol.Handlers
// Is player Sneaking (Only 1.16 and above)
// Currently hardcoded to false
// TODO: Update to reflect the real player state
if (protocolversion >= MC_1_16_Version)
if (protocolVersion >= MC_1_16_Version)
fields.AddRange(dataTypes.GetBool(false));
SendPacket(PacketTypesOut.InteractEntity, fields);
return true;
@ -2267,7 +2275,7 @@ namespace MinecraftClient.Protocol.Handlers
public bool SendUseItem(int hand, int sequenceId)
{
if (protocolversion < MC_1_9_Version)
if (protocolVersion < MC_1_9_Version)
return false; // Packet does not exist prior to MC 1.9
// According to https://wiki.vg/index.php?title=Protocol&oldid=5486#Player_Block_Placement
// MC 1.7 does this using Player Block Placement with special values
@ -2276,7 +2284,7 @@ namespace MinecraftClient.Protocol.Handlers
{
List<byte> packet = new List<byte>();
packet.AddRange(dataTypes.GetVarInt(hand));
if (protocolversion >= MC_1_19_Version)
if (protocolVersion >= MC_1_19_Version)
packet.AddRange(dataTypes.GetVarInt(sequenceId));
SendPacket(PacketTypesOut.UseItem, packet);
return true;
@ -2294,7 +2302,7 @@ namespace MinecraftClient.Protocol.Handlers
packet.AddRange(dataTypes.GetVarInt(status));
packet.AddRange(dataTypes.GetLocation(location));
packet.AddRange(dataTypes.GetVarInt(dataTypes.GetBlockFace(face)));
if (protocolversion >= MC_1_19_Version)
if (protocolVersion >= MC_1_19_Version)
packet.AddRange(dataTypes.GetVarInt(sequenceId));
SendPacket(PacketTypesOut.PlayerDigging, packet);
return true;
@ -2306,7 +2314,7 @@ namespace MinecraftClient.Protocol.Handlers
public bool SendPlayerBlockPlacement(int hand, Location location, Direction face, int sequenceId)
{
if (protocolversion < MC_1_14_Version)
if (protocolVersion < MC_1_14_Version)
return false; // NOT IMPLEMENTED for older MC versions
try
{
@ -2318,7 +2326,7 @@ namespace MinecraftClient.Protocol.Handlers
packet.AddRange(dataTypes.GetFloat(0.5f)); // cursorY
packet.AddRange(dataTypes.GetFloat(0.5f)); // cursorZ
packet.Add(0); // insideBlock = false;
if (protocolversion >= MC_1_19_Version)
if (protocolVersion >= MC_1_19_Version)
packet.AddRange(dataTypes.GetVarInt(sequenceId));
SendPacket(PacketTypesOut.PlayerBlockPlacement, packet);
return true;
@ -2381,13 +2389,13 @@ namespace MinecraftClient.Protocol.Handlers
packet.Add((byte)windowId); // Window ID
// 1.18+
if (protocolversion >= MC_1_18_1_Version)
if (protocolVersion >= MC_1_18_1_Version)
{
packet.AddRange(dataTypes.GetVarInt(stateId)); // State ID
packet.AddRange(dataTypes.GetShort((short)slotId)); // Slot ID
}
// 1.17.1
else if (protocolversion == MC_1_17_1_Version)
else if (protocolVersion == MC_1_17_1_Version)
{
packet.AddRange(dataTypes.GetShort((short)slotId)); // Slot ID
packet.AddRange(dataTypes.GetVarInt(stateId)); // State ID
@ -2400,15 +2408,15 @@ namespace MinecraftClient.Protocol.Handlers
packet.Add(button); // Button
if (protocolversion < MC_1_17_Version)
if (protocolVersion < MC_1_17_Version)
packet.AddRange(dataTypes.GetShort(actionNumber));
if (protocolversion >= MC_1_9_Version)
if (protocolVersion >= MC_1_9_Version)
packet.AddRange(dataTypes.GetVarInt(mode)); // Mode
else packet.Add(mode);
// 1.17+ Array of changed slots
if (protocolversion >= MC_1_17_Version)
if (protocolVersion >= MC_1_17_Version)
{
packet.AddRange(dataTypes.GetVarInt(changedSlots.Count)); // Length of the array
foreach (var slot in changedSlots)
@ -2451,12 +2459,12 @@ namespace MinecraftClient.Protocol.Handlers
{
List<byte> packet = new List<byte>();
if (protocolversion < MC_1_8_Version)
if (protocolVersion < MC_1_8_Version)
{
packet.AddRange(dataTypes.GetInt(playerid));
packet.Add((byte)1); // Swing arm
}
else if (protocolversion < MC_1_9_Version)
else if (protocolVersion < MC_1_9_Version)
{
// No fields in 1.8.X
}
@ -2524,7 +2532,7 @@ namespace MinecraftClient.Protocol.Handlers
public bool UpdateCommandBlock(Location location, string command, CommandBlockMode mode, CommandBlockFlags flags)
{
if (protocolversion <= MC_1_13_Version)
if (protocolVersion <= MC_1_13_Version)
{
try
{
@ -2562,7 +2570,7 @@ namespace MinecraftClient.Protocol.Handlers
public bool SelectTrade(int selectedSlot)
{
// MC 1.13 or greater
if (protocolversion >= MC_1_13_Version)
if (protocolVersion >= MC_1_13_Version)
{
try
{
@ -2581,7 +2589,7 @@ namespace MinecraftClient.Protocol.Handlers
public bool SendSpectate(Guid UUID)
{
// MC 1.8 or greater
if (protocolversion >= MC_1_8_Version)
if (protocolVersion >= MC_1_8_Version)
{
try
{