Merge branch 'master' into 1.17

This commit is contained in:
gnembon committed 2021-05-27 01:56:13 -03:00
commit e2dfbc5bdd
4 files changed
+47 -3

No files matched your search

@@ -272,7 +272,7 @@ public class PlayerCommand
}
catch (CommandSyntaxException ignored) {}
String playerName = StringArgumentType.getString(context, "player");
if (playerName.length()>40)
if (playerName.length()>maxPlayerLength(source.getMinecraftServer()))
{
Messenger.m(context.getSource(), "rb Player name: "+playerName+" is too long");
return 0;
@@ -294,6 +294,11 @@ public class PlayerCommand
return 1;
}
private static int maxPlayerLength(MinecraftServer server)
{
return server.getServerPort() >= 0 ? 16 : 40;
}
private static int stop(CommandContext<ServerCommandSource> context)
{
if (cantManipulate(context)) return 0;
@@ -110,7 +110,7 @@ public class ScriptCommand
}
/**
* A method to suggest the available scarpet scripts based off of the current player input and {@link AppStoreManager#localScarpetRepoStructure}
* A method to suggest the available scarpet scripts based off of the current player input and {@link AppStoreManager#appStoreRoot}
* variable.
*/
private static CompletableFuture<Suggestions> suggestDownloadableApps(
@@ -329,10 +329,18 @@ public class ScriptCommand
then(argument("path", StringArgumentType.greedyString()).
suggests(ScriptCommand::suggestDownloadableApps).
executes(cc-> AppStoreManager.downloadScript(cc.getSource(), StringArgumentType.getString(cc,"path"))));
LiteralArgumentBuilder<ServerCommandSource> r = literal("remove").requires( (player) -> SettingsManager.canUseCommand(player, CarpetSettings.commandScriptACE) ).
then(argument("app", StringArgumentType.word()).
suggests( (cc, bb) -> suggestMatching(CarpetServer.scriptServer.unloadableModules,bb)).
executes((cc) ->
{
boolean success =CarpetServer.scriptServer.uninstallApp(cc.getSource(), StringArgumentType.getString(cc, "app"));
return success?1:0;
}));
dispatcher.register(literal("script").
requires((player) -> SettingsManager.canUseCommand(player, CarpetSettings.commandScript)).
then(b).then(u).then(o).then(l).then(s).then(c).then(h).then(i).then(e).then(t).then(a).then(f).then(q).then(d));
then(b).then(u).then(o).then(l).then(s).then(c).then(h).then(i).then(e).then(t).then(a).then(f).then(q).then(d).then(r));
dispatcher.register(literal("script").
requires((player) -> SettingsManager.canUseCommand(player, CarpetSettings.commandScript)).
then(literal("in").
@@ -43,6 +43,7 @@ import java.io.IOException;
import java.nio.file.FileVisitOption;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardCopyOption;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
@@ -347,6 +348,30 @@ public class CarpetScriptServer
return true;
}
public boolean uninstallApp(ServerCommandSource source, String name)
{
try
{
name = name.toLowerCase(Locale.ROOT);
Path folder = server.getSavePath(WorldSavePath.ROOT).resolve("scripts/trash");
if (!Files.exists(folder)) Files.createDirectories(folder);
if (!Files.exists(folder.getParent().resolve(name+".sc")))
{
Messenger.m(source, "App doesn't exist in the world scripts folder, so can only be unloaded");
return false;
}
removeScriptHost(source, name, false, false);
Files.move(folder.getParent().resolve(name+".sc"), folder.resolve(name+".sc"), StandardCopyOption.REPLACE_EXISTING);
Messenger.m(source, "gi Removed "+name+" app");
return true;
}
catch (IOException exc)
{
Messenger.m(source, "rb Failed to uninstall the app");
}
return false;
}
public boolean runEventCall(ServerCommandSource sender, String hostname, String optionalTarget, FunctionValue udf, List<Value> argv)
{
CarpetScriptHost host = globalHost;