diff --git a/iclibs/Nukkit-MOT-SNAPSHOT.jar b/iclibs/Nukkit-MOT-SNAPSHOT.jar index 2d2720bc..c65d639b 100644 Binary files a/iclibs/Nukkit-MOT-SNAPSHOT.jar and b/iclibs/Nukkit-MOT-SNAPSHOT.jar differ diff --git a/src/main/java/com/reider745/InnerCoreServer.java b/src/main/java/com/reider745/InnerCoreServer.java index e304974c..b525f8d8 100644 --- a/src/main/java/com/reider745/InnerCoreServer.java +++ b/src/main/java/com/reider745/InnerCoreServer.java @@ -185,29 +185,20 @@ public class InnerCoreServer { public void postLoad(){ Logger.debug("Post loaded innercore..."); + server.getPluginManager().registerEvents(new EventListener(), plugin); - //Item.clearCreativeItems(); CustomBlock.init(); CustomItem.init(); NativeWorkbench.init(); NativeFurnaceRegistry.init(); CustomItem.initCreativeItems(); - /*Class itemClass = Item.class; - try{ - Method method = itemClass.getMethod("initCreativeItems"); - method.setAccessible(true); - method.invoke(null); - }catch (Exception e){ - e.printStackTrace(); - }*/ - //Item.initCreativeItems(); NativeCallback.onLevelCreated(); } public void start(){ - server.getPluginManager().registerEvents(new EventListener(), plugin); + } public void tick(){ diff --git a/src/main/java/com/reider745/api/CallbackHelper.java b/src/main/java/com/reider745/api/CallbackHelper.java index a6e98624..c209c96c 100644 --- a/src/main/java/com/reider745/api/CallbackHelper.java +++ b/src/main/java/com/reider745/api/CallbackHelper.java @@ -92,6 +92,7 @@ public class CallbackHelper { @Override public void run() { + if(event.isCancelled()) return; apply.apply(); event.setCancelled(isPrevent()); } diff --git a/src/main/java/com/reider745/block/BlockStateRegisters.java b/src/main/java/com/reider745/block/BlockStateRegisters.java index 021151a5..288d0707 100644 --- a/src/main/java/com/reider745/block/BlockStateRegisters.java +++ b/src/main/java/com/reider745/block/BlockStateRegisters.java @@ -70,7 +70,6 @@ public class BlockStateRegisters { Map state = new HashMap<>(); for(int i = 0;i < statesAndValues.length;i+=2) state.put(nameByStateId.get(statesAndValues[i]), statesAndValues[i+1]); - System.out.println(runtimeIdsForStatesAndId.get(id).toString()); return runtimeIdsForStatesAndId.get(id).get(state); }// -1 is returned in case it is not found } diff --git a/src/main/java/com/reider745/event/EventListener.java b/src/main/java/com/reider745/event/EventListener.java index b7a1d268..7f876943 100644 --- a/src/main/java/com/reider745/event/EventListener.java +++ b/src/main/java/com/reider745/event/EventListener.java @@ -42,6 +42,7 @@ public class EventListener implements Listener { } + @EventHandler public void breakBlock(BlockBreakEvent event){ Block block = event.getBlock(); @@ -60,11 +61,11 @@ public class EventListener implements Listener { preventedCallback(event, () -> NativeCallback.onBlockBuild((int) block.x, (int) block.y, (int) block.z, 0, event.getPlayer().getId())); } - @EventHandler + /*@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){ diff --git a/src/main/java/com/reider745/hooks/ItemUtils.java b/src/main/java/com/reider745/hooks/ItemUtils.java index 472f2b95..e70a3fde 100644 --- a/src/main/java/com/reider745/hooks/ItemUtils.java +++ b/src/main/java/com/reider745/hooks/ItemUtils.java @@ -20,6 +20,38 @@ public class ItemUtils implements HookClass { @Inject(signature = "(ILjava/lang/Integer;I[B)Lcn/nukkit/item/Item;") public static Item get(int id, Integer meta, int count, byte[] tags){ try { + Class c = null; + if (id < 0) { + int blockId = 255 - id; + c = Block.list[blockId]; + } else { + c = Item.list[id]; + } + + Item item; + if (c == null) { + item = new Item(id, meta, count); + } else if ((id < 256 && id != 166) || id > 8000) { + if (meta >= 0) { + item = new ItemBlock(Block.get(id, meta), meta, count); + } else { + item = new ItemBlock(Block.get(id), meta, count); + } + } else if(id > 2000){ + item = ((Item) c.getConstructor(int.class, Integer.class, int.class).newInstance(id, meta, count)); + } else { + item = ((Item) c.getConstructor(Integer.class, int.class).newInstance(meta, count)); + } + + if (tags.length != 0) { + item.setCompoundTag(tags); + } + + return item; + } catch (Exception e) { + return new Item(id, meta, count).setCompoundTag(tags); + } + /*try { Class c = Item.list[id]; Item item; @@ -47,7 +79,7 @@ public class ItemUtils implements HookClass { Item item = new Item(id, meta, count).setCompoundTag(tags); //items_pointers.addPointer(item); return item; - } + }*/ } @Inject diff --git a/src/main/java/com/reider745/hooks/RuntimeItemsHooks.java b/src/main/java/com/reider745/hooks/RuntimeItemsHooks.java index f7b78512..d5a65f1e 100644 --- a/src/main/java/com/reider745/hooks/RuntimeItemsHooks.java +++ b/src/main/java/com/reider745/hooks/RuntimeItemsHooks.java @@ -110,14 +110,4 @@ public class RuntimeItemsHooks implements HookClass { CustomItem.customItems.forEach((name, id) -> legacyString2LegacyInt.put(name, id)); CustomBlock.customBlocks.forEach((name, id) -> legacyString2LegacyInt.put(name, id)); } - - @Inject(class_name = "cn.nukkit.utils.Utils") - public static boolean hasItemOrBlock(int id){ - if (id < 0) { - int blockId = 255 - id; - return blockId < Block.MAX_BLOCK_ID && Block.list[blockId] != null; - } else { - return id < Item.list.length && Item.list[id] != null; - } - } }