Show MineGeo console output and release plugin 0.1.2

This commit is contained in:
2026-10-05 18:37:32 +05:00
parent 891de77a10
commit b33db48b63
7 changed files with 60 additions and 9 deletions

View File

@@ -1 +1 @@
allprojects { group = 'dev.minegeo'; version = '0.1.1'; repositories { mavenCentral() } }
allprojects { group = 'dev.minegeo'; version = '0.1.2'; repositories { mavenCentral() } }

View File

@@ -37,7 +37,10 @@ public final class MineGeoPlugin extends JavaPlugin {
}
@Override public void onDisable(){cancelled.set(true);}
@Override public boolean onCommand(CommandSender sender,Command command,String label,String[] args){
if(!sender.hasPermission("minegeo.admin")){sender.sendMessage("MineGeo: administrator permission required.");return true;}
// Paper may dispatch hosting-panel commands through a remote console sender
// whose permissions differ from the local console. Check permissions here so
// every rejected command receives a visible explanation.
if(!(sender instanceof ConsoleCommandSender||sender instanceof RemoteConsoleCommandSender||sender instanceof Player&&sender.hasPermission("minegeo.admin"))){sender.sendMessage("MineGeo: administrator permission required.");return true;}
try {
if(args.length==0||args[0].equalsIgnoreCase("help")) {sender.sendMessage(new String[]{"MineGeo commands:","/minegeo website <http(s)://address:port>","/minegeo server <hostname[:port]> — capture server address","/minegeo link <dashboard token>","/minegeo area <world> <minX> <minZ> <maxX> <maxZ>","/minegeo export <map name> — saves a local export","/minegeo upload — uploads the latest completed export","/minegeo contribute <map ID> — send up to 12 panoramas to its owner","/minegeo status | cancel | reload"});return true;}
switch(args[0].toLowerCase(Locale.ROOT)) {
@@ -62,7 +65,7 @@ public final class MineGeoPlugin extends JavaPlugin {
}catch(Exception ex){sender.sendMessage("MineGeo: "+ex.getMessage());}return true;
}
private void requireIdle(){if(busy)throw new IllegalArgumentException("An operation is running. Use /minegeo status or /minegeo cancel.");}
private void report(CommandSender sender,String message){status=message;getLogger().info(message);if(sender instanceof Player&&isEnabled())Bukkit.getScheduler().runTask(this,()->sender.sendMessage("MineGeo: "+message));}
private void report(CommandSender sender,String message){status=message;getLogger().info(message);if(!(sender instanceof ConsoleCommandSender)&&isEnabled())Bukkit.getScheduler().runTask(this,()->sender.sendMessage("MineGeo: "+message));}
private void fail(CommandSender sender,String phase,Exception ex){report(sender,cancelled.get()?"Cancelled. Completed exports are kept.":phase+" failed: "+ex.getMessage());if(!cancelled.get())getLogger().log(Level.WARNING,phase+" failure",ex);}
private void upload(CommandSender sender,String targetMap)throws Exception {
requireIdle();if(latest==null||!Files.isRegularFile(latest.resolve("manifest.json")))throw new IOException("No completed export. Run /minegeo export My World, wait for 'Export complete', then /minegeo upload. Files: "+getDataFolder().toPath().resolve("exports").toAbsolutePath());

View File

@@ -1,12 +1,11 @@
name: MineGeo
version: 0.1.1
version: 0.1.2
main: dev.minegeo.plugin.MineGeoPlugin
api-version: '1.21'
description: Bounded terrain export for MineGeo panorama guessing
commands:
minegeo:
description: Link, select, export, upload, status or cancel MineGeo maps
permission: minegeo.admin
permissions:
minegeo.admin:
default: op