Гайд Forge multiplayer fixer

Начинающий
Начинающий
Статус
Оффлайн
Регистрация
13 Янв 2021
Сообщения
231
Реакции
17
Я думаю, что уже почти все люди, которые разрабатывают на Forge, знают, что если вы заходите с IDE, то мультиплеер будет заблокирован.
10 минут назад мне было скучно, и я решил это исправить.

Вам нужно вставить этот код в onTickEvent.



P.S: Работает только на java < 16.
 
Последнее редактирование:
Открой пж для всех
ни в коем случае
это изоляция таких как ты от мира нормальных людей
Я думаю, что уже почти все люди, которые разрабатывают на Forge, знают, что если вы заходите с IDE, то мультиплеер будет заблокирован.
10 минут назад мне было скучно, и я решил это исправить.

Вам нужно вставить этот код в onTickEvent.

Скрытое содержимое

P.S: Работает только на java < 16.
ehm, с какой хуяки данный код должен заработать вне среды разработки?форга в рантайме имеет srg маппинги.не?
 
ehm, с какой хуяки данный код должен заработать вне среды разработки?форга в рантайме имеет srg маппинги.не?
Ты прав, при билде ты не сможешь запустить данный код т.к просто будет кидаться FieldNotFoundException. Ты либо комментишь фулл код данной вещи либо просто можешь убрать откидывание RuntimeException и по сути Forge должен спокойно запустить мод.
 
Способ через миксины

Java:
Expand Collapse Copy
@Mixin(Minecraft.class)
public class MultiplayerFixMixin {

    @Inject(method = "isMultiplayerEnabled", at = @At("HEAD"), cancellable = true)
    private void isMultiplayerEnabled(CallbackInfoReturnable<Boolean> callbackInfo) {
        callbackInfo.setReturnValue(true);
    }

    @Inject(method = "isChatEnabled", at = @At("HEAD"), cancellable = true)
    private void isChatEnabled(CallbackInfoReturnable<Boolean> callbackInfo) {
        callbackInfo.setReturnValue(true);
    }

}
 
@TheXSVV, куда это вставить
 
Скрытое содержимое
можем в дс пойти

1. В build gradle добавляешь:
Код:
Expand Collapse Copy
dependencies {
    minecraft 'net.minecraftforge:forge:1.16.5-36.2.39'
    annotationProcessor 'org.spongepowered:mixin:0.8.5:processor'
}
2. В resources создаёшь idмода.mixins.json, добавляешь:
JSON:
Expand Collapse Copy
{
  "required": true,
  "minVersion": "0.8",
  "package": "твой.package.mixin",
  "compatibilityLevel": "JAVA_8",
  "refmap": "idмода.refmap.json",
  "mixins": [
  ],
  "client": [
    "НазваниеКлассаMixin"
  ],
  "injectors": {
    "defaultRequire": 1
  }
}
3. Создаёшь MultiplayerFixMixin в своём.package.mixin и код я дал выше
 
TheXSVV,давай в дс обеснишь
 
не помог гайд, что бы я не изменял всеравно мультиплеер заблокирован
 
Я думаю, что уже почти все люди, которые разрабатывают на Forge, знают, что если вы заходите с IDE, то мультиплеер будет заблокирован.
10 минут назад мне было скучно, и я решил это исправить.

Вам нужно вставить этот код в onTickEvent.

Скрытое содержимое

P.S: Работает только на java < 16.
господи

Java:
Expand Collapse Copy
    public boolean isMultiplayerEnabled()
    {
        return true;
    }
 
Не мб ты откроешь глаза и увидишь, что этот тред создан для людей, которые используют Forge ?
да это и есть фикс для форджа который он скинул, я не ответил потому что узнал про этот фикс еще раньше чем его скинул чел сверху.
 
у меня нету ontickevent
 
у меня нету ontickevent
1691245127368.png

onTickEvent:
Expand Collapse Copy
@SubscribeEvent
public void onTick(TickEvent.ClientTickEvent event) {
    //TODO: Write code here
}
 
Почему для вас всё так сложно? Через рефлексию сделать нельзя или что? Можно через миксины, но более простым способом, вот как реализовал я:

2:
Expand Collapse Copy
package tubik.notkek.mixins.fixconnect;

import net.minecraft.client.Minecraft;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;

@Mixin(Minecraft.class)
public class FixConnectionMixin {
    private boolean customMultiplayerEnabled = true;

    /**
     * @notkek
     * @07.08.23
     */
    [USER=548942]@Overwrite[/USER]
    public boolean isMultiplayerEnabled() {
        return this.customMultiplayerEnabled;
    }
}
package tubik.notkek.mixins.fixsendmessage;

import net.minecraft.client.Minecraft;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Overwrite;

@Mixin(Minecraft.class)
public class FixSendMessageMixin {
    private boolean customMultiplayerEnabled = true;

    /**
     * @notkek
     * @07.08.23
     */
    [USER=548942]@Overwrite[/USER]
    public boolean isChatEnabled() {
        return this.customMultiplayerEnabled;
    }
}
@Overwrite багается сам, т.к юг думает что это юзер, убираете просто всё лишнее и живёте нормально, я вообще забил на это, но странно что кто то до сих пор юзает @Inject когда удобнее и практичнее @Overwrite. Думаю зарегистрировать не прям тупые смогут.
ss:
Пожалуйста, авторизуйтесь для просмотра ссылки.
 
Последнее редактирование:
Назад
Сверху Снизу