mirror of
https://github.com/MCCTeam/Minecraft-Console-Client
synced 2026-08-29 13:04:59 +00:00
MC 1.14 Terrain support (#703)
Minecraft 1.14 is now fully supported. - Implement NBT parsing to skip NBT field in chunk data - Update lighting data format in Chunk Data parsing - Move Chunk Data parsing into Protocol18Terrain.cs - Improve PaletteGenerator to greatly reduce palette files sizes - Re-Generate Palette113.cs to reduce its size (378 Kib -> 50 Kib) - Generate Palette114.cs (57 Kib instead of 516 Kib with prev format) - Update Material.cs and MaterialExtensions.cs for new block types
This commit is contained in:
parent
d2cbc9f1c3
commit
0d58fb9063
11 changed files with 2703 additions and 8900 deletions
|
|
@ -76,12 +76,12 @@ namespace MinecraftClient.Mapping.BlockPalettes
|
|||
{ 60, Material.Farmland }, // Soil
|
||||
{ 61, Material.Furnace }, // Furnace
|
||||
{ 62, Material.Furnace }, // BurningFurnace
|
||||
{ 63, Material.WallSign }, // SignPost
|
||||
{ 63, Material.OakWallSign }, // SignPost
|
||||
{ 64, Material.OakDoor }, // WoodenDoor:0
|
||||
{ 65, Material.Ladder },
|
||||
{ 66, Material.Rail }, // Rails
|
||||
{ 67, Material.CobblestoneStairs },
|
||||
{ 68, Material.WallSign },
|
||||
{ 68, Material.OakWallSign }, // WallSign
|
||||
{ 69, Material.Lever },
|
||||
{ 70, Material.StonePressurePlate }, // StonePlate
|
||||
{ 71, Material.IronDoor }, // IronDoorBlock
|
||||
|
|
|
|||
File diff suppressed because it is too large
Load diff
1116
MinecraftClient/Mapping/BlockPalettes/Palette114.cs
Normal file
1116
MinecraftClient/Mapping/BlockPalettes/Palette114.cs
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -20,16 +20,32 @@ namespace MinecraftClient.Mapping.BlockPalettes
|
|||
/// <returns>state => block name mappings</returns>
|
||||
public static void JsonToClass(string blocksJsonFile, string outputClass, string outputEnum = null)
|
||||
{
|
||||
Dictionary<int, string> blocks = new Dictionary<int, string>();
|
||||
HashSet<int> knownStates = new HashSet<int>();
|
||||
Dictionary<string, HashSet<int>> blocks = new Dictionary<string, HashSet<int>>();
|
||||
|
||||
Json.JSONData palette = Json.ParseJson(File.ReadAllText(blocksJsonFile));
|
||||
foreach (KeyValuePair<string, Json.JSONData> item in palette.Properties)
|
||||
{
|
||||
string blockType = item.Key;
|
||||
//minecraft:item_name => ItemName
|
||||
string blockType = String.Concat(
|
||||
item.Key.Replace("minecraft:", "")
|
||||
.Split('_')
|
||||
.Select(word => char.ToUpper(word[0]) + word.Substring(1))
|
||||
);
|
||||
|
||||
if (blocks.ContainsKey(blockType))
|
||||
throw new InvalidDataException("Duplicate block type " + blockType + "!?");
|
||||
blocks[blockType] = new HashSet<int>();
|
||||
|
||||
foreach (Json.JSONData state in item.Value.Properties["states"].DataArray)
|
||||
{
|
||||
int id = int.Parse(state.Properties["id"].StringValue);
|
||||
blocks[id] = blockType;
|
||||
|
||||
if (knownStates.Contains(id))
|
||||
throw new InvalidDataException("Duplicate state id " + id + "!?");
|
||||
|
||||
knownStates.Add(id);
|
||||
blocks[blockType].Add(id);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
@ -43,24 +59,46 @@ namespace MinecraftClient.Mapping.BlockPalettes
|
|||
"{",
|
||||
" public class PaletteXXX : PaletteMapping",
|
||||
" {",
|
||||
" private static Dictionary<int, Material> materials = new Dictionary<int, Material>()",
|
||||
" private static Dictionary<int, Material> materials = new Dictionary<int, Material>();",
|
||||
"",
|
||||
" static PaletteXXX()",
|
||||
" {",
|
||||
});
|
||||
|
||||
foreach (KeyValuePair<int, string> item in blocks)
|
||||
foreach (KeyValuePair<string, HashSet<int>> blockType in blocks)
|
||||
{
|
||||
//minecraft:item_name => ItemName
|
||||
string name = String.Concat(
|
||||
item.Value.Replace("minecraft:", "")
|
||||
.Split('_')
|
||||
.Select(word => char.ToUpper(word[0]) + word.Substring(1))
|
||||
);
|
||||
outFile.Add(" { " + item.Key + ", Material." + name + " },");
|
||||
materials.Add(name);
|
||||
if (blockType.Value.Count > 0)
|
||||
{
|
||||
List<int> idList = blockType.Value.ToList();
|
||||
string materialName = blockType.Key;
|
||||
materials.Add(materialName);
|
||||
|
||||
if (idList.Count > 1)
|
||||
{
|
||||
idList.Sort();
|
||||
Queue<int> idQueue = new Queue<int>(idList);
|
||||
|
||||
while (idQueue.Count > 0)
|
||||
{
|
||||
int startValue = idQueue.Dequeue();
|
||||
int endValue = startValue;
|
||||
while (idQueue.Count > 0 && idQueue.Peek() == endValue + 1)
|
||||
endValue = idQueue.Dequeue();
|
||||
if (endValue > startValue)
|
||||
{
|
||||
outFile.Add(" for (int i = " + startValue + "; i <= " + endValue + "; i++)");
|
||||
outFile.Add(" materials[i] = Material." + materialName + ";");
|
||||
}
|
||||
else outFile.Add(" materials[" + startValue + "] = Material." + materialName + ";");
|
||||
}
|
||||
}
|
||||
else outFile.Add(" materials[" + idList[0] + "] = Material." + materialName + ";");
|
||||
}
|
||||
else throw new InvalidDataException("No state id for block type " + blockType.Key + "!?");
|
||||
}
|
||||
|
||||
outFile.AddRange(new[] {
|
||||
" };",
|
||||
" }",
|
||||
"",
|
||||
" protected override Dictionary<int, Material> GetDict()",
|
||||
" {",
|
||||
|
|
@ -75,11 +113,18 @@ namespace MinecraftClient.Mapping.BlockPalettes
|
|||
if (outputEnum != null)
|
||||
{
|
||||
outFile = new List<string>();
|
||||
outFile.Add(" public enum Material");
|
||||
outFile.Add(" {");
|
||||
outFile.AddRange(new[] {
|
||||
"namespace MinecraftClient.Mapping",
|
||||
"{",
|
||||
" public enum Material",
|
||||
" {"
|
||||
});
|
||||
foreach (string material in materials)
|
||||
outFile.Add(" " + material + ",");
|
||||
outFile.Add(" }");
|
||||
outFile.AddRange(new[] {
|
||||
" }",
|
||||
"}"
|
||||
});
|
||||
File.WriteAllLines(outputEnum, outFile);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -142,6 +142,9 @@
|
|||
WhiteTulip,
|
||||
PinkTulip,
|
||||
OxeyeDaisy,
|
||||
Cornflower,
|
||||
WitherRose,
|
||||
LilyOfTheValley,
|
||||
BrownMushroom,
|
||||
RedMushroom,
|
||||
GoldBlock,
|
||||
|
|
@ -164,12 +167,22 @@
|
|||
Wheat,
|
||||
Farmland,
|
||||
Furnace,
|
||||
Sign,
|
||||
OakSign,
|
||||
SpruceSign,
|
||||
BirchSign,
|
||||
AcaciaSign,
|
||||
JungleSign,
|
||||
DarkOakSign,
|
||||
OakDoor,
|
||||
Ladder,
|
||||
Rail,
|
||||
CobblestoneStairs,
|
||||
WallSign,
|
||||
OakWallSign,
|
||||
SpruceWallSign,
|
||||
BirchWallSign,
|
||||
AcaciaWallSign,
|
||||
JungleWallSign,
|
||||
DarkOakWallSign,
|
||||
Lever,
|
||||
StonePressurePlate,
|
||||
IronDoor,
|
||||
|
|
@ -222,16 +235,16 @@
|
|||
JungleTrapdoor,
|
||||
AcaciaTrapdoor,
|
||||
DarkOakTrapdoor,
|
||||
StoneBricks,
|
||||
MossyStoneBricks,
|
||||
CrackedStoneBricks,
|
||||
ChiseledStoneBricks,
|
||||
InfestedStone,
|
||||
InfestedCobblestone,
|
||||
InfestedStoneBricks,
|
||||
InfestedMossyStoneBricks,
|
||||
InfestedCrackedStoneBricks,
|
||||
InfestedChiseledStoneBricks,
|
||||
StoneBricks,
|
||||
MossyStoneBricks,
|
||||
CrackedStoneBricks,
|
||||
ChiseledStoneBricks,
|
||||
BrownMushroomBlock,
|
||||
RedMushroomBlock,
|
||||
MushroomStem,
|
||||
|
|
@ -292,6 +305,9 @@
|
|||
PottedWhiteTulip,
|
||||
PottedPinkTulip,
|
||||
PottedOxeyeDaisy,
|
||||
PottedCornflower,
|
||||
PottedLilyOfTheValley,
|
||||
PottedWitherRose,
|
||||
PottedRedMushroom,
|
||||
PottedBrownMushroom,
|
||||
PottedDeadBush,
|
||||
|
|
@ -304,18 +320,18 @@
|
|||
JungleButton,
|
||||
AcaciaButton,
|
||||
DarkOakButton,
|
||||
SkeletonWallSkull,
|
||||
SkeletonSkull,
|
||||
WitherSkeletonWallSkull,
|
||||
SkeletonWallSkull,
|
||||
WitherSkeletonSkull,
|
||||
ZombieWallHead,
|
||||
WitherSkeletonWallSkull,
|
||||
ZombieHead,
|
||||
PlayerWallHead,
|
||||
ZombieWallHead,
|
||||
PlayerHead,
|
||||
CreeperWallHead,
|
||||
PlayerWallHead,
|
||||
CreeperHead,
|
||||
DragonWallHead,
|
||||
CreeperWallHead,
|
||||
DragonHead,
|
||||
DragonWallHead,
|
||||
Anvil,
|
||||
ChippedAnvil,
|
||||
DamagedAnvil,
|
||||
|
|
@ -449,7 +465,9 @@
|
|||
AcaciaSlab,
|
||||
DarkOakSlab,
|
||||
StoneSlab,
|
||||
SmoothStoneSlab,
|
||||
SandstoneSlab,
|
||||
CutSandstoneSlab,
|
||||
PetrifiedOakSlab,
|
||||
CobblestoneSlab,
|
||||
BrickSlab,
|
||||
|
|
@ -457,6 +475,7 @@
|
|||
NetherBrickSlab,
|
||||
QuartzSlab,
|
||||
RedSandstoneSlab,
|
||||
CutRedSandstoneSlab,
|
||||
PurpurSlab,
|
||||
SmoothStone,
|
||||
SmoothSandstone,
|
||||
|
|
@ -585,16 +604,6 @@
|
|||
BubbleCoral,
|
||||
FireCoral,
|
||||
HornCoral,
|
||||
DeadTubeCoralWallFan,
|
||||
DeadBrainCoralWallFan,
|
||||
DeadBubbleCoralWallFan,
|
||||
DeadFireCoralWallFan,
|
||||
DeadHornCoralWallFan,
|
||||
TubeCoralWallFan,
|
||||
BrainCoralWallFan,
|
||||
BubbleCoralWallFan,
|
||||
FireCoralWallFan,
|
||||
HornCoralWallFan,
|
||||
DeadTubeCoralFan,
|
||||
DeadBrainCoralFan,
|
||||
DeadBubbleCoralFan,
|
||||
|
|
@ -605,12 +614,81 @@
|
|||
BubbleCoralFan,
|
||||
FireCoralFan,
|
||||
HornCoralFan,
|
||||
DeadTubeCoralWallFan,
|
||||
DeadBrainCoralWallFan,
|
||||
DeadBubbleCoralWallFan,
|
||||
DeadFireCoralWallFan,
|
||||
DeadHornCoralWallFan,
|
||||
TubeCoralWallFan,
|
||||
BrainCoralWallFan,
|
||||
BubbleCoralWallFan,
|
||||
FireCoralWallFan,
|
||||
HornCoralWallFan,
|
||||
SeaPickle,
|
||||
BlueIce,
|
||||
Conduit,
|
||||
BambooSapling,
|
||||
Bamboo,
|
||||
PottedBamboo,
|
||||
VoidAir,
|
||||
CaveAir,
|
||||
BubbleColumn,
|
||||
PolishedGraniteStairs,
|
||||
SmoothRedSandstoneStairs,
|
||||
MossyStoneBrickStairs,
|
||||
PolishedDioriteStairs,
|
||||
MossyCobblestoneStairs,
|
||||
EndStoneBrickStairs,
|
||||
StoneStairs,
|
||||
SmoothSandstoneStairs,
|
||||
SmoothQuartzStairs,
|
||||
GraniteStairs,
|
||||
AndesiteStairs,
|
||||
RedNetherBrickStairs,
|
||||
PolishedAndesiteStairs,
|
||||
DioriteStairs,
|
||||
PolishedGraniteSlab,
|
||||
SmoothRedSandstoneSlab,
|
||||
MossyStoneBrickSlab,
|
||||
PolishedDioriteSlab,
|
||||
MossyCobblestoneSlab,
|
||||
EndStoneBrickSlab,
|
||||
SmoothSandstoneSlab,
|
||||
SmoothQuartzSlab,
|
||||
GraniteSlab,
|
||||
AndesiteSlab,
|
||||
RedNetherBrickSlab,
|
||||
PolishedAndesiteSlab,
|
||||
DioriteSlab,
|
||||
BrickWall,
|
||||
PrismarineWall,
|
||||
RedSandstoneWall,
|
||||
MossyStoneBrickWall,
|
||||
GraniteWall,
|
||||
StoneBrickWall,
|
||||
NetherBrickWall,
|
||||
AndesiteWall,
|
||||
RedNetherBrickWall,
|
||||
SandstoneWall,
|
||||
EndStoneBrickWall,
|
||||
DioriteWall,
|
||||
Scaffolding,
|
||||
Loom,
|
||||
Barrel,
|
||||
Smoker,
|
||||
BlastFurnace,
|
||||
CartographyTable,
|
||||
FletchingTable,
|
||||
Grindstone,
|
||||
Lectern,
|
||||
SmithingTable,
|
||||
Stonecutter,
|
||||
Bell,
|
||||
Lantern,
|
||||
Campfire,
|
||||
SweetBerryBush,
|
||||
StructureBlock,
|
||||
Jigsaw,
|
||||
Composter,
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -135,7 +135,6 @@ namespace MinecraftClient.Mapping
|
|||
case Material.CraftingTable:
|
||||
case Material.Farmland:
|
||||
case Material.Furnace:
|
||||
case Material.Sign:
|
||||
case Material.OakDoor:
|
||||
case Material.Ladder:
|
||||
case Material.CobblestoneStairs:
|
||||
|
|
@ -176,16 +175,16 @@ namespace MinecraftClient.Mapping
|
|||
case Material.JungleTrapdoor:
|
||||
case Material.AcaciaTrapdoor:
|
||||
case Material.DarkOakTrapdoor:
|
||||
case Material.StoneBricks:
|
||||
case Material.MossyStoneBricks:
|
||||
case Material.CrackedStoneBricks:
|
||||
case Material.ChiseledStoneBricks:
|
||||
case Material.InfestedStone:
|
||||
case Material.InfestedCobblestone:
|
||||
case Material.InfestedStoneBricks:
|
||||
case Material.InfestedMossyStoneBricks:
|
||||
case Material.InfestedCrackedStoneBricks:
|
||||
case Material.InfestedChiseledStoneBricks:
|
||||
case Material.StoneBricks:
|
||||
case Material.MossyStoneBricks:
|
||||
case Material.CrackedStoneBricks:
|
||||
case Material.ChiseledStoneBricks:
|
||||
case Material.BrownMushroomBlock:
|
||||
case Material.RedMushroomBlock:
|
||||
case Material.MushroomStem:
|
||||
|
|
@ -236,22 +235,25 @@ namespace MinecraftClient.Mapping
|
|||
case Material.PottedWhiteTulip:
|
||||
case Material.PottedPinkTulip:
|
||||
case Material.PottedOxeyeDaisy:
|
||||
case Material.PottedCornflower:
|
||||
case Material.PottedLilyOfTheValley:
|
||||
case Material.PottedWitherRose:
|
||||
case Material.PottedRedMushroom:
|
||||
case Material.PottedBrownMushroom:
|
||||
case Material.PottedDeadBush:
|
||||
case Material.PottedCactus:
|
||||
case Material.SkeletonWallSkull:
|
||||
case Material.SkeletonSkull:
|
||||
case Material.WitherSkeletonWallSkull:
|
||||
case Material.SkeletonWallSkull:
|
||||
case Material.WitherSkeletonSkull:
|
||||
case Material.ZombieWallHead:
|
||||
case Material.WitherSkeletonWallSkull:
|
||||
case Material.ZombieHead:
|
||||
case Material.PlayerWallHead:
|
||||
case Material.ZombieWallHead:
|
||||
case Material.PlayerHead:
|
||||
case Material.CreeperWallHead:
|
||||
case Material.PlayerWallHead:
|
||||
case Material.CreeperHead:
|
||||
case Material.DragonWallHead:
|
||||
case Material.CreeperWallHead:
|
||||
case Material.DragonHead:
|
||||
case Material.DragonWallHead:
|
||||
case Material.Anvil:
|
||||
case Material.ChippedAnvil:
|
||||
case Material.DamagedAnvil:
|
||||
|
|
@ -327,7 +329,9 @@ namespace MinecraftClient.Mapping
|
|||
case Material.AcaciaSlab:
|
||||
case Material.DarkOakSlab:
|
||||
case Material.StoneSlab:
|
||||
case Material.SmoothStoneSlab:
|
||||
case Material.SandstoneSlab:
|
||||
case Material.CutSandstoneSlab:
|
||||
case Material.PetrifiedOakSlab:
|
||||
case Material.CobblestoneSlab:
|
||||
case Material.BrickSlab:
|
||||
|
|
@ -335,6 +339,7 @@ namespace MinecraftClient.Mapping
|
|||
case Material.NetherBrickSlab:
|
||||
case Material.QuartzSlab:
|
||||
case Material.RedSandstoneSlab:
|
||||
case Material.CutRedSandstoneSlab:
|
||||
case Material.PurpurSlab:
|
||||
case Material.SmoothStone:
|
||||
case Material.SmoothSandstone:
|
||||
|
|
@ -451,8 +456,64 @@ namespace MinecraftClient.Mapping
|
|||
case Material.SeaPickle:
|
||||
case Material.BlueIce:
|
||||
case Material.Conduit:
|
||||
case Material.Bamboo:
|
||||
case Material.PottedBamboo:
|
||||
case Material.BubbleColumn:
|
||||
case Material.PolishedGraniteStairs:
|
||||
case Material.SmoothRedSandstoneStairs:
|
||||
case Material.MossyStoneBrickStairs:
|
||||
case Material.PolishedDioriteStairs:
|
||||
case Material.MossyCobblestoneStairs:
|
||||
case Material.EndStoneBrickStairs:
|
||||
case Material.StoneStairs:
|
||||
case Material.SmoothSandstoneStairs:
|
||||
case Material.SmoothQuartzStairs:
|
||||
case Material.GraniteStairs:
|
||||
case Material.AndesiteStairs:
|
||||
case Material.RedNetherBrickStairs:
|
||||
case Material.PolishedAndesiteStairs:
|
||||
case Material.DioriteStairs:
|
||||
case Material.PolishedGraniteSlab:
|
||||
case Material.SmoothRedSandstoneSlab:
|
||||
case Material.MossyStoneBrickSlab:
|
||||
case Material.PolishedDioriteSlab:
|
||||
case Material.MossyCobblestoneSlab:
|
||||
case Material.EndStoneBrickSlab:
|
||||
case Material.SmoothSandstoneSlab:
|
||||
case Material.SmoothQuartzSlab:
|
||||
case Material.GraniteSlab:
|
||||
case Material.AndesiteSlab:
|
||||
case Material.RedNetherBrickSlab:
|
||||
case Material.PolishedAndesiteSlab:
|
||||
case Material.DioriteSlab:
|
||||
case Material.BrickWall:
|
||||
case Material.PrismarineWall:
|
||||
case Material.RedSandstoneWall:
|
||||
case Material.MossyStoneBrickWall:
|
||||
case Material.GraniteWall:
|
||||
case Material.StoneBrickWall:
|
||||
case Material.NetherBrickWall:
|
||||
case Material.AndesiteWall:
|
||||
case Material.RedNetherBrickWall:
|
||||
case Material.SandstoneWall:
|
||||
case Material.EndStoneBrickWall:
|
||||
case Material.DioriteWall:
|
||||
case Material.Loom:
|
||||
case Material.Barrel:
|
||||
case Material.Smoker:
|
||||
case Material.BlastFurnace:
|
||||
case Material.CartographyTable:
|
||||
case Material.FletchingTable:
|
||||
case Material.Grindstone:
|
||||
case Material.Lectern:
|
||||
case Material.SmithingTable:
|
||||
case Material.Stonecutter:
|
||||
case Material.Bell:
|
||||
case Material.Lantern:
|
||||
case Material.Campfire:
|
||||
case Material.StructureBlock:
|
||||
case Material.Jigsaw:
|
||||
case Material.Composter:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
|
@ -472,6 +533,7 @@ namespace MinecraftClient.Mapping
|
|||
case Material.Cactus:
|
||||
case Material.Lava:
|
||||
case Material.MagmaBlock:
|
||||
case Material.Campfire:
|
||||
return true;
|
||||
default:
|
||||
return false;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue