blob: d4f89f01569256c5a452f9e30168050dabc0a9bc (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
package shcm.shsupercm.fabric.citresewn.pack;
import net.fabricmc.loader.api.FabricLoader;
import net.fabricmc.loader.api.entrypoint.EntrypointContainer;
import net.minecraft.util.Identifier;
import net.minecraft.util.InvalidIdentifierException;
import shcm.shsupercm.fabric.citresewn.CITResewn;
import shcm.shsupercm.fabric.citresewn.pack.format.PropertyGroup;
import shcm.shsupercm.fabric.citresewn.pack.format.PropertyKey;
import shcm.shsupercm.fabric.citresewn.pack.format.PropertyValue;
import shcm.shsupercm.fabric.citresewn.api.GlobalPropertiesHandler;
import java.io.IOException;
import java.io.InputStream;
import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
public class GlobalProperties extends PropertyGroup {
public GlobalProperties() {
super("global_properties", new Identifier("citresewn", "global_properties"));
}
@Override
public String getExtension() {
return "";
}
@Override
public PropertyGroup load(String packName, Identifier identifier, InputStream is) throws IOException, InvalidIdentifierException {
PropertyGroup group = PropertyGroup.tryParseGroup(packName, identifier, is);
if (group != null)
for (Map.Entry<PropertyKey, Set<PropertyValue>> entry : group.properties.entrySet())
this.properties.computeIfAbsent(entry.getKey(), key -> new LinkedHashSet<>()).addAll(entry.getValue());
return this;
}
public void callHandlers() {
for (EntrypointContainer<GlobalPropertiesHandler> container : FabricLoader.getInstance().getEntrypointContainers("citresewn:cit_global_properties", GlobalPropertiesHandler.class)) {
String containerNamespace = container.getProvider().getMetadata().getId();
if (containerNamespace.equals("citresewn-defaults"))
containerNamespace = "citresewn";
for (Map.Entry<PropertyKey, Set<PropertyValue>> entry : properties.entrySet())
if (entry.getKey().namespace().equals(containerNamespace)) {
PropertyValue lastValue = null;
for (PropertyValue value : entry.getValue())
lastValue = value;
if (lastValue != null)
try {
container.getEntrypoint().globalProperty(entry.getKey().path(), lastValue);
} catch (Exception e) {
CITResewn.logErrorLoading("Errored while parsing global properties: Line " + lastValue.position() + " of " + lastValue.propertiesIdentifier() + " in " + lastValue.packName());
e.printStackTrace();
}
}
}
}
}
|