ZotCoreLoader

- добавлено пару кэбеков
This commit is contained in:
Reider745
2023-11-19 15:47:20 +03:00
parent 61090ebfc9
commit 7a3de77867
3 changed files with 52 additions and 8 deletions
@@ -189,10 +189,6 @@ public class InnerCoreServer {
server.getPluginManager().registerEvents(new EventListener(), plugin);
}
public void onPlayerEat(int food, float radio, long player){
NativeCallback.onPlayerEat(food, radio, player);
}
public void tick(){
NativeCallback.onTick();
}
@@ -2,38 +2,79 @@ package com.reider745.event;
import cn.nukkit.Player;
import cn.nukkit.block.Block;
import cn.nukkit.event.Event;
import cn.nukkit.event.EventHandler;
import cn.nukkit.event.Listener;
import cn.nukkit.event.block.BlockBreakEvent;
import cn.nukkit.event.block.BlockPlaceEvent;
import cn.nukkit.event.entity.ProjectileHitEvent;
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.event.server.ServerStopEvent;
import cn.nukkit.item.food.Food;
import cn.nukkit.level.format.FullChunk;
import cn.nukkit.math.Vector3;
import com.zhekasmirnov.apparatus.mcpe.NativeBlockSource;
import com.zhekasmirnov.innercore.api.NativeAPI;
import com.zhekasmirnov.innercore.api.NativeCallback;
public class EventListener implements Listener {
public interface ICallbackApply {
void apply();
}
public static void preventedCallback(Event event, ICallbackApply apply){
NativeAPI.reloadPrevent();
apply.apply();
if(NativeAPI.isDefaultPrevented())
event.setCancelled(true);
}
@EventHandler
public void use(PlayerInteractEvent event) {
Vector3 pos = event.getTouchVector();
Block block = event.getBlock();
Player player = event.getPlayer();
PlayerInteractEvent.Action action = event.getAction();
if(event.getAction() == PlayerInteractEvent.Action.RIGHT_CLICK_BLOCK)
preventedCallback(event, () -> NativeCallback.onItemUsed((int) block.x, (int) block.y, (int) block.z, event.getFace().getIndex(), (float) pos.x, (float) pos.y, (float) pos.z, true, player.getHealth() > 0, player.getId()));
else if(action == PlayerInteractEvent.Action.LEFT_CLICK_BLOCK)
preventedCallback(event, () -> NativeCallback._onBlockDestroyStarted((int) block.x, (int) block.y, (int) block.z, event.getFace().getIndex(), player.getId()));
NativeCallback.onItemUsed((int) block.x, (int) block.y, (int) block.z, event.getFace().getIndex(), (float) pos.x, (float) pos.y, (float) pos.z, true, player.getHealth() > 0, player.getId());
}
@EventHandler
public void breakBlock(BlockBreakEvent event){
Block block = event.getBlock();
NativeCallback.onBlockDestroyed((int) block.x, (int) block.y, (int) block.z, event.getFace().getIndex(), event.getPlayer().getId());
preventedCallback(event, () -> NativeCallback.onBlockDestroyed((int) block.x, (int) block.y, (int) block.z, event.getFace().getIndex(), event.getPlayer().getId()));
}
@EventHandler
public void playerEat(PlayerEatFoodEvent event){
Food food = event.getFood();
preventedCallback(event, () -> NativeCallback.onPlayerEat(food.getRestoreFood(), food.getRestoreSaturation(), event.getPlayer().getId()));
}
@EventHandler
public void placeBlock(BlockPlaceEvent event){
Block block = event.getBlock();
NativeCallback.onBlockBuild((int) block.x, (int) block.y, (int) block.z, 0, event.getPlayer().getId());
preventedCallback(event, () -> NativeCallback.onBlockBuild((int) block.x, (int) block.y, (int) block.z, 0, 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 projectileHit(ProjectileHitEvent event){
/*Vector3 pos = event.
NativeCallback.onThrowableHit(event.getEntity().getId(), );*/
}
@EventHandler
@@ -81,8 +81,10 @@ public class NativeAPI {
}
private static boolean status_prevent = false;
public static boolean isDefaultPrevented(){
return false;
return status_prevent;
}
public static int getTile(int x, int y, int z){
@@ -128,6 +130,11 @@ public class NativeAPI {
}
public static void preventDefault() {
status_prevent = true;
}
public static void reloadPrevent() {
status_prevent = false;
}
public static void explode(float x, float y, float z, float power, boolean onFire) {