beet-observer 0.2.0__py3-none-any.whl → 0.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- beet_observer/__init__.py +1 -1
- beet_observer/data_pack.py +3 -2
- beet_observer/resource_pack.py +149 -3
- {beet_observer-0.2.0.dist-info → beet_observer-0.3.0.dist-info}/METADATA +2 -1
- beet_observer-0.3.0.dist-info/RECORD +8 -0
- beet_observer-0.2.0.dist-info/RECORD +0 -8
- {beet_observer-0.2.0.dist-info → beet_observer-0.3.0.dist-info}/LICENSE +0 -0
- {beet_observer-0.2.0.dist-info → beet_observer-0.3.0.dist-info}/WHEEL +0 -0
beet_observer/__init__.py
CHANGED
beet_observer/data_pack.py
CHANGED
@@ -65,7 +65,7 @@ def gen_dp_overlays(ctx: Context, ctx_overlay: Context, overlay_dir: str) -> Non
|
|
65
65
|
for overlay in ctx.data.overlays:
|
66
66
|
# check if it's the top-level overlay
|
67
67
|
if overlay == ctx.meta["observer"]["default_dir_dp"]:
|
68
|
-
# delete pack.mcmeta from overlay (
|
68
|
+
# delete pack.mcmeta from overlay (required for tests)
|
69
69
|
default_dir = ctx.meta["observer"]["default_dir_dp"]
|
70
70
|
if ctx.data.overlays[default_dir].mcmeta:
|
71
71
|
del ctx.data.overlays[default_dir].mcmeta
|
@@ -91,7 +91,8 @@ def gen_dp_overlays(ctx: Context, ctx_overlay: Context, overlay_dir: str) -> Non
|
|
91
91
|
)
|
92
92
|
|
93
93
|
# save overlay entries in pack.mcmeta
|
94
|
-
|
94
|
+
if len(entries) > 0:
|
95
|
+
ctx.data.mcmeta.data.update({"overlays": {"entries": entries}})
|
95
96
|
|
96
97
|
|
97
98
|
def check_registry(
|
beet_observer/resource_pack.py
CHANGED
@@ -1,5 +1,151 @@
|
|
1
|
-
from
|
1
|
+
from typing import Any
|
2
2
|
|
3
|
+
from beet import Context, NamespaceProxy
|
3
4
|
|
4
|
-
|
5
|
-
|
5
|
+
|
6
|
+
def gen_rp_overlays(ctx: Context, ctx_overlay: Context, overlay_dir: str) -> None:
|
7
|
+
"""
|
8
|
+
Generates overlays between two resource packs.
|
9
|
+
|
10
|
+
Keyword arguments:</br>
|
11
|
+
`ctx` -- the build context</br>
|
12
|
+
`ctx_overlay` -- the overlay context</br>
|
13
|
+
`overlay_dir` -- the directory of the overlay</br>
|
14
|
+
"""
|
15
|
+
# create list of all resource pack file types
|
16
|
+
file_types: list[tuple[NamespaceProxy[Any], NamespaceProxy[Any]]] = [
|
17
|
+
(ctx.assets.blockstates, ctx_overlay.assets.blockstates),
|
18
|
+
(ctx.assets.models, ctx_overlay.assets.models),
|
19
|
+
(ctx.assets.languages, ctx_overlay.assets.languages),
|
20
|
+
(ctx.assets.fonts, ctx_overlay.assets.fonts),
|
21
|
+
(ctx.assets.glyph_sizes, ctx_overlay.assets.glyph_sizes),
|
22
|
+
(ctx.assets.true_type_fonts, ctx_overlay.assets.true_type_fonts),
|
23
|
+
(ctx.assets.shader_posts, ctx_overlay.assets.shader_posts),
|
24
|
+
(ctx.assets.shaders, ctx_overlay.assets.shaders),
|
25
|
+
(ctx.assets.fragment_shaders, ctx_overlay.assets.fragment_shaders),
|
26
|
+
(ctx.assets.vertex_shaders, ctx_overlay.assets.vertex_shaders),
|
27
|
+
(ctx.assets.glsl_shaders, ctx_overlay.assets.glsl_shaders),
|
28
|
+
(ctx.assets.texts, ctx_overlay.assets.texts),
|
29
|
+
(ctx.assets.textures_mcmeta, ctx_overlay.assets.textures_mcmeta),
|
30
|
+
(ctx.assets.textures, ctx_overlay.assets.textures),
|
31
|
+
(ctx.assets.sounds, ctx_overlay.assets.sounds),
|
32
|
+
(ctx.assets.particles, ctx_overlay.assets.particles),
|
33
|
+
(ctx.assets.atlases, ctx_overlay.assets.atlases),
|
34
|
+
]
|
35
|
+
# for each file type, check for required overlays
|
36
|
+
for registry, registry_overlay in file_types:
|
37
|
+
check_registry(ctx, ctx_overlay, overlay_dir, registry, registry_overlay)
|
38
|
+
|
39
|
+
# get pack.mcmeta overlay entries
|
40
|
+
mcmeta: dict[str, dict[str, list[dict[str, Any]]]] = ctx.assets.mcmeta.data.copy()
|
41
|
+
if "overlays" not in mcmeta:
|
42
|
+
mcmeta["overlays"] = {}
|
43
|
+
if "entries" not in mcmeta["overlays"]:
|
44
|
+
mcmeta["overlays"]["entries"] = []
|
45
|
+
entries = mcmeta["overlays"]["entries"]
|
46
|
+
|
47
|
+
# add overlays to pack.mcmeta
|
48
|
+
for overlay in ctx.assets.overlays:
|
49
|
+
# check if it's the top-level overlay
|
50
|
+
if overlay == ctx.meta["observer"]["default_dir_rp"]:
|
51
|
+
# delete pack.mcmeta from overlay (required for tests)
|
52
|
+
default_dir = ctx.meta["observer"]["default_dir_rp"]
|
53
|
+
if ctx.assets.overlays[default_dir].mcmeta:
|
54
|
+
del ctx.assets.overlays[default_dir].mcmeta
|
55
|
+
|
56
|
+
# get pack format from build context
|
57
|
+
if "default_format" in ctx.meta["observer"]:
|
58
|
+
formats = ctx.meta["observer"]["default_format"]
|
59
|
+
else:
|
60
|
+
formats = ctx.assets.mcmeta.data["pack"]["pack_format"]
|
61
|
+
else:
|
62
|
+
# get formats from overlay pack
|
63
|
+
if "supported_formats" in ctx_overlay.assets.mcmeta.data["pack"]:
|
64
|
+
formats = ctx_overlay.assets.mcmeta.data["pack"]["supported_formats"]
|
65
|
+
else:
|
66
|
+
formats = ctx_overlay.assets.mcmeta.data["pack"]["pack_format"]
|
67
|
+
|
68
|
+
# update pack.mcmeta overlay entries
|
69
|
+
entries.append(
|
70
|
+
{
|
71
|
+
"formats": formats,
|
72
|
+
"directory": overlay,
|
73
|
+
}
|
74
|
+
)
|
75
|
+
|
76
|
+
# save overlay entries in pack.mcmeta
|
77
|
+
if len(entries) > 0:
|
78
|
+
ctx.assets.mcmeta.data.update({"overlays": {"entries": entries}})
|
79
|
+
|
80
|
+
|
81
|
+
def check_registry(
|
82
|
+
ctx: Context,
|
83
|
+
ctx_overlay: Context,
|
84
|
+
overlay_dir: str,
|
85
|
+
registry: NamespaceProxy[Any],
|
86
|
+
registry_overlay: NamespaceProxy[Any],
|
87
|
+
) -> None:
|
88
|
+
"""
|
89
|
+
Generates overlays for each namespace proxy.
|
90
|
+
|
91
|
+
Keyword arguments:</br>
|
92
|
+
`ctx` -- the build context</br>
|
93
|
+
`ctx_overlay` -- the overlay context</br>
|
94
|
+
`overlay_dir` -- the directory of the overlay</br>
|
95
|
+
`registry` -- the namespace proxy from the build context</br>
|
96
|
+
`registry_overlay` -- the namespace proxy from the overlay context</br>
|
97
|
+
"""
|
98
|
+
# check each file in the build pack
|
99
|
+
for name in list(registry):
|
100
|
+
if name in registry_overlay:
|
101
|
+
# exists in both, so check if an overlay is needed
|
102
|
+
gen_registry_overlay(ctx, overlay_dir, name, registry, registry_overlay)
|
103
|
+
else:
|
104
|
+
# exists only in overlay, so create a deletion overlay
|
105
|
+
gen_registry_overlay(
|
106
|
+
ctx, overlay_dir, name, registry, registry_overlay, "deletion"
|
107
|
+
)
|
108
|
+
|
109
|
+
# for all remaining files (of this type) in the overlay pack, add to build pack as an overlay
|
110
|
+
for name in list(registry_overlay):
|
111
|
+
gen_registry_overlay(
|
112
|
+
ctx, overlay_dir, name, registry, registry_overlay, "addition"
|
113
|
+
)
|
114
|
+
|
115
|
+
|
116
|
+
def gen_registry_overlay(
|
117
|
+
ctx: Context,
|
118
|
+
overlay_dir: str,
|
119
|
+
name: str,
|
120
|
+
registry: NamespaceProxy[Any],
|
121
|
+
registry_overlay: NamespaceProxy[Any],
|
122
|
+
type: str = "",
|
123
|
+
) -> None:
|
124
|
+
"""
|
125
|
+
Checks if two functions have the same contents and generate an overlay if they don't.
|
126
|
+
|
127
|
+
Keyword arguments:</br>
|
128
|
+
`ctx` -- the build context</br>
|
129
|
+
`overlay_dir` -- the directory of the generated overlay</br>
|
130
|
+
`name` -- the name of the file</br>
|
131
|
+
`registry` -- the namespace proxy from the build context</br>
|
132
|
+
`registry_overlay` -- the namespace proxy from the overlay context</br>
|
133
|
+
`type` -- either "deletion" or "addition" (default: `""`)</br>
|
134
|
+
"""
|
135
|
+
if type == "deletion":
|
136
|
+
# move file from build pack to overlay in build pack
|
137
|
+
default_dir = ctx.meta["observer"]["default_dir_rp"]
|
138
|
+
ctx.assets.overlays[default_dir][name] = registry[name]
|
139
|
+
del registry[name]
|
140
|
+
elif type == "addition":
|
141
|
+
# move function from overlay pack to overlay in build pack
|
142
|
+
ctx.assets.overlays[overlay_dir][name] = registry_overlay[name]
|
143
|
+
else:
|
144
|
+
# check if files are exactly the same
|
145
|
+
if registry[name] != registry_overlay[name]:
|
146
|
+
# move function from overlay pack to overlay in build pack
|
147
|
+
ctx.assets.overlays[overlay_dir][name] = registry_overlay[name]
|
148
|
+
|
149
|
+
# remove file from overlay pack
|
150
|
+
if name in registry_overlay:
|
151
|
+
del registry_overlay[name]
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Metadata-Version: 2.1
|
2
2
|
Name: beet-observer
|
3
|
-
Version: 0.
|
3
|
+
Version: 0.3.0
|
4
4
|
Summary: A beet plugin to automatically generate overlays from previous datapacks
|
5
5
|
License: MIT
|
6
6
|
Author: BPR02
|
@@ -12,6 +12,7 @@ Classifier: Programming Language :: Python :: 3.10
|
|
12
12
|
Classifier: Programming Language :: Python :: 3.11
|
13
13
|
Classifier: Programming Language :: Python :: 3.12
|
14
14
|
Requires-Dist: beet (>=0.108.5)
|
15
|
+
Requires-Dist: pillow (>=11.0.0,<12.0.0)
|
15
16
|
Description-Content-Type: text/markdown
|
16
17
|
|
17
18
|
# Observer
|
@@ -0,0 +1,8 @@
|
|
1
|
+
beet_observer/__init__.py,sha256=waPdRKRwse3ZVuODN7-e1CQMESC4jLtlCYNxSXcho2I,45
|
2
|
+
beet_observer/data_pack.py,sha256=OYGy9vDePpWyDhVpTl2Y-P49UEhsivihOqo17dfNKTM,7166
|
3
|
+
beet_observer/plugin.py,sha256=DGpWvV2q6yeJ_EyBLShigZl4dutN2yCFDKzzcCGiu8o,1808
|
4
|
+
beet_observer/resource_pack.py,sha256=9dAeZXlJrcaEiIJcPYnJhU7e0qMUqYNcxhIEhLDHUF4,6157
|
5
|
+
beet_observer-0.3.0.dist-info/LICENSE,sha256=oBbP6j7sgG9darFSRZxV7iO8yPR1aZiDspSK3mcLpXI,1062
|
6
|
+
beet_observer-0.3.0.dist-info/METADATA,sha256=o3LRXTGTXd_oqjPbENKtvrGH2UPrGobHUVRh0z2NAgM,674
|
7
|
+
beet_observer-0.3.0.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
8
|
+
beet_observer-0.3.0.dist-info/RECORD,,
|
@@ -1,8 +0,0 @@
|
|
1
|
-
beet_observer/__init__.py,sha256=3nBkGnHIldvrJ59Iww87KKAczpOwrpAde5Rc5xF4_sk,45
|
2
|
-
beet_observer/data_pack.py,sha256=4rSSGXCayZouWtaahhdZ4sBzQKMKSJmazyRsCPHrDOI,7138
|
3
|
-
beet_observer/plugin.py,sha256=DGpWvV2q6yeJ_EyBLShigZl4dutN2yCFDKzzcCGiu8o,1808
|
4
|
-
beet_observer/resource_pack.py,sha256=ePNdQjeMrEKEkLdDBsnHcMdrne8g505Cd8vfzX5S_cc,111
|
5
|
-
beet_observer-0.2.0.dist-info/LICENSE,sha256=oBbP6j7sgG9darFSRZxV7iO8yPR1aZiDspSK3mcLpXI,1062
|
6
|
-
beet_observer-0.2.0.dist-info/METADATA,sha256=2LrAnUxe4PtSu9ZYbf2th--Rid-OSi_38vj5Ptc23mI,633
|
7
|
-
beet_observer-0.2.0.dist-info/WHEEL,sha256=FMvqSimYX_P7y0a7UY-_Mc83r5zkBZsCYPm7Lr0Bsq4,88
|
8
|
-
beet_observer-0.2.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|