Reimplement extension sync according to suggestions

This commit is contained in:
altrisi committed 2020-11-29 02:51:01 +01:00
1 parent 39bfb51992
commit b4ac2c85e4
2 files changed
+22 -14

No files matched your search

@@ -26,35 +26,39 @@ public class ClientNetworkHandler
{
dataHandlers.put("Rules", (p, t) -> {
CompoundTag ruleset = (CompoundTag)t;
for (String fullRuleName: ruleset.getKeys())
for (String ruleKey: ruleset.getKeys())
{
int separatorPos = fullRuleName.indexOf(':');
CompoundTag ruleNBT = (CompoundTag) ruleset.get(ruleKey);
SettingsManager manager = null;
String ruleName;
if (separatorPos > -1)
if (ruleNBT.contains("Manager"))
{
ruleName = ruleNBT.getString("Rule");
String managerName = ruleNBT.getString("Manager");
if (managerName == "carpet")
{
manager = CarpetServer.settingsManager;
}
else
{
String identifier = fullRuleName.substring(0, separatorPos);
ruleName = fullRuleName.substring(separatorPos + 1);
for (CarpetExtension extension: CarpetServer.extensions) {
SettingsManager eManager = extension.customSettingsManager();
if (eManager != null && identifier.equals(eManager.getIdentifier()))
if (eManager != null && managerName.equals(eManager.getIdentifier()))
{
manager = eManager;
break;
}
}
}
else
}
else // Backwards compatibility
{
ruleName = fullRuleName;
manager = CarpetServer.settingsManager;
ruleName = ruleKey;
}
ParsedRule<?> rule = (manager != null) ? manager.getRule(ruleName) : null;
if (rule == null)
CarpetSettings.LOG.error("Received unknown rule: " + fullRuleName);
else
if (rule != null)
{
CompoundTag ruleNBT = (CompoundTag) ruleset.get(fullRuleName);
String value = ruleNBT.getString("Value");
rule.set(null, value);
}
@@ -241,10 +241,14 @@ public class ServerNetworkHandler
rules = new CompoundTag();
tag.put("Rules", rules);
}
String identifier = (rule.settingsManager != CarpetServer.settingsManager) ? rule.settingsManager.getIdentifier()+":" : "";
String identifier = rule.settingsManager.getIdentifier();
String key = rule.name;
while (rules.contains(key)) { key = key+"2";}
CompoundTag ruleNBT = new CompoundTag();
ruleNBT.putString("Value", rule.getAsString());
rules.put(identifier+rule.name, ruleNBT);
ruleNBT.putString("Manager",identifier);
ruleNBT.putString("Rule",rule.name);
rules.put(key, ruleNBT);
return this;
}