Button and Insertion Mson
This commit is contained in:
		
							parent
							
								
									9c55b4836e
								
							
						
					
					
						commit
						f457aafbe0
					
				
							
								
								
									
										159
									
								
								src/com/massivecraft/massivecore/Button.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										159
									
								
								src/com/massivecraft/massivecore/Button.java
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,159 @@ | |||||||
|  | package com.massivecraft.massivecore; | ||||||
|  | 
 | ||||||
|  | import java.util.Arrays; | ||||||
|  | import java.util.Collection; | ||||||
|  | import java.util.List; | ||||||
|  | 
 | ||||||
|  | import org.bukkit.ChatColor; | ||||||
|  | import org.bukkit.command.CommandSender; | ||||||
|  | 
 | ||||||
|  | import com.massivecraft.massivecore.collections.MassiveList; | ||||||
|  | import com.massivecraft.massivecore.command.MassiveCommand; | ||||||
|  | import com.massivecraft.massivecore.command.requirement.Requirement; | ||||||
|  | import com.massivecraft.massivecore.command.requirement.RequirementAbstract; | ||||||
|  | import com.massivecraft.massivecore.mson.Mson; | ||||||
|  | import static com.massivecraft.massivecore.mson.Mson.mson; | ||||||
|  | 
 | ||||||
