feat: добавлены новые кеэбеки
- добавлено событие RedstoneSignal, ThrowableHit
This commit is contained in:
@@ -2,12 +2,14 @@ package com.reider745.block;
|
||||
|
||||
//import cn.nukkit.blockstate.BlockStorage;
|
||||
import cn.nukkit.block.*;
|
||||
import cn.nukkit.event.redstone.RedstoneUpdateEvent;
|
||||
import cn.nukkit.item.Item;
|
||||
import cn.nukkit.item.ItemTool;
|
||||
import cn.nukkit.level.Level;
|
||||
import com.reider745.api.CustomManager;
|
||||
import com.reider745.api.ReflectHelper;
|
||||
import com.zhekasmirnov.innercore.api.NativeBlock;
|
||||
import com.zhekasmirnov.innercore.api.NativeCallback;
|
||||
import com.zhekasmirnov.innercore.api.mod.adaptedscript.AdaptedScriptAPI;
|
||||
|
||||
import java.util.ArrayList;
|
||||
@@ -171,7 +173,14 @@ public class CustomBlock extends BlockSolidMeta implements RandomTick {
|
||||
@Override
|
||||
public int onUpdate(int type) {
|
||||
if (type == Level.BLOCK_UPDATE_RANDOM) {
|
||||
NativeBlock.onRandomTickCallback((int) this.x, (int) this.y, (int) this.z, id, this.getDamage(), AdaptedScriptAPI.BlockSource.getFromCallbackPointer(this.level));
|
||||
NativeCallback.onRandomBlockTick((int) this.x, (int) this.y, (int) this.z, id, this.getDamage(), this.level);
|
||||
return 1;
|
||||
}else if(type == Level.BLOCK_UPDATE_REDSTONE){
|
||||
RedstoneUpdateEvent ev = new RedstoneUpdateEvent(this);
|
||||
getLevel().getServer().getPluginManager().callEvent(ev);
|
||||
if (ev.isCancelled())
|
||||
return 0;
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -3,6 +3,8 @@ package com.reider745.event;
|
||||
import cn.nukkit.Player;
|
||||
import cn.nukkit.block.Block;
|
||||
import cn.nukkit.entity.Entity;
|
||||
import cn.nukkit.entity.projectile.EntityProjectile;
|
||||
import cn.nukkit.entity.projectile.EntitySnowball;
|
||||
import cn.nukkit.event.Event;
|
||||
import cn.nukkit.event.EventHandler;
|
||||
import cn.nukkit.event.EventPriority;
|
||||
@@ -13,12 +15,18 @@ import cn.nukkit.event.entity.*;
|
||||
import cn.nukkit.event.level.ChunkPopulateEvent;
|
||||
import cn.nukkit.event.player.PlayerEatFoodEvent;
|
||||
import cn.nukkit.event.player.PlayerInteractEvent;
|
||||
import cn.nukkit.event.redstone.RedstoneUpdateEvent;
|
||||
import cn.nukkit.item.Item;
|
||||
import cn.nukkit.item.food.Food;
|
||||
import cn.nukkit.level.Level;
|
||||
import cn.nukkit.level.format.FullChunk;
|
||||
import cn.nukkit.math.Vector3;
|
||||
import cn.nukkit.nbt.NBTIO;
|
||||
import com.reider745.api.CallbackHelper;
|
||||
import com.reider745.entity.EntityMethod;
|
||||
import com.reider745.hooks.ItemUtils;
|
||||
import com.zhekasmirnov.innercore.api.NativeCallback;
|
||||
import com.zhekasmirnov.innercore.api.NativeItemInstanceExtra;
|
||||
|
||||
public class EventListener implements Listener {
|
||||
public static void preventedCallback(Event event, CallbackHelper.ICallbackApply apply) {
|
||||
@@ -65,21 +73,28 @@ public class EventListener implements Listener {
|
||||
event.getPlayer().getId()));
|
||||
}
|
||||
|
||||
/*
|
||||
* @EventHandler
|
||||
* public void restoneUpdate(RedstoneUpdateEvent event){
|
||||
* Block block = event.getBlock();
|
||||
* NativeCallback.onRedstoneSignalChange((int) block.x, (int) block.y, (int)
|
||||
* block.z, 0, false, event.getBlock().getLevel());
|
||||
* }
|
||||
*/
|
||||
@EventHandler
|
||||
public void redstoneUpdate(RedstoneUpdateEvent event){
|
||||
Block block = event.getBlock();
|
||||
Level level = event.getBlock().getLevel();
|
||||
|
||||
NativeCallback.onRedstoneSignalChange((int) block.x, (int) block.y, (int)
|
||||
block.z, level.getStrongPower(block), true, level);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void projectileHit(ProjectileHitEvent event) {
|
||||
/*
|
||||
* Vector3 pos = event.
|
||||
* NativeCallback.onThrowableHit(event.getEntity().getId(), );
|
||||
*/
|
||||
Entity entity = event.getEntity();
|
||||
if(entity instanceof EntitySnowball){
|
||||
Vector3 pos = entity.getPosition();
|
||||
Block block = entity.getLevelBlock();
|
||||
Item item = EntityMethod.getItemFromProjectile(entity.getId());
|
||||
NativeItemInstanceExtra extra = ItemUtils.getItemInstanceExtra(item);
|
||||
|
||||
NativeCallback.onThrowableHit(event.getEntity().getId(), (float) pos.x, (float) pos.y, (float) pos.z,
|
||||
entity.getId(), (int) block.x, (int) block.y, (int) block.z, 0,
|
||||
item.getId(), item.count, item.getDamage(), extra != null ? extra.getPtr() : 0);
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package com.zhekasmirnov.innercore.api;
|
||||
|
||||
import android.util.Pair;
|
||||
import cn.nukkit.block.Block;
|
||||
import cn.nukkit.level.Level;
|
||||
import com.reider745.InnerCoreServer;
|
||||
import com.zhekasmirnov.apparatus.adapter.innercore.EngineConfig;
|
||||
@@ -806,11 +807,15 @@ public class NativeCallback {
|
||||
}
|
||||
|
||||
public static void onRedstoneSignalChange(int x, int y, int z, int signal, boolean isLoadingChange, Level region) {
|
||||
Block block = region.getBlock(x, y, z);
|
||||
Callback.invokeAPICallback("RedstoneSignal", new Coords(x, y, z), new ScriptableParams(
|
||||
new Pair<String, Object>("power", signal),
|
||||
new Pair<String, Object>("signal", signal),
|
||||
new Pair<String, Object>("onLoad", isLoadingChange)
|
||||
), new FullBlock(NativeAPI.getTileAndData(x, y, z)), NativeBlockSource.getFromServerCallbackPointer(region));
|
||||
), new FullBlock(
|
||||
block.getId(),
|
||||
block.getDamage()
|
||||
), NativeBlockSource.getFromServerCallbackPointer(region));
|
||||
}
|
||||
|
||||
public static void onRandomBlockTick(int x, int y, int z, int id, int data, Level region) {
|
||||
|
||||
Reference in New Issue
Block a user