feat: support NativeAPI.setBlockChangeCallbackEnabled

This commit is contained in:
Reider745
2026-05-01 19:34:03 +03:00
parent d06d2c2ec0
commit ac1acc3ee0
3 changed files with 19 additions and 5 deletions
@@ -50,6 +50,8 @@ import com.zhekasmirnov.apparatus.mcpe.NativeWorkbench;
import com.zhekasmirnov.apparatus.multiplayer.Network; import com.zhekasmirnov.apparatus.multiplayer.Network;
import com.zhekasmirnov.innercore.api.NativeScales; import com.zhekasmirnov.innercore.api.NativeScales;
import com.zhekasmirnov.innercore.api.runtime.Callback; import com.zhekasmirnov.innercore.api.runtime.Callback;
import it.unimi.dsi.fastutil.ints.IntOpenHashSet;
import it.unimi.dsi.fastutil.ints.IntSet;
import oshi.hardware.NetworkIF; import oshi.hardware.NetworkIF;
import java.util.*; import java.util.*;
@@ -76,6 +78,16 @@ public class EventListener implements Listener {
public static final int FORM_REJOIN_EXCEPTION = 2560; public static final int FORM_REJOIN_EXCEPTION = 2560;
public static boolean isFirstTickEnd = false; public static boolean isFirstTickEnd = false;
private static final IntSet blockChangeCallback = new IntOpenHashSet();
public static void setBlockChangeCallbackEnabled(int id, boolean enabled) {
if(enabled) {
blockChangeCallback.add(id);
} else {
blockChangeCallback.remove(id);
}
}
public static void consumeEvent(Event event, CallbackHelper.ICallbackApply apply, boolean isPrevent) { public static void consumeEvent(Event event, CallbackHelper.ICallbackApply apply, boolean isPrevent) {
CallbackHelper.apply(event, apply, isPrevent); CallbackHelper.apply(event, apply, isPrevent);
} }
@@ -446,9 +458,11 @@ public class EventListener implements Listener {
} }
public static void onBlockChange(Level level, Block block, Block newBlock){ public static void onBlockChange(Level level, Block block, Block newBlock){
NativeCallback.onBlockChanged((int) newBlock.x, (int) newBlock.y, (int) newBlock.z, block.getId(), if(blockChangeCallback.contains(block.getId()) || blockChangeCallback.contains(newBlock.getId())) {
block.getDamage(), newBlock.getId(), newBlock.getDamage(), FakeDimensions.getFakeIdForLevel(level), NativeCallback.onBlockChanged((int) newBlock.x, (int) newBlock.y, (int) newBlock.z, block.getId(),
newBlock.getFullId(), level); block.getDamage(), newBlock.getId(), newBlock.getDamage(), FakeDimensions.getFakeIdForLevel(level),
newBlock.getFullId(), level);
}
} }
@EventHandler(priority = EventPriority.HIGHEST) @EventHandler(priority = EventPriority.HIGHEST)
@@ -19,7 +19,7 @@ public class Logger {
public static void initConfig() { public static void initConfig() {
if(InnerCoreServer.isDebugLogger()) if(InnerCoreServer.isDebugLogger())
debugMessage = (message) -> Server.getInstance().getLogger().debug(message); debugMessage = (message) -> Server.getInstance().getLogger().info(message);
if(InnerCoreServer.isInfoLogger()) if(InnerCoreServer.isInfoLogger())
infoMessage = (message) -> Server.getInstance().getLogger().info(message); infoMessage = (message) -> Server.getInstance().getLogger().info(message);
} }
@@ -87,7 +87,7 @@ public class NativeAPI {
} }
public static void setBlockChangeCallbackEnabled(int id, boolean enabled) { public static void setBlockChangeCallbackEnabled(int id, boolean enabled) {
InnerCoreServer.useNotCurrentSupport("NativeAPI.setBlockChangeCallbackEnabled(id, enabled)"); EventListener.setBlockChangeCallbackEnabled(id, enabled);
} }
private static String cleanupPathOverride(String path, boolean terminateWithSlash) { private static String cleanupPathOverride(String path, boolean terminateWithSlash) {