Random improvments and bug fixes
This commit is contained in:
		
							parent
							
								
									13051a8684
								
							
						
					
					
						commit
						c5b7f07456
					
				| @ -24,7 +24,10 @@ public class HelpCommand extends MCommand | ||||
| 		 | ||||
| 		ArrayList<String> lines = new ArrayList<String>(); | ||||
| 		 | ||||
| 		lines.addAll(Txt.parse(parentCommand.getHelp())); | ||||
| 		for (String helpline : parentCommand.getHelp()) | ||||
| 		{ | ||||
| 			lines.add(Txt.parse("<a>#<i> "+helpline)); | ||||
| 		} | ||||
| 		 | ||||
| 		for(MCommand subCommand : parentCommand.getSubCommands()) | ||||
| 		{ | ||||
|  | ||||
| @ -12,6 +12,7 @@ import com.massivecraft.mcore1.MCore; | ||||
| import com.massivecraft.mcore1.MPlugin; | ||||
| import com.massivecraft.mcore1.cmd.arg.IArgHandler; | ||||
| import com.massivecraft.mcore1.cmd.req.IReq; | ||||
| import com.massivecraft.mcore1.cmd.req.ReqHasPerm; | ||||
| import com.massivecraft.mcore1.util.Perm; | ||||
| import com.massivecraft.mcore1.util.Txt; | ||||
| 
 | ||||
| @ -77,22 +78,35 @@ public abstract class MCommand | ||||
| 	public void setDesc(String val) { this.desc = val; } | ||||
| 	public String getDesc() | ||||
| 	{ | ||||
| 		if (this.desc == null) | ||||
| 		if (this.desc != null) return this.desc; | ||||
| 		 | ||||
| 		String perm = this.getDescPermission(); | ||||
| 		if (perm != null) | ||||
| 		{ | ||||
| 			String pdesc = Perm.getPermissionDescription(this.descPermission); | ||||
| 			String pdesc = Perm.getPermissionDescription(this.getDescPermission()); | ||||
| 			if (pdesc != null) | ||||
| 			{ | ||||
| 				return pdesc; | ||||
| 			} | ||||
| 			return "*info unavailable*"; | ||||
| 		} | ||||
| 		return this.desc; | ||||
| 			 | ||||
| 		return "*info unavailable*"; | ||||
| 	} | ||||
| 	 | ||||
| 	// FIELD: descPermission | ||||
| 	// This permission node IS NOT TESTED AT ALL. It is rather used in the method above. | ||||
| 	protected String descPermission; | ||||
| 	public String getDescPermission() { return this.descPermission; } | ||||
| 	public String getDescPermission() | ||||
| 	{ | ||||
| 		if (this.descPermission != null) return this.descPermission; | ||||
| 		// Otherwise we try to find one. | ||||
| 		for (IReq req : this.requirements) | ||||
| 		{ | ||||
| 			if ( ! (req instanceof ReqHasPerm)) continue; | ||||
| 			return ((ReqHasPerm)req).getPerm(); | ||||
| 		} | ||||
| 		return null; | ||||
| 	} | ||||
| 	public void setDescPermission(String val) { this.descPermission = val; } | ||||
| 	 | ||||
| 	// FIELD: help | ||||
| @ -437,7 +451,7 @@ public abstract class MCommand | ||||
| 		T ret = handler.parse(this.arg(idx), style, this.sender, p()); | ||||
| 		if (ret == null) | ||||
| 		{ | ||||
| 			this.msg(handler.getError()); | ||||
| 			this.msg(handler.getErrors()); | ||||
| 			return defaultNotFound; | ||||
| 		} | ||||
| 		return ret; | ||||
|  | ||||
| @ -15,7 +15,7 @@ public abstract class AHBase<T> implements IArgHandler<T> | ||||
| 	public abstract T parse(String str, String style, CommandSender sender, MPlugin p); | ||||
| 
 | ||||
| 	@Override | ||||
| 	public Collection<String> getError() | ||||
| 	public Collection<String> getErrors() | ||||
| 	{ | ||||
| 		return this.error; | ||||
| 	} | ||||
|  | ||||
| @ -12,5 +12,5 @@ public interface IArgHandler<T> | ||||
| 	public T parse(String str, String style, CommandSender sender, MPlugin p); | ||||
| 	 | ||||
| 	// Error here - or null. | ||||
| 	public Collection<String> getError(); | ||||
| 	public Collection<String> getErrors(); | ||||
| } | ||||
|  | ||||
| @ -1,4 +1,4 @@ | ||||
| package com.massivecraft.mcore1.persist.gson.adapter; | ||||
| package com.massivecraft.mcore1.gson; | ||||
| 
 | ||||
