diff --git a/.nb-gradle-properties b/.nb-gradle-properties
index b18f6c4..eecdb26 100644
--- a/.nb-gradle-properties
+++ b/.nb-gradle-properties
@@ -9,7 +9,9 @@
runClient
-
+
+ -Xdebug
+
run
@@ -22,5 +24,14 @@
-Dfml.coreMods.load=minetweaker.mc172.transformer.MineTweakerTransformer
+
+ run.single
+ no
+
+ ${project}:runClient
+
+
+
+
diff --git a/MineTweaker3-API/src/main/java/minetweaker/IBracketHandler.java b/MineTweaker3-API/src/main/java/minetweaker/IBracketHandler.java
index 36ca12e..616449e 100644
--- a/MineTweaker3-API/src/main/java/minetweaker/IBracketHandler.java
+++ b/MineTweaker3-API/src/main/java/minetweaker/IBracketHandler.java
@@ -1,6 +1,7 @@
package minetweaker;
import java.util.List;
+import stanhebben.zenscript.compiler.IEnvironmentGlobal;
import stanhebben.zenscript.parser.Token;
import stanhebben.zenscript.symbols.IZenSymbol;
@@ -23,8 +24,9 @@ public interface IBracketHandler {
*
* If the series of tokens is unrecognized, this method should return null.
*
+ * @param environment global compilation environment
* @param tokens token stream to be detected
* @return the resolved symbol, or null
*/
- public IZenSymbol resolve(List tokens);
+ public IZenSymbol resolve(IEnvironmentGlobal environment, List tokens);
}
diff --git a/MineTweaker3-API/src/main/java/minetweaker/MineTweakerAPI.java b/MineTweaker3-API/src/main/java/minetweaker/MineTweakerAPI.java
index 08d3f42..30bd0bf 100644
--- a/MineTweaker3-API/src/main/java/minetweaker/MineTweakerAPI.java
+++ b/MineTweaker3-API/src/main/java/minetweaker/MineTweakerAPI.java
@@ -29,6 +29,7 @@ import stanhebben.zenscript.symbols.IZenSymbol;
import stanhebben.zenscript.symbols.SymbolJavaStaticField;
import stanhebben.zenscript.symbols.SymbolJavaStaticGetter;
import stanhebben.zenscript.symbols.SymbolJavaStaticMethod;
+import stanhebben.zenscript.type.natives.IJavaMethod;
import stanhebben.zenscript.type.natives.JavaMethod;
/**
@@ -333,7 +334,7 @@ public class MineTweakerAPI {
* @return corresponding symbol
*/
public static IZenSymbol getJavaStaticMethodSymbol(Class cls, String name, Class... arguments) {
- JavaMethod method = JavaMethod.get(GlobalRegistry.getTypeRegistry(), cls, name, arguments);
+ IJavaMethod method = JavaMethod.get(GlobalRegistry.getTypeRegistry(), cls, name, arguments);
return new SymbolJavaStaticMethod(method);
}
@@ -347,7 +348,7 @@ public class MineTweakerAPI {
* @return corresponding symbol
*/
public static IZenSymbol getJavaStaticGetterSymbol(Class cls, String name) {
- JavaMethod method = JavaMethod.get(GlobalRegistry.getTypeRegistry(), cls, name);
+ IJavaMethod method = JavaMethod.get(GlobalRegistry.getTypeRegistry(), cls, name);
return new SymbolJavaStaticGetter(method);
}
@@ -379,7 +380,7 @@ public class MineTweakerAPI {
* @param arguments argument types
* @return java method
*/
- public static JavaMethod getJavaMethod(Class cls, String name, Class... arguments) {
+ public static IJavaMethod getJavaMethod(Class cls, String name, Class... arguments) {
return JavaMethod.get(GlobalRegistry.getTypeRegistry(), cls, name, arguments);
}
}
diff --git a/MineTweaker3-API/src/main/java/minetweaker/api/player/IPlayer.java b/MineTweaker3-API/src/main/java/minetweaker/api/player/IPlayer.java
index ffa9c8a..ce7436e 100644
--- a/MineTweaker3-API/src/main/java/minetweaker/api/player/IPlayer.java
+++ b/MineTweaker3-API/src/main/java/minetweaker/api/player/IPlayer.java
@@ -6,7 +6,6 @@
package minetweaker.api.player;
-import java.util.List;
import minetweaker.api.chat.IChatMessage;
import minetweaker.api.data.IData;
import minetweaker.api.item.IItemStack;
@@ -53,5 +52,12 @@ public interface IPlayer {
@ZenGetter("currentItem")
public IItemStack getCurrentItem();
+ @ZenGetter("creative")
+ public boolean isCreative();
+
+ @ZenGetter("adventure")
+ public boolean isAdventure();
+
+ // not an exposed method. risks abuse
public void openBrowser(String url);
}
diff --git a/MineTweaker3-API/src/main/java/minetweaker/api/recipes/IRecipeManager.java b/MineTweaker3-API/src/main/java/minetweaker/api/recipes/IRecipeManager.java
index c111cb8..4172701 100644
--- a/MineTweaker3-API/src/main/java/minetweaker/api/recipes/IRecipeManager.java
+++ b/MineTweaker3-API/src/main/java/minetweaker/api/recipes/IRecipeManager.java
@@ -28,28 +28,26 @@ public interface IRecipeManager {
*
* @param output recipe output
* @param ingredients recipe ingredients
- * @param mirrored indicates if the mirrored recipe should be valid too (optional)
+ * @param function recipe function (optional)
*/
@ZenMethod
public void addShaped(
IItemStack output,
IIngredient[][] ingredients,
- @Optional boolean mirrored);
+ @Optional IRecipeFunction function);
/**
- * Adds a shaped recipe.
+ * Adds a mirrored shaped recipe.
*
* @param output recipe output
* @param ingredients recipe ingredients
* @param function recipe function (optional)
- * @param mirrored indicates if the mirrored recipe should be valid too (optional)
*/
@ZenMethod
- public void addShaped(
+ public void addShapedMirrored(
IItemStack output,
IIngredient[][] ingredients,
- IRecipeFunction function,
- @Optional boolean mirrored);
+ @Optional IRecipeFunction function);
/**
* Adds a shapeless recipe.
diff --git a/MineTweaker3-API/src/main/java/minetweaker/runtime/GlobalRegistry.java b/MineTweaker3-API/src/main/java/minetweaker/runtime/GlobalRegistry.java
index a115465..6774485 100644
--- a/MineTweaker3-API/src/main/java/minetweaker/runtime/GlobalRegistry.java
+++ b/MineTweaker3-API/src/main/java/minetweaker/runtime/GlobalRegistry.java
@@ -13,6 +13,7 @@ import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.Set;
import java.util.logging.Level;
import java.util.logging.Logger;
import minetweaker.IBracketHandler;
@@ -35,6 +36,7 @@ import stanhebben.zenscript.symbols.SymbolPackage;
import stanhebben.zenscript.symbols.SymbolType;
import stanhebben.zenscript.type.ZenType;
import stanhebben.zenscript.type.ZenTypeNative;
+import stanhebben.zenscript.type.natives.IJavaMethod;
import stanhebben.zenscript.type.natives.JavaMethod;
import stanhebben.zenscript.util.ZenPosition;
@@ -105,9 +107,9 @@ public class GlobalRegistry {
}
}
- public static IZenSymbol resolveBracket(List tokens) {
+ public static IZenSymbol resolveBracket(IEnvironmentGlobal environment, List tokens) {
for (IBracketHandler handler : bracketHandlers) {
- IZenSymbol symbol = handler.resolve(tokens);
+ IZenSymbol symbol = handler.resolve(environment, tokens);
if (symbol != null) {
return symbol;
}
@@ -117,7 +119,7 @@ public class GlobalRegistry {
}
public static IZenSymbol getStaticFunction(Class cls, String name, Class... arguments) {
- JavaMethod method = JavaMethod.get(types, cls, name, arguments);
+ IJavaMethod method = JavaMethod.get(types, cls, name, arguments);
if (method == null) return null;
return new SymbolJavaStaticMethod(method);
}
@@ -180,8 +182,8 @@ public class GlobalRegistry {
}
@Override
- public IZenSymbol getBracketed(List tokens) {
- return resolveBracket(tokens);
+ public IZenSymbol getBracketed(IEnvironmentGlobal environment, List tokens) {
+ return resolveBracket(environment, tokens);
}
@Override
@@ -266,5 +268,15 @@ public class GlobalRegistry {
public void warning(ZenPosition position, String message) {
MineTweakerAPI.logWarning(position.toString() + " > " + message);
}
+
+ @Override
+ public Set getClassNames() {
+ return classes.keySet();
+ }
+
+ @Override
+ public byte[] getClass(String name) {
+ return classes.get(name);
+ }
}
}
diff --git a/MineTweaker3-API/src/main/java/minetweaker/runtime/MTTweaker.java b/MineTweaker3-API/src/main/java/minetweaker/runtime/MTTweaker.java
index 965b5b0..7dd2c61 100644
--- a/MineTweaker3-API/src/main/java/minetweaker/runtime/MTTweaker.java
+++ b/MineTweaker3-API/src/main/java/minetweaker/runtime/MTTweaker.java
@@ -36,6 +36,8 @@ import stanhebben.zenscript.parser.ParseException;
* @author Stan Hebben
*/
public class MTTweaker implements ITweaker {
+ private static final boolean DEBUG = true;
+
private final List actions = new ArrayList();
private final Set wereStuck = new LinkedHashSet();
private final Map