Reimplement extension sync according to suggestions
This commit is contained in:
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;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user