| import java.lang.reflect.Type; | ||||
| import java.util.ArrayList; | ||||
| @ -3,6 +3,7 @@ package com.massivecraft.mcore1.util; | ||||
| import java.util.Collection; | ||||
| import java.util.HashSet; | ||||
| import java.util.Random; | ||||
| import java.util.Set; | ||||
| 
 | ||||
| import net.minecraft.server.ChunkPosition; | ||||
| import net.minecraft.server.MinecraftServer; | ||||
| @ -11,6 +12,8 @@ import net.minecraft.server.Packet60Explosion; | ||||
| import org.bukkit.Bukkit; | ||||
| import org.bukkit.Effect; | ||||
| import org.bukkit.Location; | ||||
| import org.bukkit.World; | ||||
| import org.bukkit.block.Block; | ||||
| import org.bukkit.craftbukkit.CraftServer; | ||||
| import org.bukkit.craftbukkit.CraftWorld; | ||||
| 
 | ||||
| @ -91,30 +94,47 @@ public class SmokeUtil | ||||
| 	} | ||||
| 	 | ||||
| 	// Fake Explosion ======== | ||||
| 	public static void fakeExplosion(Location location) | ||||
| 	{ | ||||
| 		fakeExplosion(location, 4); | ||||
| 	} | ||||
| 	 | ||||
| 	public static void fakeExplosion(Location location, int radius) | ||||
| 	{ | ||||
| 		if (location == null) return; | ||||
| 		 | ||||
| 		HashSet<ChunkPosition> blocks = new HashSet<ChunkPosition>(); | ||||
| 		int squRadius = radius * radius; | ||||
| 		World world = location.getWorld(); | ||||
| 		Set<Block> blocks = new HashSet<Block>(); | ||||
| 		int r2 = radius * radius; | ||||
| 		for(int x = -radius; x <= radius; x++) | ||||
| 		{ | ||||
| 			for(int y = -radius; y <= radius; y++) | ||||
| 			{ | ||||
| 				for(int z = -radius; z <= radius; z++) | ||||
| 				{ | ||||
| 					if(x*x+y*y+z*z+x+y+z+0.75 < squRadius) // ??? | ||||
| 					{ | ||||
| 						blocks.add(new ChunkPosition( | ||||
| 						(int)(location.getX()+x+0.5), | ||||
| 						(int)(location.getY()+y+0.5), | ||||
| 						(int)(location.getZ()+z+0.5))); | ||||
| 					} | ||||
| 					if(x*x + y*y + z*z + x+y+z + 0.75 > r2) continue; | ||||
| 					Block toadd = world.getBlockAt((int)(location.getX()+x+0.5), (int)(location.getY()+x+0.5), (int)(location.getZ()+x+0.5)); | ||||
| 					if (toadd == null) continue; | ||||
| 					if (toadd.getTypeId() != 0) continue; | ||||
| 					blocks.add(toadd); | ||||
| 				} | ||||
| 			} | ||||
| 		} | ||||
| 		fakeExplosion(location, blocks); | ||||
| 	} | ||||
| 	 | ||||
| 	protected static void fakeExplosion(Location location, Set<Block> blocks) | ||||
| 	{ | ||||
| 		if (blocks == null) return; | ||||
| 		if (blocks.size() == 0) return; | ||||
| 		 | ||||
| 		Packet60Explosion packet = new Packet60Explosion(location.getX(),location.getY(), location.getZ(), 0.1f, blocks); | ||||
| 		HashSet<ChunkPosition> chunkPositions = new HashSet<ChunkPosition>(blocks.size()); | ||||
| 		 | ||||
| 		for (Block block : blocks) | ||||
| 		{ | ||||
| 			chunkPositions.add(new ChunkPosition(block.getX(), block.getY(), block.getZ())); | ||||
| 		} | ||||
| 		 | ||||
| 		Packet60Explosion packet = new Packet60Explosion(location.getX(),location.getY(), location.getZ(), 0.1f, chunkPositions); | ||||
| 		CraftServer craftServer = (CraftServer) Bukkit.getServer(); | ||||
| 		MinecraftServer minecraftServer = craftServer.getServer(); | ||||
| 		 | ||||
|  | ||||
| @ -198,12 +198,12 @@ public class Txt | ||||
| 	    else return string + repeat(string, times-1); | ||||
| 	} | ||||
| 	 | ||||
| 	public static String implode(List<String> list, String glue) | ||||
| 	public static String implode(final List<? extends Object> list, final String glue) | ||||
| 	{ | ||||
| 	    return implode(list.toArray(new String[0]), glue); | ||||
| 		return implode(list.toArray(new Object[0]), glue); | ||||
| 	} | ||||
| 	 | ||||
| 	public static String implode(Object[] list, String glue) | ||||
| 	public static String implode(final Object[] list, final String glue) | ||||
| 	{ | ||||
| 	    StringBuilder ret = new StringBuilder(); | ||||
| 	    for (int i=0; i<list.length; i++) | ||||
| @ -217,38 +217,56 @@ public class Txt | ||||
| 	    return ret.toString(); | ||||
| 	} | ||||
| 	 | ||||
| 	public static String implodeCommaAndDot(List<String> list, String comma, String and, String dot) | ||||
| 	public static String implodeCommaAndDot(final Collection<? extends Object> objects, final String comma, final String and, final String dot) | ||||
| 	{ | ||||
| 	    if (list.size() == 0) return ""; | ||||
| 		if (list.size() == 1) return list.get(0); | ||||
| 	    if (objects.size() == 0) return ""; | ||||
| 		if (objects.size() == 1) return objects.iterator().next().toString(); | ||||
| 		 | ||||
| 		String lastItem = list.get(list.size()-1); | ||||
| 		String nextToLastItem = list.get(list.size()-2); | ||||
| 		List<Object> ourObjects = new ArrayList<Object>(objects); | ||||
| 		 | ||||
| 		String lastItem = ourObjects.get(ourObjects.size()-1).toString(); | ||||
| 		String nextToLastItem = ourObjects.get(ourObjects.size()-2).toString(); | ||||
| 		String merge = nextToLastItem+and+lastItem; | ||||
| 		list.set(list.size()-2, merge); | ||||
| 		list.remove(list.size()-1); | ||||
| 		ourObjects.set(ourObjects.size()-2, merge); | ||||
| 		ourObjects.remove(ourObjects.size()-1); | ||||
| 		 | ||||
| 		return implode(list, comma)+dot; | ||||
| 		return implode(ourObjects, comma)+dot; | ||||
| 	} | ||||
| 	public static String implodeCommaAnd(List<String> list, String comma, String and) | ||||
| 	public static String implodeCommaAnd(final Collection<? extends Object> objects, final String comma, final String and) | ||||
| 	{ | ||||
| 		return implodeCommaAndDot(list, comma, and, ""); | ||||
| 		return implodeCommaAndDot(objects, comma, and, ""); | ||||
| 	} | ||||
| 	public static String implodeCommaAndDot(List<String> list, String color) | ||||
| 	public static String implodeCommaAndDot(final Collection<? extends Object> objects, final String color) | ||||
| 	{ | ||||
| 	    return implodeCommaAndDot(list, color+", ", color+" and ", color+"."); | ||||
| 	    return implodeCommaAndDot(objects, color+", ", color+" and ", color+"."); | ||||
| 	} | ||||
| 	public static String implodeCommaAnd(List<String> list, String color) | ||||
| 	public static String implodeCommaAnd(final Collection<? extends Object> objects, final String color) | ||||
| 	{ | ||||
| 	    return implodeCommaAndDot(list, color+", ", color+" and ", ""); | ||||
| 	    return implodeCommaAndDot(objects, color+", ", color+" and ", ""); | ||||
| 	} | ||||
| 	public static String implodeCommaAndDot(List<String> list) | ||||
| 	public static String implodeCommaAndDot(final Collection<? extends Object> objects) | ||||
| 	{ | ||||
| 		return implodeCommaAndDot(list, ""); | ||||
| 		return implodeCommaAndDot(objects, ""); | ||||
| 	} | ||||
| 	public static String implodeCommaAnd(List<String> list) | ||||
| 	public static String implodeCommaAnd(final Collection<? extends Object> objects) | ||||
| 	{ | ||||
| 		return implodeCommaAnd(list, ""); | ||||
| 		return implodeCommaAnd(objects, ""); | ||||
| 	} | ||||
| 	 | ||||
| 	public static Integer indexOfFirstDigit(final String str) | ||||
| 	{ | ||||
| 		Integer ret = null; | ||||
| 		for (int i = 0; i < str.length(); i++) | ||||
| 		{ | ||||
| 			char c = str.charAt(i); | ||||
| 			boolean isDigit = (c >= '0' && c <= '9'); | ||||
| 			if (isDigit) | ||||
| 			{ | ||||
| 				ret = i; | ||||
| 				break; | ||||
| 			} | ||||
| 		} | ||||
| 		return ret; | ||||
| 	} | ||||
| 	 | ||||
| 	// -------------------------------------------- // | ||||
| @ -290,7 +308,7 @@ public class Txt | ||||
| 		ArrayList<String> ret = new ArrayList<String>(); | ||||
| 		int pageZeroBased = pageHumanBased - 1; | ||||
| 		int pageheight = 9; | ||||
| 		int pagecount = (lines.size() / pageheight)+1; | ||||
| 		int pagecount = (int)Math.ceil(((double)lines.size()) / pageheight); | ||||
| 		 | ||||
| 		ret.add(titleize(title+parse("<a>")+" "+pageHumanBased+"/"+pagecount)); | ||||
| 		 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user