mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2025-10-14 21:22:49 +00:00
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:
parent
e150bd569b
commit
d7310e477b
20 changed files with 3161 additions and 218 deletions
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
1171
MinecraftClient/Inventory/ItemPalettes/ItemPalette119.cs
Normal file
1171
MinecraftClient/Inventory/ItemPalettes/ItemPalette119.cs
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
|
|
|
|||
1530
MinecraftClient/Mapping/BlockPalettes/Palette119.cs
Normal file
1530
MinecraftClient/Mapping/BlockPalettes/Palette119.cs
Normal file
File diff suppressed because it is too large
Load diff
137
MinecraftClient/Mapping/EntityPalettes/EntityPalette119.cs
Normal file
137
MinecraftClient/Mapping/EntityPalettes/EntityPalette119.cs
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -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,
|
||||
|
|
|
|||
|
|
@ -367,7 +367,7 @@ namespace MinecraftClient.Mapping
|
|||
Material.Farmland,
|
||||
Material.Grass,
|
||||
Material.GrassBlock,
|
||||
Material.GrassPath,
|
||||
Material.DirtPath,
|
||||
Material.Gravel,
|
||||
Material.GrayConcretePowder,
|
||||
Material.GreenConcretePowder,
|
||||
|
|
|
|||
|
|
@ -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:
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue