Reimplement extension sync according to suggestions
This commit is contained in:
2 files changed
+27
-19
No files matched your search
@@ -26,35 +26,39 @@ public class ClientNetworkHandler
|
|||||||
{
|
{
|
||||||
dataHandlers.put("Rules", (p, t) -> {
|
dataHandlers.put("Rules", (p, t) -> {
|
||||||
CompoundTag ruleset = (CompoundTag)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;
|
SettingsManager manager = null;
|
||||||
String ruleName;
|
String ruleName;
|
||||||
if (separatorPos > -1)
|
if (ruleNBT.contains("Manager"))
|
||||||
{
|
{
|
||||||
String identifier = fullRuleName.substring(0, separatorPos);
|
ruleName = ruleNBT.getString("Rule");
|
||||||
ruleName = fullRuleName.substring(separatorPos + 1);
|
String managerName = ruleNBT.getString("Manager");
|
||||||
for (CarpetExtension extension: CarpetServer.extensions) {
|
if (managerName == "carpet")
|
||||||
SettingsManager eManager = extension.customSettingsManager();
|
{
|
||||||
if (eManager != null && identifier.equals(eManager.getIdentifier()))
|
manager = CarpetServer.settingsManager;
|
||||||
{
|
}
|
||||||
manager = eManager;
|
else
|
||||||
break;
|
{
|
||||||
|
for (CarpetExtension extension: CarpetServer.extensions) {
|
||||||
|
SettingsManager eManager = extension.customSettingsManager();
|
||||||
|
if (eManager != null && managerName.equals(eManager.getIdentifier()))
|
||||||
|
{
|
||||||
|
manager = eManager;
|
||||||
|
break;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else // Backwards compatibility
|
||||||
{
|
{
|
||||||
ruleName = fullRuleName;
|
|
||||||
manager = CarpetServer.settingsManager;
|
manager = CarpetServer.settingsManager;
|
||||||
|
ruleName = ruleKey;
|
||||||
}
|
}
|
||||||
ParsedRule<?> rule = (manager != null) ? manager.getRule(ruleName) : null;
|
ParsedRule<?> rule = (manager != null) ? manager.getRule(ruleName) : null;
|
||||||
if (rule == null)
|
if (rule != null)
|
||||||
CarpetSettings.LOG.error("Received unknown rule: " + fullRuleName);
|
|
||||||
else
|
|
||||||
{
|
{
|
||||||
CompoundTag ruleNBT = (CompoundTag) ruleset.get(fullRuleName);
|
|
||||||
String value = ruleNBT.getString("Value");
|
String value = ruleNBT.getString("Value");
|
||||||
rule.set(null, value);
|
rule.set(null, value);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -241,10 +241,14 @@ public class ServerNetworkHandler
|
|||||||
rules = new CompoundTag();
|
rules = new CompoundTag();
|
||||||
tag.put("Rules", rules);
|
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();
|
CompoundTag ruleNBT = new CompoundTag();
|
||||||
ruleNBT.putString("Value", rule.getAsString());
|
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;
|
return this;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user