diff --git a/README.md b/README.md index 178bd2d1..5dc6586b 100644 --- a/README.md +++ b/README.md @@ -30,8 +30,8 @@ java -jar ZoteCore-SNAPSHOT.jar # Изменение информации пака, который клиент должен иметь для входа на сервер. # Устаревшие или не реализованные методы, однако, добавлены не будут. pack: Inner Core Test -pack-version: 2.3.0b115 test -pack-version-code: 152 +pack-version: 2.3.0b116 test +pack-version-code: 153 # Использование ванильного интерфейса верстака, вместо кастомного. # Внимание: в настоящее время не поддерживается и пользовательские рецепты не будут отображаться. @@ -59,6 +59,14 @@ auto-save-period: 60 # Обновлять вместе с сохранениями inner core сохранения мира auto-save-world: on + + +# Состояние сокет сервера +# Для сокета сервера требуется дополнительный порт, подключение через сокет серверы более стабильное +socket-server-enable: on + +# Порт сокет сервера +socket-port: 2304 ``` ## Лицензия diff --git a/src/main/java/com/reider745/InnerCoreServer.java b/src/main/java/com/reider745/InnerCoreServer.java index 91dbe6d4..b34936b0 100644 --- a/src/main/java/com/reider745/InnerCoreServer.java +++ b/src/main/java/com/reider745/InnerCoreServer.java @@ -18,6 +18,7 @@ import com.reider745.item.ItemMethod; import com.reider745.item.NukkitIdConvertor; import com.zhekasmirnov.apparatus.mcpe.NativeWorkbench; import com.zhekasmirnov.apparatus.multiplayer.Network; +import com.zhekasmirnov.apparatus.multiplayer.NetworkConfig; import com.zhekasmirnov.horizon.runtime.logger.Logger; import com.zhekasmirnov.innercore.api.InnerCoreConfig; import com.zhekasmirnov.innercore.api.NativeCallback; @@ -198,6 +199,7 @@ public class InnerCoreServer { public void preload(Server server) throws Exception { final long startupMillis = System.currentTimeMillis(); + Thread.currentThread().setPriority(Thread.MAX_PRIORITY); server.getLogger().info("Initiating target directory '" + server.getDataPath() + "'"); BiomesHooks.init(); @@ -220,6 +222,10 @@ public class InnerCoreServer { plugin.onLoad(); plugin.setEnabled(); + NetworkConfig config = Network.getSingleton().getConfig(); + config.setDefaultPort(singleton.getPropertyInt("socket-port", config.getDefaultPort())); + config.setSocketConnectionAllowed(singleton.getPropertyBoolean("socket-server-enable", config.isSocketConnectionAllowed())); + final File innerCoreDirectory = new File(dataPath, "innercore"); if (!innerCoreDirectory.exists()) { server.getLogger().info("Extracting internal package..."); @@ -268,7 +274,6 @@ public class InnerCoreServer { innerCore.load(); innerCore.build(); LoadingStage.setStage(LoadingStage.STAGE_MCPE_STARTING); - InnerCoreConfig.set("gameplay.use_legacy_workbench_override", isLegacyWorkbench()); LoadingStage.setStage(LoadingStage.STAGE_MCPE_INITIALIZING); LoadingUI.setTextAndProgressBar("Initializing Minecraft...", 0.55f); NativeCallback.onFinalInitStarted(); @@ -444,11 +449,11 @@ public class InnerCoreServer { } public static String getVersionName() { - return singleton.getPropertyString("pack-version", "2.3.1b115 test"); + return singleton.getPropertyString("pack-version", "2.3.1b116 test"); } public static int getVersionCode() { - return singleton.getPropertyInt("pack-version-code", 152); + return singleton.getPropertyInt("pack-version-code", 153); } private static void handleUnsupportedMethod(String message) { diff --git a/src/main/java/com/reider745/hooks/ItemUtils.java b/src/main/java/com/reider745/hooks/ItemUtils.java index da341a5c..b4a91a93 100644 --- a/src/main/java/com/reider745/hooks/ItemUtils.java +++ b/src/main/java/com/reider745/hooks/ItemUtils.java @@ -182,7 +182,6 @@ public class ItemUtils implements HookClass { ItemExtraDataProvider provider = (ItemExtraDataProvider) items_pointers.getInstance(extra.getValue()); provider.apply(item); - items_pointers.replace(items_pointers.getPointerForInstance(item), provider); } return item; } diff --git a/src/main/java/com/reider745/hooks/RuntimeItemsHooks.java b/src/main/java/com/reider745/hooks/RuntimeItemsHooks.java index 6eaf18e2..d245adc0 100644 --- a/src/main/java/com/reider745/hooks/RuntimeItemsHooks.java +++ b/src/main/java/com/reider745/hooks/RuntimeItemsHooks.java @@ -70,6 +70,8 @@ public class RuntimeItemsHooks implements HookClass { int legacyId = id; int runtimeId = id; int damage = ItemMethod.getMaxDamageForId(id, 0); + if(damage == 0) + damage = Integer.MAX_VALUE;//Медведев я тебе поздравляю максимальное количество рюкзаков 32кE(это кнч дохуя, но костыль уровня школьника), ахуенный костыль! Нет бы блять в ItemExtraData хранить, нет нахуй нкжно обязательно блять с помощью даты boolean hasData = damage <= 0; runtimeId2Name.put(runtimeId, name); diff --git a/src/main/java/com/reider745/item/CustomItemClass.java b/src/main/java/com/reider745/item/CustomItemClass.java index 1cb86f03..cd2d56ec 100644 --- a/src/main/java/com/reider745/item/CustomItemClass.java +++ b/src/main/java/com/reider745/item/CustomItemClass.java @@ -40,7 +40,7 @@ public class CustomItemClass extends Item { this.slot = parameters.get(PropertiesNames.Armors.SLOT, -1); this.defense = parameters.get(PropertiesNames.Armors.DEFENSE, 0); this.knockbackResist = parameters.get(PropertiesNames.Armors.KNOCKBACK_RESIST, 0f); - this.ARMOR_DAMAGEABLE = !parameters.get(PropertiesNames.ARMOR_DAMAGEABLE, true); + this.ARMOR_DAMAGEABLE = parameters.get(PropertiesNames.ARMOR_DAMAGEABLE, false); CompoundTag tag = getOrCreateNamedTag(); CompoundTag components = tag.getCompound("components"); @@ -66,6 +66,7 @@ public class CustomItemClass extends Item { @Override public boolean isUnbreakable() { + System.out.println(ARMOR_DAMAGEABLE); return ARMOR_DAMAGEABLE; } diff --git a/src/main/java/com/reider745/item/ItemMethod.java b/src/main/java/com/reider745/item/ItemMethod.java index 732e8ad9..3a43de14 100644 --- a/src/main/java/com/reider745/item/ItemMethod.java +++ b/src/main/java/com/reider745/item/ItemMethod.java @@ -47,8 +47,8 @@ public class ItemMethod { return 0; } - public static void setMaxDamage(CustomManager manager, int id){ - manager.put(PropertiesNames.MAX_DAMAGE, id); + public static void setMaxDamage(CustomManager manager, int damage){ + manager.put(PropertiesNames.MAX_DAMAGE, damage); } public static void setMaxStackSize(CustomManager manager, int stack){ @@ -122,7 +122,7 @@ public class ItemMethod { } public static void setArmorDamageable(CustomManager ptr, boolean value) { - ptr.put(PropertiesNames.ARMOR_DAMAGEABLE, value); + ptr.put(PropertiesNames.ARMOR_DAMAGEABLE, !value); } public static void addRepairItemId(CustomManager ptr, int id) { diff --git a/src/main/java/com/reider745/item/NukkitIdConvertor.java b/src/main/java/com/reider745/item/NukkitIdConvertor.java index c03c4cc8..08509d23 100644 --- a/src/main/java/com/reider745/item/NukkitIdConvertor.java +++ b/src/main/java/com/reider745/item/NukkitIdConvertor.java @@ -10,7 +10,7 @@ public class NukkitIdConvertor { add(351, 4, 821, 0);//lapis fix add(325, 10, 843, 0);//lava bucket fix - add(235, 5, 850, 0);//water bucket fix + add(325, 8, 850, 0);//water bucket fix } public static class EntryItem { @@ -33,6 +33,14 @@ public class NukkitIdConvertor { public int hashCode() { return Objects.hash(id, data); } + + @Override + public String toString() { + return "EntryItem{" + + "id=" + id + + ", data=" + data + + '}'; + } } private static final List> nukkitForInenrCore = new ArrayList<>(); diff --git a/src/main/java/com/zhekasmirnov/apparatus/multiplayer/NetworkConfig.java b/src/main/java/com/zhekasmirnov/apparatus/multiplayer/NetworkConfig.java index 552c48f8..7cefcb32 100644 --- a/src/main/java/com/zhekasmirnov/apparatus/multiplayer/NetworkConfig.java +++ b/src/main/java/com/zhekasmirnov/apparatus/multiplayer/NetworkConfig.java @@ -77,6 +77,6 @@ public class NetworkConfig { // instead of direct channel, use native protocol for local client-server connection setLocalNativeProtocolForced(EngineConfig.getBoolean("network.local_native_protocol_forced", false)); // enable socket server - setSocketConnectionAllowed(EngineConfig.getBoolean("network.enable_socket_server", true)); + //setSocketConnectionAllowed(EngineConfig.getBoolean("network.enable_socket_server", true)); } } diff --git a/src/main/java/com/zhekasmirnov/innercore/api/InnerCoreConfig.java b/src/main/java/com/zhekasmirnov/innercore/api/InnerCoreConfig.java index 16d93120..fb7e746e 100644 --- a/src/main/java/com/zhekasmirnov/innercore/api/InnerCoreConfig.java +++ b/src/main/java/com/zhekasmirnov/innercore/api/InnerCoreConfig.java @@ -1,5 +1,6 @@ package com.zhekasmirnov.innercore.api; +import com.reider745.InnerCoreServer; import com.zhekasmirnov.apparatus.Apparatus; import com.zhekasmirnov.innercore.api.log.ICLog; import com.zhekasmirnov.innercore.mod.build.Config; diff --git a/src/main/java/com/zhekasmirnov/innercore/mod/build/Config.java b/src/main/java/com/zhekasmirnov/innercore/mod/build/Config.java index 863ca063..71f70f65 100644 --- a/src/main/java/com/zhekasmirnov/innercore/mod/build/Config.java +++ b/src/main/java/com/zhekasmirnov/innercore/mod/build/Config.java @@ -4,6 +4,7 @@ package com.zhekasmirnov.innercore.mod.build; * Created by zheka on 15.08.2017. */ +import com.reider745.InnerCoreServer; import com.zhekasmirnov.innercore.api.log.ICLog; import com.zhekasmirnov.innercore.api.mod.ScriptableObjectHelper; import com.zhekasmirnov.innercore.utils.FileTools; @@ -117,6 +118,8 @@ public class Config { } public boolean getBool(String name) { + if (name.equals("gameplay.use_legacy_workbench_override")) + return InnerCoreServer.isLegacyWorkbench(); Object val = get(name); if (val instanceof Boolean) { return (boolean) val; diff --git a/src/main/resources/innercore/assets/innercore/scripts/workbench.js b/src/main/resources/innercore/assets/innercore/scripts/workbench.js index a46ae198..cef73f44 100644 --- a/src/main/resources/innercore/assets/innercore/scripts/workbench.js +++ b/src/main/resources/innercore/assets/innercore/scripts/workbench.js @@ -4,6 +4,19 @@ Callback.addCallback("CoreConfigured", function(config) { isLegacyWorkbenchEnabled = config.getBool("gameplay.use_legacy_workbench_override"); }); +function open(player, x, y, z){ + var position = Entity.getPosition(player); + var distanceSqr = Math.pow(position[0] - (x + .5), 2) + Math.pow(position[1] - (y + .5), 2) + Math.pow(position[2] - (z + .5), 2); + if (distanceSqr < 15 * 15) { + var blockSource = BlockSource.getDefaultForActor(player); + if (blockSource != null && blockSource.getBlockId(x || 0, y || 0, z || 0) === 58) { + var client = Network.getClientForPlayer(player); + WorkbenchHandler.openFor(client); + WorkbenchHandler.handleRebuildRecipeRequest(client); + } + } +} + /** * Network workbench implementation */ @@ -15,15 +28,7 @@ var WorkbenchHandler = { setupPacketListeners: function() { Network.addServerPacket("sys.workbench.open", function(client, coords) { - var position = Entity.getPosition(client.getPlayerUid()); - var distanceSqr = Math.pow(position[0] - (coords.x + .5), 2) + Math.pow(position[1] - (coords.y + .5), 2) + Math.pow(position[2] - (coords.z + .5), 2); - if (distanceSqr < 15 * 15) { - var blockSource = BlockSource.getDefaultForActor(client.getPlayerUid()); - if (blockSource != null && blockSource.getBlockId(coords.x || 0, coords.y || 0, coords.z || 0) === 58) { - WorkbenchHandler.openFor(client); - WorkbenchHandler.handleRebuildRecipeRequest(client); - } - } + }); }, @@ -140,18 +145,21 @@ var WorkbenchHandler = { WorkbenchHandler.setupContainerClientSide(); WorkbenchHandler.setupPacketListeners(); -Callback.addCallback("ItemUseLocalServer", function (coords, item, block, isExternal, player) { +/*Callback.addCallback("ItemUseLocalServer", function (coords, item, block, isExternal, player) { if (isLegacyWorkbenchEnabled && block.id === 58) { if (!Entity.isSneaking(player)) { preventDefault(); Network.sendToServer("sys.workbench.open", {x: coords.x, y: coords.y, z: coords.z}); } } -}); +});*/ Callback.addCallback("ItemUse", function (coords, item, block, isExternal, player) { - if (isLegacyWorkbenchEnabled && block.id === 58 && !Entity.isSneaking(player)) { + if (isLegacyWorkbenchEnabled && block.id === 58) { preventDefault(); + if(!Entity.isSneaking(player)){ + open(Number(player), coords.x, coords.y, coords.z) + } } }); diff --git a/src/main/resources/zotecore.yml b/src/main/resources/zotecore.yml index de949ff2..98769e93 100644 --- a/src/main/resources/zotecore.yml +++ b/src/main/resources/zotecore.yml @@ -10,7 +10,7 @@ pack-version-code: 152 # Use vanilla crafting table interface, instead of custom one. # Attention: currently not supported and custom recipes will not be dislayed. -# use-legacy-workbench-override: off +# use-legacy-workbench-override: on # Disabling inventory fix for connected clients, outdated versions do not # work properly with it, not allowing moving items around inventory. @@ -28,3 +28,17 @@ pack-version-code: 152 # Developer mode allows you to receive additional information # about engine operation, as well as profiling of methods. # developer-mode: on + +# Период сохранения данных inner core +# auto-save-period: 60 + +# Обновлять вместе с сохранениями inner core сохранения мира +# auto-save-world: on + + +# Состояние сокет сервера +# Для сокета сервера требуется дополнительный порт, подключение через сокет серверы более стабильное +# socket-server-enable: on + +# Порт сокет сервера +# socket-port: 2304 \ No newline at end of file