Advanced String arg reader pls
This commit is contained in:
parent
7b3970ff5c
commit
a663566a89
80
src/com/massivecraft/mcore/cmd/arg/ARStringAdv.java
Normal file
80
src/com/massivecraft/mcore/cmd/arg/ARStringAdv.java
Normal file
@ -0,0 +1,80 @@
|
|||||||
|
package com.massivecraft.mcore.cmd.arg;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.command.CommandSender;
|
||||||
|
import org.bukkit.entity.HumanEntity;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.inventory.meta.BookMeta;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import com.massivecraft.mcore.util.Txt;
|
||||||
|
|
||||||
|
public class ARStringAdv extends ArgReaderAbstract<String>
|
||||||
|
{
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// INSTANCE & CONSTRUCT
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
private static ARStringAdv i = new ARStringAdv();
|
||||||
|
public static ARStringAdv get() { return i; }
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// OVERRIDE
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ArgResult<String> read(String arg, CommandSender sender)
|
||||||
|
{
|
||||||
|
// Prepare
|
||||||
|
ArgResult<String> ret = new ArgResult<String>(arg);
|
||||||
|
if (arg == null) return ret;
|
||||||
|
|
||||||
|
// null
|
||||||
|
if (arg.equalsIgnoreCase("null"))
|
||||||
|
{
|
||||||
|
ret.setResult(null);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// book
|
||||||
|
if (arg.equalsIgnoreCase("book"))
|
||||||
|
{
|
||||||
|
String bookText = getBookText(sender);
|
||||||
|
ret.setResult(bookText);
|
||||||
|
if (!ret.hasResult())
|
||||||
|
{
|
||||||
|
ret.getErrors().add("<b>No book content detected.");
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ret.hasResult())
|
||||||
|
{
|
||||||
|
ret.getErrors().add("<b>No sound matches \"<h>"+arg+"<b>\".");
|
||||||
|
ret.getErrors().add("<aqua>https://github.com/Bukkit/Bukkit/blob/master/src/main/java/org/bukkit/Sound.java");
|
||||||
|
}
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
// -------------------------------------------- //
|
||||||
|
// UTIL
|
||||||
|
// -------------------------------------------- //
|
||||||
|
|
||||||
|
public static String getBookText(CommandSender sender)
|
||||||
|
{
|
||||||
|
if (sender == null) return null;
|
||||||
|
if (!(sender instanceof HumanEntity)) return null;
|
||||||
|
HumanEntity human = (HumanEntity)sender;
|
||||||
|
ItemStack item = human.getItemInHand();
|
||||||
|
if (item == null) return null;
|
||||||
|
if (!item.hasItemMeta()) return null;
|
||||||
|
ItemMeta itemMeta = item.getItemMeta();
|
||||||
|
if (!(itemMeta instanceof BookMeta)) return null;
|
||||||
|
BookMeta bookMeta = (BookMeta)itemMeta;
|
||||||
|
if (!bookMeta.hasPages()) return null;
|
||||||
|
List<String> pages = bookMeta.getPages();
|
||||||
|
return Txt.implode(pages, "\n\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user