Update API and Docs
Some checks failed
ScriptCraft/pipeline/head There was a failure building this commit
Some checks failed
ScriptCraft/pipeline/head There was a failure building this commit
This commit is contained in:
parent
8c356af7a2
commit
0f63f63d86
@ -1,8 +1,8 @@
|
||||
# ScriptCraft [![Build Status](https://jenkins.thebrokenrail.com/job/ScriptCraft/job/master/badge/icon?style=flat-square)](https://jenkins.thebrokenrail.com/job/ScriptCraft/job/master/)
|
||||
JS API for Minecraft
|
||||
|
||||
## API
|
||||
[View API](docs/README.md)
|
||||
## Documentation
|
||||
[View Documentation](docs/README.md)
|
||||
|
||||
## Examples
|
||||
[View Examples](examples)
|
@ -1,4 +1,4 @@
|
||||
# API
|
||||
# Documentation
|
||||
[View Module Resolution](MODULE_RESOLUTION.md)
|
||||
|
||||
[View Entry-Points](ENTRY_POINTS.md)
|
||||
|
25
docs/tutorials/EVENT.md
Normal file
25
docs/tutorials/EVENT.md
Normal file
@ -0,0 +1,25 @@
|
||||
# Use An Event
|
||||
|
||||
## Example
|
||||
```javascript
|
||||
import { Events } from 'minecraft';
|
||||
|
||||
Events.WORLD_TICK.addListener(e => {
|
||||
// Use e.getWorld()
|
||||
});
|
||||
```
|
||||
|
||||
## All Events
|
||||
| Name | Description | Input Type | Output Type |
|
||||
| --- | --- | --- | --- |
|
||||
| ```WORLD_TICK``` | Triggered on every world tick. | ```WorldEvent``` | None |
|
||||
| ```ATTACK_BLOCK``` | Triggered when breaking a block. | ```BlockEvent``` | ```ActionResult``` |
|
||||
| ```USE_BLOCK``` | Triggered when using a block. | ```BlockEvent``` | ```ActionResult``` |
|
||||
| ```USE_ITEM``` | Triggered when using an item. | ```ItemEvent``` | ```ActionResult``` |
|
||||
|
||||
## Manually Trigger An Event
|
||||
```javascript
|
||||
import { Events } from 'minecraft';
|
||||
|
||||
const result = Events.<Event Name>.trigger(<Input Value>);
|
||||
```
|
@ -3,4 +3,6 @@
|
||||
|
||||
[Create A Block Entity](BLOCK_ENTITY.md)
|
||||
|
||||
[Create A Item](ITEM.md)
|
||||
[Create A Item](ITEM.md)
|
||||
|
||||
[Use An Event](EVENT.md)
|
@ -205,7 +205,7 @@ static JSValue java_object_to_js_object(JNIEnv *env, JSContext *ctx, jobject obj
|
||||
JSValue out;
|
||||
|
||||
jclass boolean_clazz = (*env)->FindClass(env, "java/lang/Boolean");
|
||||
jclass double_clazz = (*env)->FindClass(env, "java/lang/Double");
|
||||
jclass number_clazz = (*env)->FindClass(env, "java/lang/Number");
|
||||
jclass string_clazz = (*env)->FindClass(env, "java/lang/String");
|
||||
jclass array_clazz = (*env)->FindClass(env, "[Ljava/lang/Object;");
|
||||
if (!obj) {
|
||||
@ -218,8 +218,8 @@ static JSValue java_object_to_js_object(JNIEnv *env, JSContext *ctx, jobject obj
|
||||
jmethodID boolean_methodID = (*env)->GetMethodID(env, boolean_clazz, "booleanValue", "()Z");
|
||||
jboolean val = (*env)->CallBooleanMethod(env, obj, boolean_methodID);
|
||||
out = JS_NewBool(ctx, val);
|
||||
} else if ((*env)->IsInstanceOf(env, obj, double_clazz)) {
|
||||
jmethodID double_methodID = (*env)->GetMethodID(env, double_clazz, "doubleValue", "()D");
|
||||
} else if ((*env)->IsInstanceOf(env, obj, number_clazz)) {
|
||||
jmethodID double_methodID = (*env)->GetMethodID(env, number_clazz, "doubleValue", "()D");
|
||||
jdouble val = (*env)->CallDoubleMethod(env, obj, double_methodID);
|
||||
out = JS_NewFloat64(ctx, val);
|
||||
} else if ((*env)->IsInstanceOf(env, obj, array_clazz)) {
|
||||
|
@ -23,6 +23,6 @@ public class CustomBlock extends Block {
|
||||
|
||||
@Override
|
||||
public ActionResult onUse(BlockState state, World world, BlockPos pos, PlayerEntity player, Hand hand, BlockHitResult hit) {
|
||||
return ValueUtil.getEnumValue(ActionResult.class, (String) ScriptCraftCore.useBridge("CustomBlock.onUse", id.toString(), world, state, (double) pos.getX(), (double) pos.getY(), (double) pos.getZ(), hit.getSide().name(), player, hand.name()), ActionResult.PASS);
|
||||
return ValueUtil.getEnumValue(ActionResult.class, (String) ScriptCraftCore.useBridge("CustomBlock.onUse", id.toString(), world, state, pos.getX(), pos.getY(), pos.getZ(), hit.getSide().name(), player, hand.name()), ActionResult.PASS);
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
package com.thebrokenrail.scriptcraft.api.block;
|
||||
|
||||
import com.thebrokenrail.scriptcraft.core.ScriptCraftCore;
|
||||
import com.thebrokenrail.scriptcraft.core.quickjs.QuickJSManager;
|
||||
import net.fabricmc.fabric.api.block.entity.BlockEntityClientSerializable;
|
||||
import net.minecraft.block.entity.BlockEntity;
|
||||
import net.minecraft.block.entity.BlockEntityType;
|
||||
@ -54,7 +53,7 @@ public class CustomBlockEntity extends BlockEntity implements BlockEntityClientS
|
||||
@Override
|
||||
public void setLocation(World world, BlockPos pos) {
|
||||
super.setLocation(world, pos);
|
||||
ScriptCraftCore.useBridge("CustomBlockEntity.setLocation", objID, world, (double) pos.getX(), (double) pos.getY(), (double) pos.getZ());
|
||||
ScriptCraftCore.useBridge("CustomBlockEntity.setLocation", objID, world, pos.getX(), pos.getY(), pos.getZ());
|
||||
}
|
||||
|
||||
@SuppressWarnings("deprecation")
|
||||
|
@ -13,8 +13,8 @@ import net.minecraft.util.TypedActionResult;
|
||||
class EventBridges {
|
||||
static void register() {
|
||||
WorldTickCallback.EVENT.register(world -> ScriptCraftCore.useBridge("Event.worldTick", world));
|
||||
AttackBlockCallback.EVENT.register((playerEntity, world, hand, blockPos, direction) -> ValueUtil.getEnumValue(ActionResult.class, (String) ScriptCraftCore.useBridge("Event.attackBlock", playerEntity, world, hand.name(), (double) blockPos.getX(), (double) blockPos.getY(), (double) blockPos.getZ(), direction.name()), ActionResult.PASS));
|
||||
UseBlockCallback.EVENT.register((playerEntity, world, hand, hitResult) -> ValueUtil.getEnumValue(ActionResult.class, (String) ScriptCraftCore.useBridge("Event.useBlock", playerEntity, world, hand.name(), (double) hitResult.getBlockPos().getX(), (double) hitResult.getBlockPos().getY(), (double) hitResult.getBlockPos().getZ(), hitResult.getSide().name()), ActionResult.PASS));
|
||||
AttackBlockCallback.EVENT.register((playerEntity, world, hand, blockPos, direction) -> ValueUtil.getEnumValue(ActionResult.class, (String) ScriptCraftCore.useBridge("Event.attackBlock", playerEntity, world, hand.name(), blockPos.getX(), blockPos.getY(), blockPos.getZ(), direction.name()), ActionResult.PASS));
|
||||
UseBlockCallback.EVENT.register((playerEntity, world, hand, hitResult) -> ValueUtil.getEnumValue(ActionResult.class, (String) ScriptCraftCore.useBridge("Event.useBlock", playerEntity, world, hand.name(), hitResult.getBlockPos().getX(), hitResult.getBlockPos().getY(), hitResult.getBlockPos().getZ(), hitResult.getSide().name()), ActionResult.PASS));
|
||||
UseItemCallback.EVENT.register((playerEntity, world, hand) -> {
|
||||
ActionResult result = ValueUtil.getEnumValue(ActionResult.class, (String) ScriptCraftCore.useBridge("Event.useItem", playerEntity, world, hand.name()), ActionResult.PASS);
|
||||
ItemStack stack = playerEntity.getStackInHand(hand);
|
||||
|
@ -17,13 +17,13 @@ class ItemStackBridges {
|
||||
((ItemStack) args[0]).setCount((int) ValueUtil.toDouble(args[1], 0));
|
||||
return null;
|
||||
});
|
||||
ScriptCraftCore.addBridge("ItemStack.getCount", args -> (double) ((ItemStack) args[0]).getCount());
|
||||
ScriptCraftCore.addBridge("ItemStack.getCount", args -> ((ItemStack) args[0]).getCount());
|
||||
|
||||
ScriptCraftCore.addBridge("ItemStack.setDamage", args -> {
|
||||
((ItemStack) args[0]).setDamage((int) ValueUtil.toDouble(args[1], 0));
|
||||
return null;
|
||||
});
|
||||
ScriptCraftCore.addBridge("ItemStack.getDamage", args -> (double) ((ItemStack) args[0]).getDamage());
|
||||
ScriptCraftCore.addBridge("ItemStack.getDamage", args -> ((ItemStack) args[0]).getDamage());
|
||||
ScriptCraftCore.addBridge("ItemStack.isDamageable", args -> ((ItemStack) args[0]).isDamageable());
|
||||
|
||||
ScriptCraftCore.addBridge("ItemStack.getTag", args -> ((ItemStack) args[0]).getTag());
|
||||
|
@ -30,7 +30,7 @@ public class CustomItem extends Item {
|
||||
|
||||
@Override
|
||||
public ActionResult useOnBlock(ItemUsageContext context) {
|
||||
return ValueUtil.getEnumValue(ActionResult.class, (String) ScriptCraftCore.useBridge("CustomItem.onUseOnBlock", id.toString(), context.getWorld(), (double) context.getBlockPos().getX(), (double) context.getBlockPos().getY(), (double) context.getBlockPos().getZ(), context.getSide().name(), context.getPlayer(), context.getHand().name()), ActionResult.PASS);
|
||||
return ValueUtil.getEnumValue(ActionResult.class, (String) ScriptCraftCore.useBridge("CustomItem.onUseOnBlock", id.toString(), context.getWorld(), context.getBlockPos().getX(), context.getBlockPos().getY(), context.getBlockPos().getZ(), context.getSide().name(), context.getPlayer(), context.getHand().name()), ActionResult.PASS);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -33,7 +33,7 @@ export class JavaObjectWrapper {
|
||||
protected assertValidJavaObject(type: string): void {
|
||||
const valid = useBridge(type + '.isValid', this.getJavaObject()) as boolean;
|
||||
if (!valid) {
|
||||
throw new Error('Provided Java Object Is Not A Valid ' + type);
|
||||
throw new Error('Provided Java Object Does Not Match Type: ' + type);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -16,4 +16,4 @@ export { LivingEntity, PlayerEntity } from './entity';
|
||||
export { CompoundTag, ListTag, NumberType } from './tag';
|
||||
export { Registry } from './registry';
|
||||
export { Inventory } from './inventory';
|
||||
export { Events } from './event';
|
||||
export { Events, Event, BlockEvent, ItemEvent, WorldEvent } from './event';
|
||||
|
Reference in New Issue
Block a user