aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGravatar Jonas Gunz <himself@jonasgunz.de> 2020-10-20 02:52:57 +0200
committerGravatar Jonas Gunz <himself@jonasgunz.de> 2020-10-20 02:52:57 +0200
commit927613461a6a9021e55da187e87edfb25f13cb2f (patch)
tree99a94f9138ebb11e62d3cf747f7886b6526507b9
parent4d1ec9a337db8b4915ea5672f5e46fccc351ca3a (diff)
downloadparquet-927613461a6a9021e55da187e87edfb25f13cb2f.tar.gz
reworked /savedata to /stats
-rw-r--r--Readme.md16
-rw-r--r--src/main/java/re/jag/parquet/Parquet.java2
-rw-r--r--src/main/java/re/jag/parquet/ParquetSettings.java8
-rw-r--r--src/main/java/re/jag/parquet/commands/Stats.java (renamed from src/main/java/re/jag/parquet/commands/Savedata.java)97
4 files changed, 46 insertions, 77 deletions
diff --git a/Readme.md b/Readme.md
index 6831a04..e5d0b1c 100644
--- a/Readme.md
+++ b/Readme.md
@@ -14,20 +14,18 @@ Invocation Location is saved and restored on exit to make it less exploitable
Not using `/c` and `/s` to be carpet compatible
-### `/savedata`
+### `/stats <player>`
-#### `playersave list`
+#### `get <stat>`
-List all player savefiles, UUIDs are resolved to names if in usercache
-
-#### `stats`
-
-Query user statistics and import them to the scoreboard. This work for both online and offline players, if they are in
+Query user statistics. This work for both online and offline players, if they are in
usercache.
-`/savedata stats PLAYER STATISTIC [import OBJECTIVE [MULTIPLIER]]`
+#### `import <scoreboard> [multiplier]`
+
+import the corresponding user statistic to a scoreboard.
-If `MULTIPLIER < 0` the score is modified with `1/MULTIPLIER`, since FloatArgumentType does not support exponentials
+If `multiplier < 0` the score is modified with `1/multiplier`, since FloatArgumentType does not support exponentials
like 1.3e-4
### `/r`
diff --git a/src/main/java/re/jag/parquet/Parquet.java b/src/main/java/re/jag/parquet/Parquet.java
index b115393..c5cb6a4 100644
--- a/src/main/java/re/jag/parquet/Parquet.java
+++ b/src/main/java/re/jag/parquet/Parquet.java
@@ -29,7 +29,7 @@ public class Parquet implements ModInitializer {
}
public static void registerCommands(CommandDispatcher<ServerCommandSource> dispatcher) {
- if(settings.command_savedata) Savedata.register(dispatcher);
+ if(settings.command_stats) Stats.register(dispatcher);
if(settings.command_cameramode) CameraMode.register(dispatcher);
if(settings.command_calculator) Calculator.register(dispatcher);
if(settings.command_timediff) TimeDIff.register(dispatcher);
diff --git a/src/main/java/re/jag/parquet/ParquetSettings.java b/src/main/java/re/jag/parquet/ParquetSettings.java
index 32c52dd..030306d 100644
--- a/src/main/java/re/jag/parquet/ParquetSettings.java
+++ b/src/main/java/re/jag/parquet/ParquetSettings.java
@@ -16,7 +16,7 @@ public class ParquetSettings {
public final boolean stats_villager_trades;
public final boolean command_cameramode;
- public final boolean command_savedata;
+ public final boolean command_stats;
public final boolean command_calculator;
public final boolean command_rename;
public final boolean command_timediff;
@@ -32,7 +32,7 @@ public class ParquetSettings {
this.stats_villager_trades = get_boolean("stats-villager-trades", true);
this.command_cameramode = get_boolean("command-cameramode", true);
- this.command_savedata = get_boolean("command-savedata", true);
+ this.command_stats = get_boolean("command-stats", true);
this.command_calculator = get_boolean("command-calculator", true);
this.command_rename = get_boolean("command-rename", true);
this.command_timediff = get_boolean("command-timediff", true);
@@ -45,9 +45,8 @@ public class ParquetSettings {
try {
InputStream inp = Files.newInputStream(_path);
properties.load(inp);
-
} catch (IOException e) {
- Parquet.LOG.error("Failed to read from " + _path.getFileName());
+ Parquet.LOG.warn("Failed to read from " + _path.getFileName());
}
}
@@ -55,7 +54,6 @@ public class ParquetSettings {
try {
OutputStream out = Files.newOutputStream(_path);
properties.store(out, "Parquet mod settings");
-
} catch (IOException e) {
Parquet.LOG.error("Failed to write to " + _path.getFileName());
}
diff --git a/src/main/java/re/jag/parquet/commands/Savedata.java b/src/main/java/re/jag/parquet/commands/Stats.java
index 12e0775..95803c5 100644
--- a/src/main/java/re/jag/parquet/commands/Savedata.java
+++ b/src/main/java/re/jag/parquet/commands/Stats.java
@@ -29,45 +29,38 @@ import net.minecraft.stat.ServerStatHandler;
import net.minecraft.stat.Stat;
import net.minecraft.stat.StatType;
-public class Savedata {
+public class Stats {
public static void register(CommandDispatcher<ServerCommandSource> dispatcher) {
- LiteralArgumentBuilder<ServerCommandSource> savedata = literal("savedata").
- requires(source -> source.hasPermissionLevel(4)).
- executes((c) -> help(c.getSource())).
- then( literal("playersave").
- then(literal("list").
- executes((c) -> list_local_saves(c.getSource()))
- )
- ).
- then(literal("stats").
- then(argument("player", StringArgumentType.word()).
- suggests( (c, b) -> suggestMatching(c.getSource().getPlayerNames() , b)).
- then(argument("criteria", StringArgumentType.greedyString()).
- suggests((c,b) -> suggestMatching(get_stat_list(), b)).
- executes((c) -> print_player_stat (
- c.getSource(),
- StringArgumentType.getString(c, "player"),
- StringArgumentType.getString(c, "criteria")
- )).
- then(literal("import").then(argument("score", ObjectiveArgumentType.objective()).
- executes((c) -> import_stat_to_scoreboard (
- c.getSource(),
- StringArgumentType.getString(c, "player"),
- StringArgumentType.getString(c, "criteria"),
- ObjectiveArgumentType.getWritableObjective(c, "score"), 1)).
- then(argument("multiplier", FloatArgumentType.floatArg()).
- executes((c) -> import_stat_to_scoreboard(
- c.getSource(),
- StringArgumentType.getString(c, "player"),
- StringArgumentType.getString(c, "criteria"),
- ObjectiveArgumentType.getWritableObjective(c, "score"),
- FloatArgumentType.getFloat(c, "multiplier"))
- )
- )
- ))
- ))
- );
- dispatcher.register(savedata);
+ LiteralArgumentBuilder<ServerCommandSource> savedata = literal("stats").
+ requires(source -> source.hasPermissionLevel(4)).
+ executes((c) -> help(c.getSource())).
+ then(argument("player", StringArgumentType.word()).
+ suggests((c, b) -> suggestMatching(c.getSource().getPlayerNames(), b)).
+ then(literal("get").
+ then(argument("criteria", StringArgumentType.greedyString()).
+ suggests((c, b) -> suggestMatching(get_stat_list(), b)).
+ executes((c) -> print_player_stat(
+ c.getSource(),
+ StringArgumentType.getString(c, "player"),
+ StringArgumentType.getString(c, "criteria")
+ ))
+ )).
+ then(literal("import").then(argument("score", ObjectiveArgumentType.objective()).
+ executes((c) -> import_stat_to_scoreboard(
+ c.getSource(),
+ StringArgumentType.getString(c, "player"),
+ ObjectiveArgumentType.getWritableObjective(c, "score"), 1)).
+ then(argument("multiplier", FloatArgumentType.floatArg()).
+ executes((c) -> import_stat_to_scoreboard(
+ c.getSource(),
+ StringArgumentType.getString(c, "player"),
+ ObjectiveArgumentType.getWritableObjective(c, "score"),
+ FloatArgumentType.getFloat(c, "multiplier"))
+ )
+ )
+ ))
+ );
+ dispatcher.register(savedata);
}
private static int help(ServerCommandSource source) {
@@ -121,35 +114,15 @@ public class Savedata {
return stat;
}
- private static int list_local_saves(ServerCommandSource source) {
- //TODO 1.16 fix
-
- /*
- String uuid_list[] = source.getMinecraftServer().getWorld(DimensionType.OVERWORLD).getSaveHandler().getSavedPlayerIds();
-
- for (int i = 0; i < uuid_list.length; i++) {
- GameProfile profile = source.getMinecraftServer().getUserCache().getByUuid(UUID.fromString(uuid_list[i]));
- String name = "N.A.";
-
- if(profile != null)
- name = profile.getName();
-
- source.sendFeedback(new LiteralText(name + " (" + uuid_list[i] + ")"), false);
- }
- */
-
- source.sendError(new LiteralText("1.16 Incompatability"));
- return 1;
- }
-
- private static int import_stat_to_scoreboard(ServerCommandSource source, String player,String stat, ScoreboardObjective objective, float multiplier) {
- int score = get_player_stat(source, player, stat);
+ private static int import_stat_to_scoreboard(ServerCommandSource source, String player, ScoreboardObjective objective, float multiplier) {
+ int score = get_player_stat(source, player, objective.getCriterion().getName());
if (score < 0)
return 0;
ServerScoreboard server_scoreboard = source.getMinecraftServer().getScoreboard();
ScoreboardPlayerScore player_score = server_scoreboard.getPlayerScore(player, objective);
-
+
+
int mod_score = multiplier >= 0 ? (int)((float)score * multiplier) : (int)((float)score / multiplier * (-1));
player_score.setScore(mod_score);