Added Item, Entity, Block, Material Palettes for 1.19. Fixed SpawnEntity and disabled BlockChange packet on 1.19 to prevent crashing until it's fixed. Enabled Entity and Inventory handling.

This commit is contained in:
Milutinke 2022-08-22 19:46:30 +02:00
parent e150bd569b
commit d7310e477b
20 changed files with 3161 additions and 218 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
@ -14,9 +13,10 @@ namespace MinecraftClient.Inventory
{
Unknown = -2, // Unsupported item type (Forge mod custom item...)
Null = -1, // Unspecified item type (Used in the network protocol)
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,

View file

@ -372,7 +372,7 @@ namespace MinecraftClient.Mapping
case Material.PurpurPillar:
case Material.PurpurStairs:
case Material.EndStoneBricks:
case Material.GrassPath:
case Material.DirtPath:
case Material.RepeatingCommandBlock:
case Material.ChainCommandBlock:
case Material.FrostedIce:

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);
@ -798,7 +806,12 @@ namespace MinecraftClient.Protocol.Handlers
}
else
{
handler.GetWorld().SetBlock(dataTypes.ReadNextLocation(packetData), new Block((ushort)dataTypes.ReadNextVarInt(packetData)));
if (protocolVersion < MC_1_19_Version)
handler.GetWorld().SetBlock(dataTypes.ReadNextLocation(packetData), new Block((ushort)dataTypes.ReadNextVarInt(packetData)));
else
{
// 1.19 disabled due to crashing
}
}
}
break;
@ -823,14 +836,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 +868,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 +879,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 +894,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 +931,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 +981,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 +994,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 +1007,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 +1015,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 +1058,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 +1078,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 +1089,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 +1112,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 +1124,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 +1140,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 +1201,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 +1215,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 +1259,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 +1298,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 +1346,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 +1361,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 +1390,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 +1434,7 @@ namespace MinecraftClient.Protocol.Handlers
Translations.Get("exception.packet_process",
packetPalette.GetIncommingTypeById(packetID),
packetID,
protocolversion,
protocolVersion,
login_phase,
innerException.GetType()),
innerException);
@ -1515,7 +1528,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 +1537,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 +1611,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 +1659,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 +1714,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 +1725,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 +1758,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 +1810,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 +1831,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 +1845,7 @@ namespace MinecraftClient.Protocol.Handlers
/// <returns>Minecraft Protocol version number</returns>
public int GetProtocolVersion()
{
return protocolversion;
return protocolVersion;
}
@ -1953,7 +1966,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 +1976,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 +2054,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 +2082,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 +2137,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 +2163,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 +2218,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 +2244,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 +2264,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 +2280,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 +2289,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 +2307,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 +2319,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 +2331,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 +2394,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 +2413,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 +2464,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 +2537,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 +2575,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 +2594,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
{