Commit 82d52aef authored by Björn Zeutzheim's avatar Björn Zeutzheim

Added Format constants.

Extended type definitions.
parent 32fc6ee7
<component name="InspectionProjectProfileManager">
<profile version="1.0">
<option name="myName" value="Project Default" />
<inspection_tool class="unused" enabled="true" level="WARNING" enabled_by_default="true" klass="packageLocal" method="protected">
<inspection_tool class="unused" enabled="true" level="WARNING" enabled_by_default="true" klass="packageLocal" field="protected" method="protected">
<option name="LOCAL_VARIABLE" value="true" />
<option name="FIELD" value="true" />
<option name="METHOD" value="true" />
......
......@@ -65,6 +65,7 @@ declare namespace fe {
opOnly?: boolean;
processCommand: CommandCallback;
tabComplete?: CommandCallback;
constructor();
}
interface FEServer {
......@@ -81,12 +82,6 @@ declare namespace fe {
getLastLogin(playerId: java.util.UUID): java.util.Date;
}
class PermissionLevel {
static TRUE: net.minecraftforge.permission.PermissionLevel;
static OP: net.minecraftforge.permission.PermissionLevel;
static FALSE: net.minecraftforge.permission.PermissionLevel;
}
class Permissions {
static checkBooleanPermission(permissionValue: string): boolean;
static getPermission(ident: UserIdent, point: WorldPoint, area: WorldArea, groups: string[], permissionNode: string, isProperty: boolean): string;
......@@ -133,6 +128,7 @@ declare namespace fe {
static addPlayerToGroup(ident: UserIdent, group: string): void;
static removePlayerFromGroup(ident: UserIdent, group: string): void;
static getPrimaryGroup(ident: UserIdent): string;
constructor();
}
class Point extends Wrapper {
......@@ -200,7 +196,7 @@ declare namespace fe {
isInZone(point: WorldArea): boolean;
isPartOfZone(point: WorldArea): boolean;
getName(): string;
getParent(): com.forgeessentials.api.permissions.Zone;
getParent(): Zone;
getServerZone(): ServerZone;
}
......@@ -214,6 +210,13 @@ declare namespace fe.event.entity.player {
}
declare class PermissionLevel {
static TRUE: net.minecraftforge.permission.PermissionLevel;
static OP: net.minecraftforge.permission.PermissionLevel;
static FALSE: net.minecraftforge.permission.PermissionLevel;
constructor();
}
declare var FEServer: fe.FEServer;
......
This diff is collapsed.
const colors = [
Format.BLACK,
Format.DARK_BLUE,
Format.DARK_GREEN,
Format.DARK_AQUA,
Format.DARK_RED,
Format.DARK_PURPLE,
Format.GOLD,
Format.GRAY,
Format.DARK_GRAY,
Format.BLUE,
Format.GREEN,
Format.AQUA,
Format.RED,
Format.LIGHT_PURPLE,
Format.YELLOW,
Format.WHITE,
// Format.OBFUSCATED,
// Format.BOLD,
// Format.STRIKETHROUGH,
// Format.UNDERLINE,
// Format.ITALIC,
// Format.RESET,
];
export function processCommand(args: fe.CommandArgs) {
args.confirm('Hello JavaScript! Hello ' + args.sender.getName() + '!');
args.confirm('sin(3) = ' + Math.sin(3));
function print(message: string) {
var sOut = '';
for (let i = 0; i < message.length; i++)
sOut += colors[Math.floor(Math.random() * colors.length)] + message[i];
args.confirm(sOut);
}
print('Hello colors!');
// for (let i = 0; i < colors.length; i++)
// args.confirm(colors[i] + 'TEST');
if (args.player) {
args.confirm('Running script as player');
......@@ -11,23 +46,20 @@ export function processCommand(args: fe.CommandArgs) {
args.confirm('Running script as server');
}
var counter = +LocalStorage.getItem('test_counter') || 0;
counter++;
args.confirm('Counter at ' + counter);
LocalStorage.setItem('test_counter', counter);
args.confirm('uptime = ' + Server.getUptime());
args.confirm('timePlayed = ' + FEServer.getTimePlayed(args.player.getUuid()));
args.confirm('lastLogin = ' + FEServer.getLastLogin(args.player.getUuid()));
args.confirm('lastLogout = ' + FEServer.getLastLogout(args.player.getUuid()));
fe.Permissions.registerPermission('script.test', fe.PermissionLevel.TRUE, 'script test!');
fe.Permissions.registerPermission('script.test', PermissionLevel.TRUE, 'script test!');
args.confirm(``);
var point: fe.Point = new fe.Point(1, 2, 3);
args.confirm(`new fe.Point(1, 2, 3) = ${point.getX()}, ${point.getY()}, ${point.getZ()}`);
args.confirm(`instanceof fe.Point = ${point instanceof fe.Point ? 'true' : 'false'}`);
args.confirm(`instanceof fe.WorldPoint = ${point instanceof fe.WorldPoint ? 'true' : 'false'}`);
args.confirm(``);
var point2: fe.WorldPoint = new fe.WorldPoint(0, 4, 5, 6);
args.confirm(`new fe.WorldPoint(0, 4, 5, 6) = ${point2.getX()}, ${point2.getY()}, ${point2.getZ()}, dim = ${point2.getDimension()}`);
args.confirm(`instanceof fe.Point = ${point2 instanceof fe.Point ? 'true' : 'false'}`);
args.confirm(`instanceof fe.WorldPoint = ${point2 instanceof fe.WorldPoint ? 'true' : 'false'}`);
args.confirm(``);
......@@ -41,26 +73,30 @@ export function processCommand(args: fe.CommandArgs) {
if (args.player) {
var nbt = getNbt(args.player);
nbt[NBT_INT + 'jscript_counter'] = (nbt[NBT_INT + 'jscript_counter'] || 0) + 1;
args.confirm('NBT data of player:');
args.confirm(JSON.stringify(nbt));
args.confirm('NBT data of player: ' + JSON.stringify(nbt));
setNbt(args.player, nbt);
}
var counter = +LocalStorage.getItem('test_counter') || 0;
counter++;
args.confirm('Counter at ' + counter);
LocalStorage.setItem('test_counter', counter);
// var doAsHideChat = args.doAs(sender, sender, true);
// args.cmd(doAsHideChat, 'give', args.sender.getCommandSenderName(), 'minecraft:dirt', '1');
setTimeout(() => {
args.notify('Timeout 3 (6s)');
}, 6000);
var t1 = setTimeout(() => {
args.notify('Timeout 2 (4s)');
}, 4000);
setTimeout(() => {
args.notify('Timeout 1 (2s) -> clear timeout 2');
clearTimeout(t1);
}, 2000);
// setTimeout(() => {
// args.notify('Timeout 3 (6s)');
// }, 6000);
//
// var t1 = setTimeout(() => {
// args.notify('Timeout 2 (4s)');
// }, 4000);
//
// setTimeout(() => {
// args.notify('Timeout 1 (2s) -> clear timeout 2');
// clearTimeout(t1);
// }, 2000);
}
FEServer.registerCommand({
......
......@@ -75,15 +75,18 @@ public final class ScriptCompiler
}
@SuppressWarnings("unchecked")
private static void registerWrapperClass(ClassInfo classInfo, String packageBase)
public static void registerWrapperClass(ClassInfo classInfo, String packageBase)
{
if (!classInfo.getSimpleName().startsWith("Js") || classInfo.getName().equals(JsWrapper.class.getName()))
return;
Class<?> clazz = classInfo.load();
// if (!JsWrapper.class.isAssignableFrom(clazz))
// return;
registerWrapperClass(classInfo.load(), packageBase);
}
String jsName = classInfo.getName().substring(packageBase.length() + 1);
public static void registerWrapperClass(Class<?> clazz, String packageBase)
{
String jsName = clazz.getName();
if (packageBase != null && !packageBase.isEmpty())
jsName = jsName.substring(packageBase.length() + 1);
String[] jsNameParts = jsName.split("\\.");
SimpleBindings pkg = rootPkg;
......@@ -98,7 +101,12 @@ public final class ScriptCompiler
parentPkg.put(name, pkg);
}
}
pkg.put(jsNameParts[jsNameParts.length - 1].substring(2), toNashornClass(clazz));
String className = jsNameParts[jsNameParts.length - 1];
if (className.startsWith("Js"))
className = className.substring(2);
pkg.put(className, toNashornClass(clazz));
// Check for event handlers
try
......
......@@ -2,9 +2,11 @@ package com.forgeessentials.jscripting;
import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.lang.ref.WeakReference;
import java.lang.reflect.Field;
import java.lang.reflect.Modifier;
......@@ -36,6 +38,7 @@ import com.forgeessentials.core.misc.TaskRegistry.RunLaterTimerTask;
import com.forgeessentials.jscripting.command.CommandJScriptCommand;
import com.forgeessentials.jscripting.wrapper.mc.event.JsEvent;
import com.forgeessentials.util.output.ChatOutputHandler;
import com.google.common.base.Charsets;
public class ScriptInstance
{
......@@ -156,7 +159,7 @@ public class ScriptInstance
{
illegalFunctions.clear();
script = null;
try (BufferedReader reader = new BufferedReader(new FileReader(file)))
try (BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file), Charsets.UTF_8)))
{
// Load and compile script
script = ModuleJScripting.getCompilable().compile(reader);
......
......@@ -5,14 +5,20 @@ import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintStream;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Calendar;
import java.util.Collection;
import java.util.Date;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TimeZone;
import java.util.UUID;
import org.apache.commons.io.FileUtils;
......@@ -271,8 +277,8 @@ public class TsdGenerator extends Doclet
{
if (!constructorDoc.isPublic() || ignoreDoc(constructorDoc))
return;
// Hide default constructors
if (constructorDoc.containingClass().superclass().qualifiedName().equals(Object.class.getName()) && constructorDoc.parameters().length == 0)
// Hide default constructors of classes extending Object
if (constructorDoc.containingClass().superclass().qualifiedName().equals(Object.class.getName()) && constructorDoc.isSynthetic())
return;
// Hide wrapper constructors
if (constructorDoc.parameters().length >= 1 && constructorDoc.parameters()[0].name().equals("that"))
......@@ -604,7 +610,14 @@ public class TsdGenerator extends Doclet
"-subpackages", "com.forgeessentials.jscripting.wrapper",
"-out", mcDtsFile.getAbsolutePath(),
"-header", "src/main/resources/com/forgeessentials/jscripting/mc_header.d.ts",
"-external", UUID.class.getName()
"-external", UUID.class.getName(),
"-external", Date.class.getName(),
"-external", Calendar.class.getName(),
"-external", TimeZone.class.getName(),
"-external", Locale.class.getName(),
// "-external", Instant.class.getName(),
// "-external", Collection.class.getName(),
"-external", net.minecraft.world.WorldSettings.GameType.class.getName()
);
FileUtils.copyFileToDirectory(feDtsFile, outDir);
......
package com.forgeessentials.jscripting.fewrapper.fe;
package com.forgeessentials.jscripting.fewrapper;
import net.minecraftforge.permission.PermissionLevel;
......
......@@ -42,9 +42,9 @@ public class JsZone<T extends Zone> extends JsWrapper<T>
return that.getName();
}
public Zone getParent()
public JsZone<?> getParent()
{
return that.getParent();
return new JsZone(that.getParent());
}
public JsServerZone<?> getServerZone()
......
package com.forgeessentials.jscripting.wrapper;
import net.minecraft.util.EnumChatFormatting;
/**
* tsd.static Color // not needed because this class is already registered on root level
*/
public class JsFormat
{
public static String FORMAT_CHAR = "\u00a7";
public static String BLACK = EnumChatFormatting.BLACK.toString();
public static String DARK_BLUE = EnumChatFormatting.DARK_BLUE.toString();
public static String DARK_GREEN = EnumChatFormatting.DARK_GREEN.toString();
public static String DARK_AQUA = EnumChatFormatting.DARK_AQUA.toString();
public static String DARK_RED = EnumChatFormatting.DARK_RED.toString();
public static String DARK_PURPLE = EnumChatFormatting.DARK_PURPLE.toString();
public static String GOLD = EnumChatFormatting.GOLD.toString();
public static String GRAY = EnumChatFormatting.GRAY.toString();
public static String DARK_GRAY = EnumChatFormatting.DARK_GRAY.toString();
public static String BLUE = EnumChatFormatting.BLUE.toString();
public static String GREEN = EnumChatFormatting.GREEN.toString();
public static String AQUA = EnumChatFormatting.AQUA.toString();
public static String RED = EnumChatFormatting.RED.toString();
public static String LIGHT_PURPLE = EnumChatFormatting.LIGHT_PURPLE.toString();
public static String YELLOW = EnumChatFormatting.YELLOW.toString();
public static String WHITE = EnumChatFormatting.WHITE.toString();
public static String OBFUSCATED = EnumChatFormatting.OBFUSCATED.toString();
public static String BOLD = EnumChatFormatting.BOLD.toString();
public static String STRIKETHROUGH = EnumChatFormatting.STRIKETHROUGH.toString();
public static String UNDERLINE = EnumChatFormatting.UNDERLINE.toString();
public static String ITALIC = EnumChatFormatting.ITALIC.toString();
public static String RESET = EnumChatFormatting.RESET.toString();
}
package com.forgeessentials.jscripting.wrapper;
import java.io.IOException;
import java.util.Calendar;
import java.util.Date;
import javax.script.ScriptEngine;
import javax.script.ScriptException;
......@@ -34,6 +36,8 @@ public class ScriptExtensionRoot implements ScriptExtension
{
Throwables.propagate(e);
}
ScriptCompiler.registerWrapperClass(Date.class, "");
ScriptCompiler.registerWrapperClass(Calendar.class, "");
}
@Override
......@@ -45,6 +49,7 @@ public class ScriptExtensionRoot implements ScriptExtension
engine.put("Item", ScriptCompiler.toNashornClass(JsItem.class));
engine.put("World", ScriptCompiler.toNashornClass(JsWorld.class));
engine.put("localStorage", ScriptCompiler.toNashornClass(JsLocalStorage.class));
engine.put("Color", ScriptCompiler.toNashornClass(JsFormat.class));
engine.eval(INIT_SCRIPT);
}
......
......@@ -65,6 +65,7 @@ declare namespace fe {
opOnly?: boolean;
processCommand: CommandCallback;
tabComplete?: CommandCallback;
constructor();
}
interface FEServer {
......@@ -81,12 +82,6 @@ declare namespace fe {
getLastLogin(playerId: java.util.UUID): java.util.Date;
}
class PermissionLevel {
static TRUE: net.minecraftforge.permission.PermissionLevel;
static OP: net.minecraftforge.permission.PermissionLevel;
static FALSE: net.minecraftforge.permission.PermissionLevel;
}
class Permissions {
static checkBooleanPermission(permissionValue: string): boolean;
static getPermission(ident: UserIdent, point: WorldPoint, area: WorldArea, groups: string[], permissionNode: string, isProperty: boolean): string;
......@@ -133,6 +128,7 @@ declare namespace fe {
static addPlayerToGroup(ident: UserIdent, group: string): void;
static removePlayerFromGroup(ident: UserIdent, group: string): void;
static getPrimaryGroup(ident: UserIdent): string;
constructor();
}
class Point extends Wrapper {
......@@ -200,7 +196,7 @@ declare namespace fe {
isInZone(point: WorldArea): boolean;
isPartOfZone(point: WorldArea): boolean;
getName(): string;
getParent(): com.forgeessentials.api.permissions.Zone;
getParent(): Zone;
getServerZone(): ServerZone;
}
......@@ -214,6 +210,13 @@ declare namespace fe.event.entity.player {
}
declare class PermissionLevel {
static TRUE: net.minecraftforge.permission.PermissionLevel;
static OP: net.minecraftforge.permission.PermissionLevel;
static FALSE: net.minecraftforge.permission.PermissionLevel;
constructor();
}
declare var FEServer: fe.FEServer;
......
declare type char = string;
declare type byte = number;
declare type int = number;
declare type long = number;
......@@ -58,3 +59,79 @@ declare namespace cpw.mods.fml.common.eventhandler {
LOWEST // Last to execute
}
}
declare namespace java.util {
interface GenericCollection<E> {
}
interface Collection extends GenericCollection<any> {
}
interface GenericList<E> extends GenericCollection<E> {
size(): int;
isEmpty(): boolean;
contains(arg0: any): boolean;
// iterator(): Iterator;
toArray(): any[];
toArray(arg0: E[]): E[];
add(arg0: E): boolean;
remove(arg0: any): boolean;
containsAll(arg0: Collection | GenericCollection<E>): boolean;
addAll(arg0: Collection | GenericCollection<E>): boolean;
addAll(arg0: int, arg1: Collection | GenericCollection<E>): boolean;
removeAll(arg0: Collection | GenericCollection<E>): boolean;
retainAll(arg0: Collection | GenericCollection<E>): boolean;
// replaceAll(arg0: UnaryOperator): void;
// sort(arg0: Comparator): void;
clear(): void;
equals(arg0: any): boolean;
hashCode(): int;
get(arg0: int): E;
set(arg0: int, arg1: E): E;
add(arg0: int, arg1: E): void;
remove(arg0: int): E;
indexOf(arg0: any): int;
lastIndexOf(arg0: any): int;
// listIterator(): ListIterator;
// listIterator(arg0: int): ListIterator;
subList(arg0: int, arg1: int): GenericList<E>;
// spliterator(): Spliterator;
}
interface List extends GenericList<any> {
}
interface GenericSet<T> extends GenericCollection<T> {
}
interface Set extends GenericSet<any> {
}
interface GenericMap<TKey, TValue> {
}
interface Map extends GenericMap<any, any> {
}
namespace Locale {
interface Category {
}
interface FilteringMode {
}
}
}
declare namespace java.time {
interface Instant {
}
interface ZoneId {
}
}
declare namespace java.lang {
class Enum {
toString(): string;
equals(obj: any): boolean;
}
}
declare namespace net.minecraft.entity.player {
interface PlayerCapabilities {
}
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment