-
-
Notifications
You must be signed in to change notification settings - Fork 223
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Propose blocks extended data #829
Conversation
im not really familiar with burger and honestly don't understand how it works Blocks.java code. I think the most reliable way would be to use https://github.com/PrismarineJS/minecraft-data-generator-server and then extract things like color map or interaction shape based on different block states |
This sounds like data that should be in Minecraft assets, not Minecraft-data |
https://github.com/PrismarineJS/minecraft-data-generator-server we are trying to use that in preference yeah It should definitely be in the per version folder and be extracted for many versions I think it might fit here since it's pretty small and sounds quite transformed? Minecraft assets is mostly image files + a little bit of mapping data |
Yeah, I meant that some of these options are specific to the block state/renderer (light level, no occlusion), so I think it could make sense just putting inside mcassets block_states.json where prismarine-viewer is already reading from. The rest I agree could just be put into blocks.json. |
I can make a PR for the versions the extractor supports and see how it goes. |
I would highly appreciate it. I also had soundType field with another mapping and I forgot to add it, but it's also in block properties. |
Okay, so we already have block name already |
probably I'm missing something about it. why do you need a position? It's just a block property: public BlockBehaviour.Properties noOcclusion() {
this.canOcclude = false;
return this;
}
Indeed, sorry I forgot it
Hm, I don't remember how i was going to use (and even don't understand how the client uses it since bubbling columns is also liquid), probably useless, however I think that fluids similar to water can be added at some point so it can be useful in future.
Yes I forgot to explain how to get it. Basically, it's just a mapColor which is the same whichever texturepack you use. I want to use it for maps without textures (like minimap) or any other cases where you can't use texture rendering. Map colors are defined in way like this: public static final MapColor NONE = new MapColor(0, 0);
public static final MapColor GRASS = new MapColor(1, 8368696); // id, color for example here is the map for all colors of 1.20.2: Details{
"none": [
0,
0
],
"grass": [
1,
8368696,
"rgb(127, 178, 56)"
],
"sand": [
2,
16247203,
"rgb(247, 233, 163)"
],
"wool": [
3,
13092807,
"rgb(199, 199, 199)"
],
"fire": [
4,
16711680,
"rgb(255, 0, 0)"
],
"ice": [
5,
10526975,
"rgb(160, 160, 255)"
],
"metal": [
6,
10987431,
"rgb(167, 167, 167)"
],
"plant": [
7,
31744,
"rgb(0, 124, 0)"
],
"snow": [
8,
16777215,
"rgb(255, 255, 255)"
],
"clay": [
9,
10791096,
"rgb(164, 168, 184)"
],
"dirt": [
10,
9923917,
"rgb(151, 109, 77)"
],
"stone": [
11,
7368816,
"rgb(112, 112, 112)"
],
"water": [
12,
4210943,
"rgb(64, 64, 255)"
],
"wood": [
13,
9402184,
"rgb(143, 119, 72)"
],
"quartz": [
14,
16776437,
"rgb(255, 252, 245)"
],
"color_orange": [
15,
14188339,
"rgb(216, 127, 51)"
],
"color_magenta": [
16,
11685080,
"rgb(178, 76, 216)"
],
"color_light_blue": [
17,
6724056,
"rgb(102, 153, 216)"
],
"color_yellow": [
18,
15066419,
"rgb(229, 229, 51)"
],
"color_light_green": [
19,
8375321,
"rgb(127, 204, 25)"
],
"color_pink": [
20,
15892389,
"rgb(242, 127, 165)"
],
"color_gray": [
21,
5000268,
"rgb(76, 76, 76)"
],
"color_light_gray": [
22,
10066329,
"rgb(153, 153, 153)"
],
"color_cyan": [
23,
5013401,
"rgb(76, 127, 153)"
],
"color_purple": [
24,
8339378,
"rgb(127, 63, 178)"
],
"color_blue": [
25,
3361970,
"rgb(51, 76, 178)"
],
"color_brown": [
26,
6704179,
"rgb(102, 76, 51)"
],
"color_green": [
27,
6717235,
"rgb(102, 127, 51)"
],
"color_red": [
28,
10040115,
"rgb(153, 51, 51)"
],
"color_black": [
29,
1644825,
"rgb(25, 25, 25)"
],
"gold": [
30,
16445005,
"rgb(250, 238, 77)"
],
"diamond": [
31,
6085589,
"rgb(92, 219, 213)"
],
"lapis": [
32,
4882687,
"rgb(74, 128, 255)"
],
"emerald": [
33,
55610,
"rgb(0, 217, 58)"
],
"podzol": [
34,
8476209,
"rgb(129, 86, 49)"
],
"nether": [
35,
7340544,
"rgb(112, 2, 0)"
],
"terracotta_white": [
36,
13742497,
"rgb(209, 177, 161)"
],
"terracotta_orange": [
37,
10441252,
"rgb(159, 82, 36)"
],
"terracotta_magenta": [
38,
9787244,
"rgb(149, 87, 108)"
],
"terracotta_light_blue": [
39,
7367818,
"rgb(112, 108, 138)"
],
"terracotta_yellow": [
40,
12223780,
"rgb(186, 133, 36)"
],
"terracotta_light_green": [
41,
6780213,
"rgb(103, 117, 53)"
],
"terracotta_pink": [
42,
10505550,
"rgb(160, 77, 78)"
],
"terracotta_gray": [
43,
3746083,
"rgb(57, 41, 35)"
],
"terracotta_light_gray": [
44,
8874850,
"rgb(135, 107, 98)"
],
"terracotta_cyan": [
45,
5725276,
"rgb(87, 92, 92)"
],
"terracotta_purple": [
46,
8014168,
"rgb(122, 73, 88)"
],
"terracotta_blue": [
47,
4996700,
"rgb(76, 62, 92)"
],
"terracotta_brown": [
48,
4993571,
"rgb(76, 50, 35)"
],
"terracotta_green": [
49,
5001770,
"rgb(76, 82, 42)"
],
"terracotta_red": [
50,
9321518,
"rgb(142, 60, 46)"
],
"terracotta_black": [
51,
2430480,
"rgb(37, 22, 16)"
],
"crimson_nylium": [
52,
12398641,
"rgb(189, 48, 49)"
],
"crimson_stem": [
53,
9715553,
"rgb(148, 63, 97)"
],
"crimson_hyphae": [
54,
6035741,
"rgb(92, 25, 29)"
],
"warped_nylium": [
55,
1474182,
"rgb(22, 126, 134)"
],
"warped_stem": [
56,
3837580,
"rgb(58, 142, 140)"
],
"warped_hyphae": [
57,
5647422,
"rgb(86, 44, 62)"
],
"warped_wart_block": [
58,
1356933,
"rgb(20, 180, 133)"
],
"deepslate": [
59,
6579300,
"rgb(100, 100, 100)"
],
"raw_iron": [
60,
14200723,
"rgb(216, 175, 147)"
],
"glow_lichen": [
61,
8365974,
"rgb(127, 167, 150)"
]
} Also, I'm looking at whether it is possible to add more fields from block properties. Things like this.lightEmission = var4.lightEmission.applyAsInt(this.asState());
this.useShapeForLightOcclusion = var1.useShapeForLightOcclusion(this.asState());
this.isAir = var4.isAir;
this.ignitedByLava = var4.ignitedByLava;
this.liquid = var4.liquid;
this.pushReaction = var4.pushReaction;
this.mapColor = var4.mapColor.apply(this.asState());
this.destroySpeed = var4.destroyTime;
this.requiresCorrectToolForDrops = var4.requiresCorrectToolForDrops;
this.canOcclude = var4.canOcclude;
this.isRedstoneConductor = var4.isRedstoneConductor;
this.isSuffocating = var4.isSuffocating;
this.isViewBlocking = var4.isViewBlocking;
this.hasPostProcess = var4.hasPostProcess;
this.emissiveRendering = var4.emissiveRendering;
this.offsetFunction = var4.offsetFunction;
this.spawnTerrainParticles = var4.spawnTerrainParticles;
this.instrument = var4.instrument;
this.replaceable = var4.replaceable; |
Re open if you want to finish it |
jjust to be clear to finish it i just i need to add new data for every version or make changes in the generator as well? |
I was trying to extract all interaction shapes I needed with a quick parse script on js and also decided to do the same for other blocks data from 1.20.2 code. I'll try to rewrite setup with burger for reliability & automatization for all versions, but the data will include:
These additional data may be large, should they be merged with blocks.json? Is this is good direction overall?