diff --git a/.gitignore b/.gitignore index 9563893d..2105712d 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ build/ out/ classes/ +publish/ # idea diff --git a/build.gradle b/build.gradle index 68e69288..0852c2e2 100644 --- a/build.gradle +++ b/build.gradle @@ -7,7 +7,7 @@ sourceCompatibility = JavaVersion.VERSION_1_8 targetCompatibility = JavaVersion.VERSION_1_8 archivesBaseName = project.archives_base_name -version = project.mod_version +version = project.minecraft_version+'-'+project.mod_version group = project.maven_group minecraft { @@ -76,5 +76,8 @@ publishing { repositories { // uncomment to publish to the local maven // mavenLocal() + maven { + url "$projectDir/publish" + } } } diff --git a/gradle.properties b/gradle.properties index 5a5a3144..e73bb52d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -9,7 +9,7 @@ org.gradle.jvmargs=-Xmx1G loader_version=0.4.8+build.155 # Mod Properties - mod_version = 0.1a + mod_version = 1.0.0+v190627 maven_group = carpet archives_base_name = fabric-carpet diff --git a/src/main/java/carpet/commands/CarpetCommand.java b/src/main/java/carpet/commands/CarpetCommand.java index ab64394a..cbea2e8f 100644 --- a/src/main/java/carpet/commands/CarpetCommand.java +++ b/src/main/java/carpet/commands/CarpetCommand.java @@ -8,7 +8,9 @@ import carpet.utils.Messenger; import com.mojang.brigadier.CommandDispatcher; import com.mojang.brigadier.arguments.StringArgumentType; import com.mojang.brigadier.builder.LiteralArgumentBuilder; +import com.mojang.brigadier.context.CommandContext; import com.mojang.brigadier.exceptions.CommandSyntaxException; +import com.mojang.brigadier.exceptions.SimpleCommandExceptionType; import net.minecraft.server.command.ServerCommandSource; import net.minecraft.entity.player.PlayerEntity; import net.minecraft.text.BaseText; @@ -23,6 +25,14 @@ import static net.minecraft.server.command.CommandSource.suggestMatching; public class CarpetCommand { + private static ParsedRule getRule(CommandContext ctx) throws CommandSyntaxException + { + String ruleName = StringArgumentType.getString(ctx, "rule"); + ParsedRule rule = SettingsManager.getRule(ruleName); + if (rule == null) + throw new SimpleCommandExceptionType(Messenger.c("rb Unknown rule: "+ruleName)).create(); + return rule; + } public static void register(CommandDispatcher dispatcher) { LiteralArgumentBuilder literalargumentbuilder = literal("carpet").requires((player) -> @@ -41,30 +51,27 @@ public class CarpetCommand suggests( (c, b)->suggestMatching(SettingsManager.getCategories(), b)). executes( (c) -> listSettings(c.getSource(), String.format("CarpetMod Settings matching \"%s\"", StringArgumentType.getString(c, "tag")), - CarpetServer.settingsManager.getRulesMatching(StringArgumentType.getString(c, "tag")))))); + CarpetServer.settingsManager.getRulesMatching(StringArgumentType.getString(c, "tag")))))). + then(literal("removeDefault"). + requires(s -> !CarpetServer.settingsManager.locked). + then(argument("rule", StringArgumentType.word()). + suggests( (c, b) -> suggestMatching(SettingsManager.getRules().stream().map(r -> r.name), b)). + executes((c) -> removeDefault(c.getSource(), getRule(c))))). + then(literal("setDefault"). + requires(s -> !CarpetServer.settingsManager.locked). + then(argument("rule", StringArgumentType.word()). + suggests( (c, b) -> suggestMatching(SettingsManager.getRules().stream().map(r -> r.name), b)). + then(argument("value", StringArgumentType.word()). + suggests((c, b)-> suggestMatching(getRule(c).options, b)). + executes((c) -> setDefault(c.getSource(), getRule(c), StringArgumentType.getString(c, "value")))))). + then(argument("rule", StringArgumentType.word()). + suggests( (c, b) -> suggestMatching(SettingsManager.getRules().stream().map(r -> r.name), b)). + requires(s -> !CarpetServer.settingsManager.locked ). + executes( (c) -> displayRuleMenu(c.getSource(),getRule(c))). + then(argument("value", StringArgumentType.word()). + suggests((c, b)-> suggestMatching(getRule(c).options,b)). + executes((c) -> setRule(c.getSource(), getRule(c), StringArgumentType.getString(c, "value"))))); - for (ParsedRule rule: SettingsManager.getRules()) - { - literalargumentbuilder.then(literal(rule.name).executes( (context) -> - displayRuleMenu(context.getSource(),rule))); - literalargumentbuilder.then(literal("removeDefault"). - requires(s -> !CarpetServer.settingsManager.locked). - then(literal(rule.name).executes((context) -> - removeDefault(context.getSource(), rule)))); - literalargumentbuilder.then(literal(rule.name). - requires(s -> !CarpetServer.settingsManager.locked). - then(argument("value", StringArgumentType.word()). - suggests((c, b)-> suggestMatching(rule.options,b)). - executes((context) -> - setRule(context.getSource(), rule, StringArgumentType.getString(context, "value"))))); - literalargumentbuilder.then(literal("setDefault"). - requires(s -> !CarpetServer.settingsManager.locked). - then(literal(rule.name). - then(argument("value", StringArgumentType.word()). - suggests((c, b)-> suggestMatching(rule.options,b)). - executes((context) -> - setDefault(context.getSource(), rule, StringArgumentType.getString(context, "value")))))); - } dispatcher.register(literalargumentbuilder); } diff --git a/src/main/java/carpet/settings/CarpetSettings.java b/src/main/java/carpet/settings/CarpetSettings.java index c3bb5d95..835c6e35 100644 --- a/src/main/java/carpet/settings/CarpetSettings.java +++ b/src/main/java/carpet/settings/CarpetSettings.java @@ -25,7 +25,7 @@ import static carpet.settings.RuleCategory.SURVIVAL; public class CarpetSettings { - public static final String carpetVersion = "v19_06_24alpha"; + public static final String carpetVersion = "v190627"; public static final Logger LOG = LogManager.getLogger(); public static boolean skipGenerationChecks = false; public static boolean impendingFillSkipUpdates = false; diff --git a/src/main/java/carpet/settings/ParsedRule.java b/src/main/java/carpet/settings/ParsedRule.java index b0f0073e..13f02aa5 100644 --- a/src/main/java/carpet/settings/ParsedRule.java +++ b/src/main/java/carpet/settings/ParsedRule.java @@ -117,7 +117,7 @@ public final class ParsedRule implements Comparable { if (!value.equals(get())) { this.field.set(null, value); - SettingsManager.notifyRuleChanged(this, stringValue); + SettingsManager.notifyRuleChanged(source, this, stringValue); } } catch (IllegalAccessException e) diff --git a/src/main/java/carpet/settings/Rule.java b/src/main/java/carpet/settings/Rule.java index b4c5b316..99876938 100644 --- a/src/main/java/carpet/settings/Rule.java +++ b/src/main/java/carpet/settings/Rule.java @@ -17,7 +17,7 @@ import java.lang.annotation.Target; */ @Target(ElementType.FIELD) @Retention(RetentionPolicy.RUNTIME) -@interface Rule +public @interface Rule { /** * The rule name, by default the same as the field name diff --git a/src/main/java/carpet/settings/SettingsManager.java b/src/main/java/carpet/settings/SettingsManager.java index 601e74a2..5d0cd0b2 100644 --- a/src/main/java/carpet/settings/SettingsManager.java +++ b/src/main/java/carpet/settings/SettingsManager.java @@ -7,6 +7,7 @@ import net.minecraft.server.network.ServerPlayerEntity; import org.apache.commons.lang3.tuple.Pair; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; +import org.apache.logging.log4j.util.TriConsumer; import java.io.BufferedReader; import java.io.File; @@ -25,7 +26,6 @@ import java.util.Locale; import java.util.Map; import java.util.Set; import java.util.TreeMap; -import java.util.function.BiConsumer; import java.util.stream.Collectors; public class SettingsManager @@ -34,7 +34,7 @@ public class SettingsManager private static Map> rules = new HashMap<>(); public boolean locked; private MinecraftServer server; - private static List, String>> observers = new ArrayList<>(); + private static List, String>> observers = new ArrayList<>(); public SettingsManager(MinecraftServer server) { @@ -53,14 +53,14 @@ public class SettingsManager } } - public static void addRuleObserver(BiConsumer, String> observer) + public static void addRuleObserver(TriConsumer, String> observer) { observers.add(observer); } - static void notifyRuleChanged(ParsedRule rule, String userTypedValue) + static void notifyRuleChanged(ServerCommandSource source, ParsedRule rule, String userTypedValue) { - observers.forEach(observer -> observer.accept(rule, userTypedValue)); + observers.forEach(observer -> observer.accept(source, rule, userTypedValue)); } public static Iterable getCategories() @@ -71,7 +71,7 @@ public class SettingsManager } - public ParsedRule getRule(String name) + public static ParsedRule getRule(String name) { return rules.get(name); } diff --git a/src/main/resources/fabric.mod.json b/src/main/resources/fabric.mod.json index 8e65cc90..9673bf12 100644 --- a/src/main/resources/fabric.mod.json +++ b/src/main/resources/fabric.mod.json @@ -1,7 +1,7 @@ { "schemaVersion": 1, "id": "carpet", - "version": "0.1", + "version": "${version}", "name": "Carpet Mod in Fabric", "description": "Carpet made out of fabric",