- 12
- 0
Ситуация такая: я в программировании модов вообще не разбираюсь, но мне понадобилось разработать пару небольших модов. Я сел их делать в MCreator, у меня даже по большей части получалось. Все эти моды были мне нужны для взаимодействии с ботом, написанном на питоне. И вот я столкнулся с проблемой - бот отказывается подключаться к серверу, на котором есть мод созданный с помощью MCreator. Возвращает RuntimeError: Minecraft server reply with code 400. Попробовал на полностью пустом моде - отказывается. Сделал пустой мод на джаве - подключился. Начал разбираться в чем проблема, запустил мод из MCreator на джаве и нашел конкретные несколько строчек, убрав которые все заработает. Но проблема в том, что в том моде, что я уже сделал, просто так удалить эти строчки нельзя, они, как я понял, используются каким-то образом при работе с глобальными переменными.
В момент, когда бот пытается подключиться, но не может, в консоли написано:
Можете подсказать что не так с этой частью кода, как ее можно изменить, чтобы бот смог подключиться к серверу?
Вот эти строчки, в которых проблема:
private static final String PROTOCOL_VERSION = "1";
public static final SimpleChannel PACKET_HANDLER = NetworkRegistry.newSimpleChannel(new ResourceLocation(MODID, MODID), () -> PROTOCOL_VERSION, PROTOCOL_VERSION::equals, PROTOCOL_VERSION::equals);
private static int messageID = 0;
public static <T> void addNetworkMessage(Class<T> messageType, BiConsumer<T, FriendlyByteBuf> encoder, Function<FriendlyByteBuf, T> decoder, BiConsumer<T, Supplier<NetworkEvent.Context>> messageConsumer) {
PACKET_HANDLER.registerMessage(messageID, messageType, encoder, decoder, messageConsumer);
messageID++;
}
Вот тут переменная PACKET_HANDLER используется. В других местах, где она используется пишется, что эта часть кода нигде не используется, значит я ее, в теории, могу просто удалить, но эта часть кода используется в 3 местах и все эти места связанны с глобальными переменными:
public void syncData(LevelAccessor world) {
this.setDirty();
if (world instanceof Level && !world.isClientSide())
PlayerSpectatorMod.PACKET_HANDLER.send(PacketDistributor.ALL.noArg(), new SavedDataSyncMessage(0, this));
}
В момент, когда бот пытается подключиться, но не может, в консоли написано:
Java:
[00:48:48] [Netty Server IO #3/DEBUG] [ne.mi.ne.NetworkRegistry/NETREGISTRY]: Channel 'fml:loginwrapper' : Vanilla acceptance test: ACCEPTED
[00:48:48] [Netty Server IO #3/DEBUG] [ne.mi.ne.NetworkRegistry/NETREGISTRY]: Channel 'forge:tier_sorting' : Vanilla acceptance test: ACCEPTED
[00:48:48] [Netty Server IO #3/DEBUG] [ne.mi.ne.NetworkRegistry/NETREGISTRY]: Channel 'fml:handshake' : Vanilla acceptance test: ACCEPTED
[00:48:48] [Netty Server IO #3/DEBUG] [ne.mi.ne.NetworkRegistry/NETREGISTRY]: Channel 'player_spectator:player_spectator' : Vanilla acceptance test: REJECTED
[00:48:48] [Netty Server IO #3/DEBUG] [ne.mi.ne.NetworkRegistry/NETREGISTRY]: Channel 'minecraft:unregister' : Vanilla acceptance test: ACCEPTED
[00:48:48] [Netty Server IO #3/DEBUG] [ne.mi.ne.NetworkRegistry/NETREGISTRY]: Channel 'fml:play' : Vanilla acceptance test: ACCEPTED
[00:48:48] [Netty Server IO #3/DEBUG] [ne.mi.ne.NetworkRegistry/NETREGISTRY]: Channel 'minecraft:register' : Vanilla acceptance test: ACCEPTED
[00:48:48] [Netty Server IO #3/DEBUG] [ne.mi.ne.NetworkRegistry/NETREGISTRY]: Channel 'forge:split' : Vanilla acceptance test: ACCEPTED
[00:48:48] [Netty Server IO #3/ERROR] [ne.mi.ne.NetworkRegistry/NETREGISTRY]: Channels [player_spectator:player_spectator] rejected vanilla connections
[00:48:48] [Netty Server IO #3/INFO] [ne.mi.se.ServerLifecycleHooks/SERVERHOOKS]: Disconnecting VANILLA connection attempt: This server has mods that require Forge to be installed on the client. Contact your server admin for more details.
Можете подсказать что не так с этой частью кода, как ее можно изменить, чтобы бот смог подключиться к серверу?