|  | public class Button | ||||||
|  | { | ||||||
|  | 	// -------------------------------------------- // | ||||||
|  | 	// INSTANCE | ||||||
|  | 	// -------------------------------------------- // | ||||||
|  | 	 | ||||||
|  | 	public static Button get() { return new Button(); } | ||||||
|  | 	 | ||||||
|  | 	// -------------------------------------------- // | ||||||
|  | 	// CONSTRUCT | ||||||
|  | 	// -------------------------------------------- // | ||||||
|  | 	 | ||||||
|  | 	public Button() | ||||||
|  | 	{ | ||||||
|  | 		 | ||||||
|  | 	} | ||||||
|  | 	 | ||||||
|  | 	// -------------------------------------------- // | ||||||
|  | 	// CONSTANTS | ||||||
|  | 	// -------------------------------------------- // | ||||||
|  | 	 | ||||||
|  | 	// A button is either enabled or disabled. These are the two corresponding colors. | ||||||
|  | 	public static final ChatColor COLOR_ENABLED = ChatColor.AQUA; | ||||||
|  | 	public static final ChatColor COLOR_DISABLED = ChatColor.GRAY; | ||||||
|  | 	 | ||||||
|  | 	// -------------------------------------------- // | ||||||
|  | 	// FIELDS > COMMON | ||||||
|  | 	// -------------------------------------------- // | ||||||
|  | 	 | ||||||
|  | 	// This is the text inside the button. | ||||||
|  | 	private String name = null; | ||||||
|  | 	public String getName() { return this.name; } | ||||||
|  | 	public Button setName(String name) { this.name = name; return this; } | ||||||
|  | 	 | ||||||
|  | 	// Padding right, left or none.  | ||||||
|  | 	public Boolean paddingRight = null; | ||||||
|  | 	public Boolean isPaddingRight() { return this.paddingRight; } | ||||||
|  | 	public Button setPaddingRight(Boolean paddingRight) { this.paddingRight = paddingRight; return this; } | ||||||
|  | 	 | ||||||
|  | 	// Verbose visible as grey. Otherwise hidden. | ||||||
|  | 	public boolean verbose = true; | ||||||
|  | 	public boolean isVerbose() { return this.verbose; } | ||||||
|  | 	public Button setVerbose(boolean verbose) { this.verbose = verbose; return this; } | ||||||
|  | 	 | ||||||
|  | 	// When you just want to error really hard! | ||||||
|  | 	private String error = null; | ||||||
|  | 	public String getError() { return this.error; } | ||||||
|  | 	public Button setError(String error) { this.error = error; return this; } | ||||||
|  | 	 | ||||||
|  | 	// Requirements to always be validated. | ||||||
|  | 	private List<Requirement> requirements = new MassiveList<>(); | ||||||
|  | 	public List<Requirement> getRequirements() { return this.requirements; } | ||||||
|  | 	public Button setRequirements(Collection<Requirement> requirements) { this.requirements = new MassiveList<>(requirements); return this; } | ||||||
|  | 	public Button setRequirements(Requirement... requirements) { this.setRequirements(Arrays.asList(requirements)); return this; } | ||||||
|  | 	 | ||||||
|  | 	// -------------------------------------------- // | ||||||
|  | 	// FIELDS > COMMAND | ||||||
|  | 	// -------------------------------------------- // | ||||||
|  | 	 | ||||||
|  | 	private CommandSender sender = null; | ||||||
|  | 	public CommandSender getSender() { return this.sender; } | ||||||
|  | 	public Button setSender(CommandSender sender) { this.sender = sender; return this; } | ||||||
|  | 	 | ||||||
|  | 	private MassiveCommand command = null; | ||||||
|  | 	public MassiveCommand getCommand() { return this.command; } | ||||||
|  | 	public Button setCommand(MassiveCommand command) { this.command = command; return this; } | ||||||
|  | 	 | ||||||
|  | 	private List<String> args = new MassiveList<>(); | ||||||
|  | 	public List<String> getArgs() { return this.args; } | ||||||
|  | 	public Button setArgs(Collection<String> args) { this.args = new MassiveList<>(args); return this; } | ||||||
|  | 	public Button setArgs(String... args) { this.setArgs(Arrays.asList(args)); return this; } | ||||||
|  | 	 | ||||||
|  | 	// -------------------------------------------- // | ||||||
|  | 	// FIELDS > LINK | ||||||
|  | 	// -------------------------------------------- // | ||||||
|  | 	 | ||||||
|  | 	private String link = null; | ||||||
|  | 	public String getLink() { return this.link; } | ||||||
|  | 	public Button setLink(String link) { this.link = link; return this; } | ||||||
|  | 	 | ||||||
|  | 	// -------------------------------------------- // | ||||||
|  | 	// RENDER | ||||||
|  | 	// -------------------------------------------- // | ||||||
|  | 	 | ||||||
|  | 	public Mson render() | ||||||
|  | 	{ | ||||||
|  | 		// Create | ||||||
|  | 		Mson ret = mson( | ||||||
|  | 			"[", | ||||||
|  | 			Mson.parse(this.getName()), | ||||||
|  | 			"]" | ||||||
|  | 		); | ||||||
|  | 		 | ||||||
|  | 		// Error and Enabled | ||||||
|  | 		String error = this.getError(); | ||||||
|  | 		if (error == null) | ||||||
|  | 		{ | ||||||
|  | 			// Get Requirements | ||||||
|  | 			List<Requirement> requirements = new MassiveList<>(); | ||||||
|  | 			if (this.getCommand() != null) requirements.addAll(this.getCommand().getRequirements()); | ||||||
|  | 			 | ||||||
|  | 			// Check Requirements | ||||||
|  | 			error = RequirementAbstract.getRequirementsError(requirements, this.getSender(), this.getCommand(), true); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		boolean enabled = (error == null); | ||||||
|  | 		 | ||||||
|  | 		// Check Verbose | ||||||
|  | 		if ( ! enabled && ! this.isVerbose()) return null; | ||||||
|  | 		 | ||||||
|  | 		// Colorize | ||||||
|  | 		ChatColor color = (enabled ? COLOR_ENABLED : COLOR_DISABLED); | ||||||
|  | 		ret = ret.color(color); | ||||||
|  | 		 | ||||||
|  | 		// Empower | ||||||
|  | 		if (enabled) | ||||||
|  | 		{ | ||||||
|  | 			if (this.getCommand() != null) | ||||||
|  | 			{ | ||||||
|  | 				ret = ret.command(this.getCommand(), this.getArgs()); | ||||||
|  | 			} | ||||||
|  | 			else if (this.getLink() != null) | ||||||
|  | 			{ | ||||||
|  | 				ret = ret.link(this.getLink()); | ||||||
|  | 			} | ||||||
|  | 			else | ||||||
|  | 			{ | ||||||
|  | 				throw new RuntimeException(); | ||||||
|  | 			} | ||||||
|  | 		} | ||||||
|  | 		else | ||||||
|  | 		{ | ||||||
|  | 			ret = ret.tooltip(error); | ||||||
|  | 		} | ||||||
|  | 		 | ||||||
|  | 		// Pad | ||||||
|  | 		if (Boolean.TRUE.equals(this.isPaddingRight())) return mson(ret, " "); | ||||||
|  | 		if (Boolean.FALSE.equals(this.isPaddingRight())) return mson(" ", ret); | ||||||
|  | 		 | ||||||
|  | 		// Return | ||||||
|  | 		return ret; | ||||||
|  | 	} | ||||||
|  | } | ||||||
| @ -134,10 +134,10 @@ public class Mson implements Serializable | |||||||
| 	public MsonEvent getEffectiveEvent(MsonEventType type) { return type.get(this) != null ? type.get(this) : getInheritedEvent(type); } | 	public MsonEvent getEffectiveEvent(MsonEventType type) { return type.get(this) != null ? type.get(this) : getInheritedEvent(type); } | ||||||
| 	protected MsonEvent getInheritedEvent(MsonEventType type) { return this.hasParent() ? this.getParent().getEffectiveEvent(type) : null; } | 	protected MsonEvent getInheritedEvent(MsonEventType type) { return this.hasParent() ? this.getParent().getEffectiveEvent(type) : null; } | ||||||
| 
 | 
 | ||||||
| 	private final String insertionString; | 	private final String insertion; | ||||||
| 	public String getInsertionString() { return this.insertionString; } | 	public String getInsertion() { return this.insertion; } | ||||||
| 	public String getEffectiveInsertionString() { return insertionString != null ? insertionString : getInheritedInsertionString(); } | 	public String getEffectiveInsertion() { return insertion != null ? insertion : getInheritedInsertion(); } | ||||||
| 	protected String getInheritedInsertionString() { return this.hasParent() ? this.getParent().getEffectiveInsertionString() : null; } | 	protected String getInheritedInsertion() { return this.hasParent() ? this.getParent().getEffectiveInsertion() : null; } | ||||||
| 
 | 
 | ||||||
| 	// The other parts of the message | 	// The other parts of the message | ||||||
| 	private final List<Mson> extra; | 	private final List<Mson> extra; | ||||||
| @ -197,7 +197,7 @@ public class Mson implements Serializable | |||||||
| 		if (this.isObfuscated() != null) return false; | 		if (this.isObfuscated() != null) return false; | ||||||
| 		if (this.getEvent(MsonEventType.CLICK) != null) return false; | 		if (this.getEvent(MsonEventType.CLICK) != null) return false; | ||||||
| 		if (this.getEvent(MsonEventType.HOVER) != null) return false; | 		if (this.getEvent(MsonEventType.HOVER) != null) return false; | ||||||
| 		if (this.getInsertionString() != null) return false; | 		if (this.getInsertion() != null) return false; | ||||||
| 		if (this.hasExtra()) return false; | 		if (this.hasExtra()) return false; | ||||||
| 		return true; | 		return true; | ||||||
| 	} | 	} | ||||||
| @ -206,7 +206,7 @@ public class Mson implements Serializable | |||||||
| 	{ | 	{ | ||||||
| 		if (this.getEvent(MsonEventType.CLICK) != null) return true; | 		if (this.getEvent(MsonEventType.CLICK) != null) return true; | ||||||
| 		if (this.getEvent(MsonEventType.HOVER) != null) return true; | 		if (this.getEvent(MsonEventType.HOVER) != null) return true; | ||||||
| 		if (this.getInsertionString() != null) return true; | 		if (this.getInsertion() != null) return true; | ||||||
| 		 | 		 | ||||||
| 		if (this.hasExtra()) | 		if (this.hasExtra()) | ||||||
| 		{ | 		{ | ||||||
| @ -223,13 +223,13 @@ public class Mson implements Serializable | |||||||
| 	// WITH FIELDS | 	// WITH FIELDS | ||||||
| 	// -------------------------------------------- // | 	// -------------------------------------------- // | ||||||
| 	 | 	 | ||||||
| 	public Mson text(String text) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertionString, extra, parent); } | 	public Mson text(String text) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertion, extra, parent); } | ||||||
| 	public Mson color(ChatColor color) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertionString, extra, parent); } | 	public Mson color(ChatColor color) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertion, extra, parent); } | ||||||
| 	public Mson bold(Boolean bold) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertionString, extra, parent); } | 	public Mson bold(Boolean bold) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertion, extra, parent); } | ||||||
| 	public Mson italic(Boolean italic) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertionString, extra, parent); } | 	public Mson italic(Boolean italic) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertion, extra, parent); } | ||||||
| 	public Mson underlined(Boolean underlined) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertionString, extra, parent); } | 	public Mson underlined(Boolean underlined) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertion, extra, parent); } | ||||||
| 	public Mson strikethrough(Boolean strikethrough) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertionString, extra, parent); } | 	public Mson strikethrough(Boolean strikethrough) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertion, extra, parent); } | ||||||
| 	public Mson obfuscated(Boolean obfuscated) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertionString, extra, parent); } | 	public Mson obfuscated(Boolean obfuscated) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertion, extra, parent); } | ||||||
| 	 | 	 | ||||||
| 	public Mson event(Boolean tooltip, MsonEventType type, MsonEvent event) | 	public Mson event(Boolean tooltip, MsonEventType type, MsonEvent event) | ||||||
| 	{ | 	{ | ||||||
| @ -255,9 +255,9 @@ public class Mson implements Serializable | |||||||
| 	} | 	} | ||||||
| 	 | 	 | ||||||
| 	public Mson insertionString(String insertionString) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertionString, extra, parent); } | 	public Mson insertionString(String insertionString) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertionString, extra, parent); } | ||||||
| 	public Mson extra(List<Mson> extra) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertionString, extra, parent); } | 	public Mson extra(List<Mson> extra) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertion, extra, parent); } | ||||||
| 	public Mson extra(Mson[] extra) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertionString, extra == null ? null : ImmutableList.copyOf(extra), parent); } | 	public Mson extra(Mson[] extra) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertion, extra == null ? null : ImmutableList.copyOf(extra), parent); } | ||||||
| 	public Mson parent(Mson parent) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertionString, extra, parent); } | 	public Mson parent(Mson parent) { return Mson.valueOf(text, color, bold, italic, underlined, strikethrough, obfuscated, clickEvent, hoverEvent, insertion, extra, parent); } | ||||||
| 	 | 	 | ||||||
| 	// -------------------------------------------- // | 	// -------------------------------------------- // | ||||||
| 	// ADD | 	// ADD | ||||||
| @ -358,12 +358,12 @@ public class Mson implements Serializable | |||||||
| 	{ | 	{ | ||||||
| 		// NOTE: We can't use null. | 		// NOTE: We can't use null. | ||||||
| 		// Since we want to override color and format in parents. | 		// Since we want to override color and format in parents. | ||||||
| 		return Mson.valueOf(text, ChatColor.WHITE, false, false, false, false, false, clickEvent, hoverEvent, insertionString, extra, parent); | 		return Mson.valueOf(text, ChatColor.WHITE, false, false, false, false, false, clickEvent, hoverEvent, insertion, extra, parent); | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	public Mson stripStyle() | 	public Mson stripStyle() | ||||||
| 	{ | 	{ | ||||||
| 		Mson ret = Mson.valueOf(text, null, null, null, null, null, null, clickEvent, hoverEvent, insertionString, null, parent); | 		Mson ret = Mson.valueOf(text, null, null, null, null, null, null, clickEvent, hoverEvent, insertion, null, parent); | ||||||
| 		 | 		 | ||||||
| 		if (this.hasExtra()) | 		if (this.hasExtra()) | ||||||
| 		{ | 		{ | ||||||
| @ -394,7 +394,7 @@ public class Mson implements Serializable | |||||||
| 			this.isEffectiveObfuscated(), | 			this.isEffectiveObfuscated(), | ||||||
| 			this.getEffectiveEvent(MsonEventType.CLICK), | 			this.getEffectiveEvent(MsonEventType.CLICK), | ||||||
| 			this.getEffectiveEvent(MsonEventType.HOVER), | 			this.getEffectiveEvent(MsonEventType.HOVER), | ||||||
| 			this.getEffectiveInsertionString(), | 			this.getEffectiveInsertion(), | ||||||
| 			this.getExtra(), | 			this.getExtra(), | ||||||
| 			null | 			null | ||||||
| 		); | 		); | ||||||
| @ -456,7 +456,7 @@ public class Mson implements Serializable | |||||||
| 				 | 				 | ||||||
| 		 | 		 | ||||||
| 		// Insertionstring | 		// Insertionstring | ||||||
| 		this.insertionString = insertionString; | 		this.insertion = insertionString; | ||||||
| 		 | 		 | ||||||
| 		// Mojang doesn't allow zero sized arrays, but null is fine. So null. | 		// Mojang doesn't allow zero sized arrays, but null is fine. So null. | ||||||
| 		if (extra != null && extra.size() == 0) extra = null; | 		if (extra != null && extra.size() == 0) extra = null; | ||||||
| @ -1293,7 +1293,7 @@ public class Mson implements Serializable | |||||||
| 		result = prime * result + Objects.hashCode(this.underlined); | 		result = prime * result + Objects.hashCode(this.underlined); | ||||||
| 		result = prime * result + Objects.hashCode(this.clickEvent); | 		result = prime * result + Objects.hashCode(this.clickEvent); | ||||||
| 		result = prime * result + Objects.hashCode(this.hoverEvent); | 		result = prime * result + Objects.hashCode(this.hoverEvent); | ||||||
| 		result = prime * result + Objects.hashCode(this.insertionString); | 		result = prime * result + Objects.hashCode(this.insertion); | ||||||
| 		result = prime * result + Objects.hashCode(this.extra); | 		result = prime * result + Objects.hashCode(this.extra); | ||||||
| 		return result; | 		return result; | ||||||
| 	} | 	} | ||||||
| @ -1314,7 +1314,7 @@ public class Mson implements Serializable | |||||||
| 		if ( ! MUtil.equals(this.underlined, that.underlined)) return false; | 		if ( ! MUtil.equals(this.underlined, that.underlined)) return false; | ||||||
| 		if ( ! MUtil.equals(this.clickEvent, that.clickEvent)) return false; | 		if ( ! MUtil.equals(this.clickEvent, that.clickEvent)) return false; | ||||||
| 		if ( ! MUtil.equals(this.hoverEvent, that.hoverEvent)) return false; | 		if ( ! MUtil.equals(this.hoverEvent, that.hoverEvent)) return false; | ||||||
| 		if ( ! MUtil.equals(this.insertionString, that.insertionString)) return false; | 		if ( ! MUtil.equals(this.insertion, that.insertion)) return false; | ||||||
| 		if ( ! MUtil.equals(this.extra, that.extra)) return false; | 		if ( ! MUtil.equals(this.extra, that.extra)) return false; | ||||||
| 
 | 
 | ||||||
| 		return true; | 		return true; | ||||||
|  | |||||||
| @ -27,7 +27,7 @@ public abstract class MsonEventType | |||||||
| 				mson.isObfuscated(), | 				mson.isObfuscated(), | ||||||
| 				event, | 				event, | ||||||
| 				mson.getEvent(HOVER), | 				mson.getEvent(HOVER), | ||||||
| 				mson.getInsertionString(), | 				mson.getInsertion(), | ||||||
| 				mson.getExtra(), | 				mson.getExtra(), | ||||||
| 				mson.getParent() | 				mson.getParent() | ||||||
| 			); | 			); | ||||||
| @ -55,7 +55,7 @@ public abstract class MsonEventType | |||||||
| 				mson.isObfuscated(), | 				mson.isObfuscated(), | ||||||
| 				mson.getEvent(CLICK), | 				mson.getEvent(CLICK), | ||||||
| 				event, | 				event, | ||||||
| 				mson.getInsertionString(), | 				mson.getInsertion(), | ||||||
| 				mson.getExtra(), | 				mson.getExtra(), | ||||||
| 				mson.getParent() | 				mson.getParent() | ||||||
| 			); | 			); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user