mirror of
				https://github.com/IntellectualSites/PlotSquared.git
				synced 2025-10-30 17:13:43 +01:00 
			
		
		
		
	Random scripting stuff
This commit is contained in:
		| @@ -7,6 +7,7 @@ import java.io.FileOutputStream; | ||||
| import java.io.IOException; | ||||
| import java.io.InputStream; | ||||
| import java.io.InputStreamReader; | ||||
| import java.lang.reflect.Array; | ||||
| import java.net.URI; | ||||
| import java.net.URL; | ||||
| import java.net.URLConnection; | ||||
| @@ -265,6 +266,7 @@ public class PS { | ||||
|             } | ||||
|      | ||||
|             // Copy files | ||||
|             copyFile("automerge.js", "scripts"); | ||||
|             copyFile("town.template", "templates"); | ||||
|             copyFile("skyblock.template", "templates"); | ||||
|             copyFile("german.yml", "translations"); | ||||
| @@ -317,8 +319,8 @@ public class PS { | ||||
|      * @param message Message to log | ||||
|      * @see IPlotMain#log(String) | ||||
|      */ | ||||
|     public static void log(final String message) { | ||||
|         get().IMP.log(message); | ||||
|     public static void log(Object message) { | ||||
|         get().IMP.log(StringMan.getString(message)); | ||||
|     } | ||||
|      | ||||
|     /** | ||||
|   | ||||
| @@ -40,6 +40,8 @@ import javax.script.ScriptEngineManager; | ||||
| import javax.script.ScriptException; | ||||
| import javax.script.SimpleScriptContext; | ||||
|  | ||||
| import org.bukkit.ChatColor; | ||||
|  | ||||
| import com.google.common.io.Files; | ||||
| import com.intellectualcrafters.plot.PS; | ||||
| import com.intellectualcrafters.plot.config.C; | ||||
| @@ -120,7 +122,6 @@ public class DebugExec extends SubCommand { | ||||
|         scope.put("UUIDHandler", UUIDHandler.implementation); | ||||
|         scope.put("DBFunc", DBFunc.dbManager); | ||||
|         scope.put("HybridUtils", HybridUtils.manager); | ||||
|         scope.put("HybridUtils", HybridUtils.manager); | ||||
|         scope.put("IMP", PS.get().IMP); | ||||
|         scope.put("MainCommand", MainCommand.getInstance()); | ||||
|          | ||||
| @@ -366,7 +367,7 @@ public class DebugExec extends SubCommand { | ||||
|                 } | ||||
|                 case "run": { | ||||
|                     try { | ||||
|                         script = StringMan.join(Files.readLines(new File(PS.get().IMP.getDirectory(), args[1]), StandardCharsets.UTF_8), ""); | ||||
|                         script = StringMan.join(Files.readLines(new File(new File(PS.get().IMP.getDirectory() + File.separator + "scripts"), args[1]), StandardCharsets.UTF_8), System.getProperty("line.separator")); | ||||
|                         if (args.length > 2) { | ||||
|                             HashMap<String, String> replacements = new HashMap<>(); | ||||
|                             for (int i = 2; i < args.length; i++) { | ||||
| @@ -384,9 +385,13 @@ public class DebugExec extends SubCommand { | ||||
|                     script = StringMan.join(args, " "); | ||||
|                 } | ||||
|             } | ||||
|             if (!ConsolePlayer.isConsole(player)) { | ||||
|                 MainUtil.sendMessage(player, C.NOT_CONSOLE); | ||||
|                 return false; | ||||
|             } | ||||
|             init(); | ||||
|             scope.put("PlotPlayer", player); | ||||
|             PS.log("> " + script); | ||||
|             System.out.print("> " + script); | ||||
|             try { | ||||
|                 if (async) { | ||||
|                     final String toExec = script; | ||||
|   | ||||
| @@ -476,9 +476,10 @@ public class Plot { | ||||
|     /** | ||||
|      * Auto merge the plot with any adjacent plots of the same owner | ||||
|      * @see MainUtil#autoMerge(Plot, UUID) to specify the owner | ||||
|      * @param removeRoads If to remove roads when merging   | ||||
|      */ | ||||
|     public void autoMerge() { | ||||
|         MainUtil.autoMerge(this, owner); | ||||
|     public void autoMerge(boolean removeRoads) { | ||||
|         MainUtil.autoMerge(this, owner, removeRoads); | ||||
|     } | ||||
|      | ||||
|     /** | ||||
|   | ||||
| @@ -821,7 +821,7 @@ public class MainUtil { | ||||
|         return string; | ||||
|     } | ||||
|  | ||||
|     public static void autoMerge(final Plot plot, final UUID uuid) { | ||||
|     public static void autoMerge(final Plot plot, final UUID uuid, boolean removeRoads) { | ||||
|         if (plot == null) { | ||||
|             return; | ||||
|         } | ||||
| @@ -843,7 +843,7 @@ public class MainUtil { | ||||
|             final PlotId top = getTopPlot(plot).id; | ||||
|             plots = getPlotSelectionIds(new PlotId(bot.x, bot.y - 1), new PlotId(top.x, top.y)); | ||||
|             if (ownsPlots(plot.world, plots, uuid, 0)) { | ||||
|                 final boolean result = mergePlots(plot.world, plots, true); | ||||
|                 final boolean result = mergePlots(plot.world, plots, removeRoads); | ||||
|                 if (result) { | ||||
|                     merge = true; | ||||
|                     continue; | ||||
| @@ -851,7 +851,7 @@ public class MainUtil { | ||||
|             } | ||||
|             plots = getPlotSelectionIds(new PlotId(bot.x, bot.y), new PlotId(top.x + 1, top.y)); | ||||
|             if (ownsPlots(plot.world, plots, uuid, 1)) { | ||||
|                 final boolean result = mergePlots(plot.world, plots, true); | ||||
|                 final boolean result = mergePlots(plot.world, plots, removeRoads); | ||||
|                 if (result) { | ||||
|                     merge = true; | ||||
|                     continue; | ||||
| @@ -859,7 +859,7 @@ public class MainUtil { | ||||
|             } | ||||
|             plots = getPlotSelectionIds(new PlotId(bot.x, bot.y), new PlotId(top.x, top.y + 1)); | ||||
|             if (ownsPlots(plot.world, plots, uuid, 2)) { | ||||
|                 final boolean result = mergePlots(plot.world, plots, true); | ||||
|                 final boolean result = mergePlots(plot.world, plots, removeRoads); | ||||
|                 if (result) { | ||||
|                     merge = true; | ||||
|                     continue; | ||||
| @@ -867,7 +867,7 @@ public class MainUtil { | ||||
|             } | ||||
|             plots = getPlotSelectionIds(new PlotId(bot.x - 1, bot.y), new PlotId(top.x, top.y)); | ||||
|             if (ownsPlots(plot.world, plots, uuid, 3)) { | ||||
|                 final boolean result = mergePlots(plot.world, plots, true); | ||||
|                 final boolean result = mergePlots(plot.world, plots, removeRoads); | ||||
|                 if (result) { | ||||
|                     merge = true; | ||||
|                     continue; | ||||
| @@ -928,7 +928,7 @@ public class MainUtil { | ||||
|         } | ||||
|         final PlotWorld plotworld = PS.get().getPlotWorld(plot.world); | ||||
|         if (plotworld.AUTO_MERGE) { | ||||
|             autoMerge(p, uuid); | ||||
|             autoMerge(p, uuid, true); | ||||
|         } | ||||
|         return true; | ||||
|     } | ||||
|   | ||||
| @@ -1,6 +1,8 @@ | ||||
| package com.intellectualcrafters.plot.util; | ||||
|  | ||||
| import java.lang.reflect.Array; | ||||
| import java.util.Collection; | ||||
| import java.util.List; | ||||
| import java.util.Map; | ||||
| import java.util.Map.Entry; | ||||
|  | ||||
| @@ -26,6 +28,37 @@ public class StringMan { | ||||
|         return sb.toString(); | ||||
|     } | ||||
|      | ||||
|     public static String getString(Object obj) { | ||||
|         if (obj == null) { | ||||
|             return "null"; | ||||
|         } | ||||
|         if (obj.getClass() == String.class) { | ||||
|             return (String) obj; | ||||
|         } | ||||
|         if (obj.getClass().isArray()) { | ||||
|             String result = ""; | ||||
|             String prefix = ""; | ||||
|              | ||||
|             for(int i=0; i<Array.getLength(obj); i++){ | ||||
|                 result += prefix + getString(Array.get(obj, i)); | ||||
|                 prefix = ","; | ||||
|             } | ||||
|             return "( " + result + " )"; | ||||
|         } | ||||
|         else if (obj instanceof Collection<?>) { | ||||
|             String result = ""; | ||||
|             String prefix = ""; | ||||
|             for (Object element : (List<?>) obj) { | ||||
|                 result += prefix + getString(element); | ||||
|                 prefix = ","; | ||||
|             } | ||||
|             return "[ " + result + " ]"; | ||||
|         } | ||||
|         else { | ||||
|             return obj.toString(); | ||||
|         } | ||||
|     } | ||||
|      | ||||
|     public static String replaceFirst(char c, String s) { | ||||
|         if (s == null) { | ||||
|             return ""; | ||||
|   | ||||
							
								
								
									
										24
									
								
								src/main/resources/automerge.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										24
									
								
								src/main/resources/automerge.js
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,24 @@ | ||||
| /* | ||||
| Need to script something quick with PlotSquared? | ||||
| /plot debugexec runasync automerge.js <removeroads> | ||||
|  | ||||
| This is an example script that will auto merge all plots | ||||
| */ | ||||
| var plots = PS.sortPlots(PS.getPlots());  | ||||
| PS.log("Attempting to auto merge " + plots.size() + " plots"); | ||||
| if ("%s0" === "true") { | ||||
|     for (var i = 0; i < plots.size(); i++) { | ||||
|         var plot = plots.get(i); | ||||
|         plot.autoMerge(false); | ||||
|     } | ||||
| } | ||||
| else if ("%s0" === "false") { | ||||
|     for (var i = 0; i < plots.size(); i++) { | ||||
|         var plot = plots.get(i); | ||||
|         plot.autoMerge(false); | ||||
|     } | ||||
| } | ||||
| else { | ||||
|     C_COMMAND_SYNTAX.send(PlotPlayer, "/plot debugexec automerge.js <removeroads>"); | ||||
|     MainUtil.sendMessage(PlotPlayer, "$1<removeroads> is true or false if you want to remove roads when auto merging"); | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 boy0001
					boy0001