Skip to content

Commit 6d5d8a2

Browse files
committed
undo that adapt thing lol
1 parent a9ac72e commit 6d5d8a2

4 files changed

Lines changed: 10 additions & 58 deletions

File tree

src/main/java/dev/diamond/luafy/lua/ScriptFunction.java

Lines changed: 2 additions & 48 deletions
Original file line numberDiff line numberDiff line change
@@ -1,66 +1,20 @@
11
package dev.diamond.luafy.lua;
22

3-
import dev.diamond.luafy.registry.LuafyRegistries;
43
import dev.diamond.luafy.script.LuaScript;
54
import dev.diamond.luafy.script.object.AbstractScriptObject;
65
import net.minecraft.commands.CommandSourceStack;
76
import org.luaj.vm2.*;
87

9-
import java.lang.reflect.Array;
108
import java.util.function.Function;
119

1210
@FunctionalInterface
1311
public interface ScriptFunction extends Function<Varargs, LuaValue> {
1412

15-
Object call(ArgumentSupplier args);
13+
LuaValue call(ArgumentSupplier args);
1614

1715
@Override
1816
default LuaValue apply(Varargs args) {
19-
Object obj = call(new ArgumentSupplier(args));
20-
return ScriptFunction.adapt(obj);
21-
}
22-
23-
static LuaValue adapt(Object obj) {
24-
25-
if (obj instanceof LuaValue val) {
26-
return val;
27-
28-
} else if (obj == null) {
29-
return LuaValue.NIL;
30-
} else if (obj instanceof Integer i) { // primitives + string
31-
return LuaValue.valueOf(i);
32-
} else if (obj instanceof Byte b) {
33-
return LuaValue.valueOf(b);
34-
} else if (obj instanceof Long l) {
35-
return LuaValue.valueOf(l);
36-
} else if (obj instanceof Float f) {
37-
return LuaValue.valueOf(f);
38-
} else if (obj instanceof Double d) {
39-
return LuaValue.valueOf(d);
40-
} else if (obj instanceof Boolean bl) {
41-
return LuaValue.valueOf(bl);
42-
} else if (obj instanceof String s) {
43-
return LuaValue.valueOf(s);
44-
} else if (obj instanceof Short sh) {
45-
return LuaValue.valueOf(sh);
46-
} else if (obj.getClass().isArray()) { // should probably be avoided anyway
47-
Object[] arr = (Object[]) obj;
48-
LuaValue[] luaArr = new LuaValue[arr.length];
49-
for (int i = 0; i < arr.length; i++) luaArr[i] = adapt(arr[i]);
50-
return LuaTable.tableOf(luaArr);
51-
} else { // script objects
52-
53-
for (var asco : LuafyRegistries.SCRIPT_OBJECTS) {
54-
if (obj.getClass() == asco.getType()) {
55-
return LuaTableBuilder.provide(asco, obj, script);
56-
}
57-
}
58-
59-
}
60-
61-
62-
throw new RuntimeException("Couldn't adapt some JVM value to a value returnable to Lua " +
63-
"(It might not be registered)");
17+
return call(new ArgumentSupplier(args));
6418
}
6519

6620
class ArgumentSupplier {

src/main/java/dev/diamond/luafy/script/object/ModScriptObject.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import net.fabricmc.loader.api.ModContainer;
88
import net.minecraft.commands.CommandSourceStack;
99
import org.luaj.vm2.LuaTable;
10+
import org.luaj.vm2.LuaValue;
1011

1112
public class ModScriptObject extends AbstractScriptObject<ModContainer> {
1213

@@ -22,8 +23,8 @@ public ModScriptObject() {
2223

2324
@Override
2425
public void toTable(ModContainer obj, LuaTableBuilder builder, LuaScript script) {
25-
builder.add(FUNC_MODID, args -> obj.getMetadata().getId());
26-
builder.add(FUNC_VERSION, args -> obj.getMetadata().getVersion().getFriendlyString());
26+
builder.add(FUNC_MODID, args -> LuaValue.valueOf(obj.getMetadata().getId()));
27+
builder.add(FUNC_VERSION, args -> LuaValue.valueOf(obj.getMetadata().getVersion().getFriendlyString()));
2728

2829
makeReadonly(builder);
2930
}

src/main/java/dev/diamond/luafy/script/object/game/ItemStackScriptObject.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,14 @@ public void toTable(ItemStack obj, LuaTableBuilder builder, LuaScript script) {
6060

6161
builder.add(FUNC_COUNT, args -> LuaValue.valueOf(obj.getCount()));
6262
builder.add(FUNC_COUNT_SET, args -> {
63-
obj.setCount(args.arg1().toint());
63+
obj.setCount(args.nextInt());
6464
return LuaValue.NIL;
6565
});
6666
builder.add(FUNC_ITEM_TYPE, args -> LuaTableBuilder.provide(b -> ScriptObjects.ITEM.toTable(obj.getItem(), b, script)));
6767
builder.add(FUNC_ITEM_ID, args -> LuaValue.valueOf(BuiltInRegistries.ITEM.getId(obj.getItem())));
6868

6969
builder.add(FUNC_COMPONENT, args -> {
70-
String key = MetamethodImpl.tostring(args.arg1());
70+
String key = args.nextString();
7171

7272
// get the component
7373
DataComponentType<Object> type = (DataComponentType<Object>) BuiltInRegistries.DATA_COMPONENT_TYPE.get(Identifier.parse(key)).orElseThrow().value();
@@ -85,8 +85,8 @@ public void toTable(ItemStack obj, LuaTableBuilder builder, LuaScript script) {
8585
});
8686

8787
builder.add(FUNC_COMPONENT_SET, args -> {
88-
String key = MetamethodImpl.tostring(args.arg1());
89-
LuaTable data = args.arg(2).checktable();
88+
String key = args.nextString();
89+
LuaTable data = args.nextTable();
9090

9191
// get the component
9292
DataComponentType<Object> type = (DataComponentType<Object>) BuiltInRegistries.DATA_COMPONENT_TYPE.get(Identifier.parse(key)).orElseThrow().value();

src/main/java/dev/diamond/luafy/script/object/game/entity/LivingEntityScriptObject.java

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,9 @@
22

33
import dev.diamond.luafy.autodoc.Argtypes;
44
import dev.diamond.luafy.lua.LuaTableBuilder;
5-
import dev.diamond.luafy.lua.MetamethodImpl;
65
import dev.diamond.luafy.registry.ScriptObjects;
76
import dev.diamond.luafy.script.LuaScript;
87
import dev.diamond.luafy.script.object.AbstractScriptObject;
9-
import net.minecraft.commands.arguments.SlotArgument;
10-
import net.minecraft.world.entity.EquipmentSlot;
118
import net.minecraft.world.entity.SlotAccess;
129
import net.minecraft.world.inventory.SlotRanges;
1310
import net.minecraft.world.item.ItemStack;
@@ -68,7 +65,7 @@ public LivingEntityScriptObject() {
6865
public void toTable(LivingEntity obj, LuaTableBuilder builder, LuaScript script) {
6966
applyInheritanceToTable(obj, builder, script);
7067

71-
builder.add(FUNC_GET_HEALTH, args -> obj.getHealth());
68+
builder.add(FUNC_GET_HEALTH, args -> LuaValue.valueOf(obj.getHealth()));
7269
builder.add(FUNC_HURT, args -> {
7370
Identifier damageTypeId = Identifier.parse(args.nextString());
7471
float amount = args.nextFloat();

0 commit comments

Comments
 (0)