本文整理汇总了Java中ch.njol.skript.classes.ClassInfo类的典型用法代码示例。如果您正苦于以下问题:Java ClassInfo类的具体用法?Java ClassInfo怎么用?Java ClassInfo使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
ClassInfo类属于ch.njol.skript.classes包,在下文中一共展示了ClassInfo类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: get
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
@Override
protected Object[] get(Event e) {
Object t = type.getSingle(e);
if (t == null) {
return null;
}
Class convertTo;
if (t instanceof ClassInfo) {
convertTo = ((ClassInfo) t).getC();
} else if (t instanceof JavaType) {
convertTo = ((JavaType) t).getJavaClass();
} else {
throw new IllegalStateException();
}
return convertArray(source.getArray(e), convertTo);
}
示例2: init
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
@SuppressWarnings("unchecked")
@Override
public boolean init(Literal<?>[] args, int matchedPattern,
SkriptParser.ParseResult parseResult) {
isChanger = (parseResult.mark & 1) == 1;
String what = parseResult.regexes.get(0).group();
switch (matchedPattern) {
case 0:
whiches.add(createSyntaxInfo(what, (parseResult.mark & 2) == 2, false));
break;
case 1:
String fromType = ((Literal<ClassInfo>) args[0]).getSingle().getCodeName();
whiches.add(createSyntaxInfo("[the] " + what + " of %$" + fromType + "s%", false, true));
whiches.add(createSyntaxInfo("%$" + fromType + "s%'[s] " + what, false, false));
break;
}
return true;
}
示例3: init
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
@SuppressWarnings("unchecked")
@Override
public boolean init(Literal<?>[] args, int matchedPattern,
SkriptParser.ParseResult parseResult) {
String c = parseResult.regexes.get(0).group();
switch (matchedPattern) {
case 0:
whiches.add(createSyntaxInfo(c, false));
break;
case 1:
String type = ((Literal<ClassInfo>) args[0]).getSingle().getCodeName();
whiches.add(createSyntaxInfo("%" + type + "% (is|are) " + c, false));
whiches.add(createSyntaxInfo("%" + type + "% (isn't|is not|aren't|are not) " + c, true));
break;
}
return true;
}
示例4: build
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
public DocumentationElement.Changer build(DocumentationElement parent) {
ClassInfo classInfo;
boolean single;
if (type == null) {
classInfo = null;
single = false;
} else if (type.getComponentType() != null) {
classInfo = Classes.getExactClassInfo(type.getComponentType());
single = false;
} else {
classInfo = Classes.getExactClassInfo(type);
single = true;
}
Optional<Pair<ClassInfo, Boolean>> typeDoc = classInfo == null ? Optional.empty() : Optional.of(new Pair<>(classInfo, single));
return new DocumentationElement.Changer(parent, mode, typeDoc, description, originVersion);
}
示例5: getSuperClassInfo
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
/**
* Gets the class info of the given class or its closest registered superclass. This method will never return null unless <tt>c</tt> is null.
*
* @param c
* @return The closest superclass's info
*/
@SuppressWarnings({"unchecked", "null"})
public static <T> ClassInfo<? super T> getSuperClassInfo(final Class<T> c) {
assert c != null;
checkAllowClassInfoInteraction();
final ClassInfo<?> i = superClassInfos.get(c);
if (i != null)
return (ClassInfo<? super T>) i;
for (final ClassInfo<?> ci : getClassInfos()) {
if (ci.getC().isAssignableFrom(c)) {
if (!Skript.isAcceptRegistrations())
superClassInfos.put(c, ci);
return (ClassInfo<? super T>) ci;
}
}
assert false;
return null;
}
示例6: getClassInfoFromUserInput
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
/**
* As the name implies
*
* @param name
* @return the class info or null if the name was not recognised
*/
@Nullable
public static ClassInfo<?> getClassInfoFromUserInput(String name) {
checkAllowClassInfoInteraction();
name = "" + name.toLowerCase();
for (final ClassInfo<?> ci : getClassInfos()) {
final Pattern[] uip = ci.getUserInputPatterns();
if (uip == null)
continue;
for (final Pattern pattern : uip) {
if (pattern.matcher(name).matches())
return ci;
}
}
return null;
}
示例7: parseSimple
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
/**
* Parses without trying to convert anything.
* <p>
* Can log an error xor other log messages.
*
* @param s
* @param c
* @return The parsed object
*/
@Nullable
public static <T> T parseSimple(final String s, final Class<T> c, final ParseContext context) {
final ParseLogHandler log = SkriptLogger.startParseLogHandler();
try {
for (final ClassInfo<?> info : getClassInfos()) {
final Parser<?> parser = info.getParser();
if (parser == null || !parser.canParse(context) || !c.isAssignableFrom(info.getC()))
continue;
log.clear();
@SuppressWarnings("unchecked")
final T t = (T) parser.parse(s, context);
if (t != null) {
log.printLog();
return t;
}
}
log.printError();
} finally {
log.stop();
}
return null;
}
示例8: getYggdrasilStart
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
private final static byte[] getYggdrasilStart(final ClassInfo<?> c) throws NotSerializableException {
assert Enum.class.isAssignableFrom(Kleenean.class) && Tag.getType(Kleenean.class) == Tag.T_ENUM : Tag.getType(Kleenean.class); // TODO why is this check here?
final Tag t = Tag.getType(c.getC());
assert t.isWrapper() || t == Tag.T_STRING || t == Tag.T_OBJECT || t == Tag.T_ENUM;
final byte[] cn = t == Tag.T_OBJECT || t == Tag.T_ENUM ? Variables.yggdrasil.getID(c.getC()).getBytes(UTF_8) : null;
final byte[] r = new byte[YGGDRASIL_START.length + 1 + (cn == null ? 0 : 1 + cn.length)];
int i = 0;
for (; i < YGGDRASIL_START.length; i++)
r[i] = YGGDRASIL_START[i];
r[i++] = t.tag;
if (cn != null) {
r[i++] = (byte) cn.length;
for (int j = 0; j < cn.length; j++)
r[i++] = cn[j];
}
assert i == r.length;
return r;
}
示例9: deserialize
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
@Nullable
public final static Object deserialize(final ClassInfo<?> type, InputStream value) {
Serializer<?> s;
assert (s = type.getSerializer()) != null && (s.mustSyncDeserialization() ? Bukkit.isPrimaryThread() : true) : type + "; " + s + "; " + Bukkit.isPrimaryThread();
YggdrasilInputStream in = null;
try {
value = new SequenceInputStream(new ByteArrayInputStream(getYggdrasilStart(type)), value);
in = Variables.yggdrasil.newInputStream(value);
return in.readObject();
} catch (final IOException e) { // i.e. invalid save
if (Skript.testing())
e.printStackTrace();
return null;
} finally {
if (in != null) {
try {
in.close();
} catch (final IOException e) {}
}
try {
value.close();
} catch (final IOException e) {}
}
}
示例10: notOfType
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
public final static String notOfType(final ClassInfo<?>... cs) {
if (cs.length == 1) {
return Language.get("not") + " " + cs[0].getName().withIndefiniteArticle();
} else {
final StringBuilder b = new StringBuilder(Language.get("neither") + " ");
for (int k = 0; k < cs.length; k++) {
if (k != 0) {
if (k != cs.length - 1)
b.append(", ");
else
b.append(" " + Language.get("nor") + " ");
}
b.append(cs[k].getName().withIndefiniteArticle());
}
return "" + b.toString();
}
}
示例11: insertClass
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
private final static void insertClass(final PrintWriter pw, final ClassInfo<?> info) {
if (info.getDocName() == ClassInfo.NO_DOC)
return;
if (info.getDocName() == null || info.getDescription() == null || info.getUsage() == null || info.getExamples() == null || info.getSince() == null) {
Skript.warning("Class " + info.getCodeName() + " is missing information");
return;
}
final String desc = validateHTML(StringUtils.join(info.getDescription(), "<br/>"), "classes");
final String usage = validateHTML(StringUtils.join(info.getUsage(), "<br/>"), "classes");
final String since = info.getSince() == null ? "" : validateHTML(info.getSince(), "classes");
if (desc == null || usage == null || since == null) {
Skript.warning("Class " + info.getCodeName() + "'s description, usage or 'since' is invalid");
return;
}
final String patterns = info.getUserInputPatterns() == null ? "" : convertRegex(StringUtils.join(info.getUserInputPatterns(), "\n"));
insertOnDuplicateKeyUpdate(pw, "classes",
"id, name, description, patterns, `usage`, examples, since",
"patterns = TRIM(LEADING '\n' FROM CONCAT(patterns, '\n', '" + escapeSQL(patterns) + "'))",
escapeHTML(info.getCodeName()),
escapeHTML(info.getDocName()),
desc,
patterns,
usage,
escapeHTML(StringUtils.join(info.getExamples(), "\n")),
since);
}
示例12: Changer
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
public Changer(DocumentationElement parent, ch.njol.skript.classes.Changer.ChangeMode mode, Optional<Pair<ClassInfo, Boolean>> type, String description, String originVersion) {
this.parent = parent;
this.mode = mode;
this.type = type;
this.description = description;
this.originVersion = originVersion;
}
示例13: load
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
public static void load() {
Registration.registerEffect(EffCallCustomEvent.class, "(0¦call|1¦async call|1¦call async) custom event %strings% [to] [det[ail]s %-objects%] [arg[ument]s %-objects%]")
.document("Call Custom Event", "1.6.7", "Calls a custom event with the specified id and optionally the specified details and/or arguments. "
+ "Details are used in events as event-type. For example, if you had a detail 3426, event-number would equal 3426. "
+ "Details may be of any type that is in Skript by default (number, string, player, world, etc.) as well as of any type added in MundoSK (creator, achievement, difficulty, etc.), and possibly other addons, depending on what loads in what order. "
+ "You can't have two or more details of the same type. If you try to do this, only the detail that comes last of that type will be used. "
+ "Arguments are like details, except that you may have multiple arguments of the same type, and they can be of any type from any addon. "
+ "Arguments are accessed from within the event using the Args of Custom Event expression. "
+ "For both details and arguments, you have to put them in a list variable and then call the custom event using the list variable in the syntax, otherwise you'll get an internal error. "
+ "In MundoSK 1.8, two new features have been introduced (these will not work in previous versions):"
+ "First, you can specify that the custom event is being called asynchronously. When code running in async is calling a custom event, this should be specified in order to prevent errors and corruption. "
+ "Second, you can specify multiple custom event ids. This allows users of your custom events to choose from a variety of possible ids to list for custom events. "
+ "Note that you must specify at least one id, otherwise no event will be called.");
Registration.registerEvent("Custom Event", EvtCustomEvent.class, SkriptCustomEvent.class, "ev[en]t %strings%")
.document("Custom Event", "1.6.7", "Called when the Call Custom Event effect is used with the specified id or one of the specified ids. "
+ "This is used as a way for Skripters to create their own \"events\". See the Call Custom Event effect for more info.");
Registration.registerExpression(ExprIDOfCustomEvent.class, String.class, ExpressionType.SIMPLE, "(0¦id|1¦ids) of custom event", "custom event's (0¦id|1¦ids)")
.document("ID of Custom Event", "1.6.7", "An expression, used in the Custom Event event, for either the primary id, or all ids (MundoSK 1.8+), of the custom event that was called. "
+ "The primary id means the one that was listed first when calling the custom event. See the Call Custom Event effect for more info.");
Registration.registerExpression(ExprArgsOfCustomEvent.class, Object.class, ExpressionType.SIMPLE,"args of custom event", "custom event's args")
.document("Args of Custom Event", "1.6.7", "An expression, used in the Custom Event event, for a list of the arguments, if any, "
+ "that were specified for this particular custom event call. See the Call Custom Event effect for more info.");
Registration.registerExpressionCondition(CondLastCustomEventCancelled.class, ExpressionType.SIMPLE, "last [called] custom event (0¦was|1¦wasn't) cancelled")
.document("Last Called Custom Event was Cancelled", "1.8", "Checks whether the last custom event that was called in this trigger was or wasn't cancelled. "
+ "This expression/condition is unaffected by whether another section of code calls a custom event. See the Call Custom Event effect for more info about custom events.");
try {
List<ClassInfo<?>> classes = (List<ClassInfo<?>>) Reflection.getStaticField(Classes.class, "tempClassInfos");
for (int i = 0; i < classes.size(); i++) {
registerCustomEventValue(classes.get(i));
}
} catch (Exception e1) {
Logging.reportException(CustomEventMundo.class, e1);
}
}
示例14: acceptChange
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
@Override
@Nullable
public Class<?>[] acceptChange(final ChangeMode mode) {
ClassInfo<?> rti = returnTypeInfo;
if (rti == null)
returnTypeInfo = rti = Classes.getSuperClassInfo(getReturnType());
final Changer<?> c = rti.getChanger();
if (c == null)
return null;
return c.acceptChange(mode);
}
示例15: change
import ch.njol.skript.classes.ClassInfo; //导入依赖的package包/类
@SuppressWarnings("unchecked")
@Override
public void change(final Event e, final @Nullable Object[] delta, final ChangeMode mode) {
final ClassInfo<?> rti = returnTypeInfo;
if (rti == null)
throw new UnsupportedOperationException();
final Changer<?> c = rti.getChanger();
if (c == null)
throw new UnsupportedOperationException();
((Changer<T>) c).change(getArray(e), delta, mode);
}