recode again, updated README

This commit is contained in:
FlorianMichael 2023-03-15 00:47:06 +01:00
parent 869225e159
commit 3303d975b3
82 changed files with 300 additions and 380 deletions

View File

@ -83,45 +83,33 @@ Settings are optional settings that can turn fixes on and off, originally they w
![](/.github/images/settings.png)
## Addons
To make a ViaFabricPlus addon you just have to implement the ViaFabricPlusAddon interface in your main class:
There is no real addon base, to create addons you can simply use the Fabric system, and then interact with ViaFabricPlus via the **EventDispatcher**.
```java
package net.example;
public class ViaFabricPlusExampleAddon implements ClientModInitializer {
public class ViaFabricPlusExampleAddon implements ViaFabricPlusAddon {
@Override
public void onLoad() {
// called after ViaVersion and Minecraft is initialized
}
@Override
public void onChangeVersion(ComparableProtocolVersion protocolVersion) {
// called when the user changes the target version in the gui
}
}
```
To load the addon you have to specify the addon main class as entrypoint in your *fabric.mod.json*:
```json
{
"entrypoints": {
"viafabricplus": [
"net.example.ViaFabricPlusExampleAddon"
]
@Override
public void onInitializeClient() {
ChangeProtocolVersionCallback.EVENT.register(protocolVersion -> {
System.out.println("Version changed to " + protocolVersion.getName());
});
}
}
```
#### ViaFabricPlus has 7 events at the moment:
| Callback class name | Description |
|--------------------------------------|--------------------------------------------------------------------------------------------|
| ChangeProtocolVersionCallback | Called when the user changes the target version in the screen |
| FinishMinecraftLoadCallback | Called when Minecraft is finished with loading all its components |
| FinishViaLoadingBaseStartupCallback | Called when ViaLoadingBase and Via* is loaded and ready to use |
| InitializeSettingsCallback | Called after the default setting groups are loaded and before the setting config is loaded |
| LoadClassicProtocolExtensionCallback | Called when the classic server sends the protocol extensions (only in **c0.30 CPE**) |
| PreLoadCallback | Called before everything (Pre-pre load) |
| SkipIdlePacketCallback | In case you need an event as soon as the idle packet is skipped in the <= 1.8 |
### General API
In case you need an event as soon as the idle packet is skipped in the <= 1.8, you can do that: <br>
```java
IdlePacketExecutor.registerIdlePacketSkipExecute(() -> {
// Called when the idle packet is skipped
});
```
In case you need the release version of a material, you can do that:
```java
final ProtocolRange range = ItemReleaseVersionDefinition.getItemMap().get(Items.WRITABLE_BOOK); // If an item does not appear in the item map, it has always existed
final ProtocolRange range = ItemReleaseVersionDefinition.INSTANCE.getItemMap().get(Items.WRITABLE_BOOK); // If an item does not appear in the item map, it has always existed
// The Range class then contains all versions in which the item occurs.
// You can find out how the Range class works in the ViaLoadingBase README.
@ -137,7 +125,7 @@ public class ExampleSettingGroup extends SettingGroup {
public ExampleSettingGroup() {
super("Example");
ViaFabricPlus.getClassWrapper().loadGroup(this); // should be in your onLoad method
ViaFabricPlus.INSTANCE.getSettingsSystem().addGroup(this); // should be in your onLoad method
}
}
```
@ -172,7 +160,34 @@ public void onLoad() {
```
#### Implementing custom classic protocol extensions:
```java
public class ExampleExtensionSupport implements ClientModInitializer {
public static ClientboundPacketsc0_30cpe EXT_CLICK_DISTANCE;
@Override
public void onInitializeClient() {
PreLoadCallback.EVENT.register(() -> {
CustomClassicProtocolExtensions.allowExtension(ClassicProtocolExtension.CLICK_DISTANCE); // Register extension as supported
EXT_CLICK_DISTANCE = CustomClassicProtocolExtensions.createNewPacket(ClassicProtocolExtension.CLICK_DISTANCE, 0x12, (user, buf) -> buf.readShort());
});
FinishViaLoadingBaseStartupCallback.EVENT.register(() -> {
Via.getManager().getProtocolManager().getProtocol(Protocolc0_30toc0_30cpe.class).registerClientbound(EXT_CLICK_DISTANCE, null, new PacketHandlers() {
@Override
protected void register() {
handler(wrapper -> {
wrapper.cancel();
final short distance = wrapper.read(Type.SHORT);
// Do your stuff...
});
}
}, true);
});
}
}
```
## Alternatives
- [ClientViaVersion](https://github.com/Gerrygames/ClientViaVersion): Discontinued 5zig plugin.

View File

@ -53,10 +53,9 @@ dependencies {
mappings "net.fabricmc:yarn:${project.yarn_mappings}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"
modImplementation "com.terraformersmc:modmenu:${project.mod_menu_version}"
modImplementation "net.fabricmc.fabric-api:fabric-api:${project.fabric_api_version}"
libs "com.github.FlorianMichael:ViaLoadingBase:${project.vialoadingbase_version}"
libs "com.github.FlorianMichael:DietrichEvents:${project.dietrichevents_version}"
libs("org.cloudburstmc.netty:netty-transport-raknet:${project.raknet_transport_version}") {
exclude group: "io.netty", module: "netty-common"
exclude group: "io.netty", module: "netty-buffer"
@ -74,6 +73,8 @@ dependencies {
libs "net.lenni0451.mcstructs:text:${project.mcstructs_text_version}"
libs "net.lenni0451:Reflect:${project.reflect_version}"
modImplementation "com.terraformersmc:modmenu:${project.mod_menu_version}"
}
processResources {

View File

@ -2,19 +2,19 @@
org.gradle.jvmargs=-Xmx8G
org.gradle.parallel=true
# minecraft
# minecraft and fabric
minecraft_version=1.19.3
yarn_mappings=1.19.3+build.5
loader_version=0.14.14
fabric_api_version=0.74.0+1.19.3
# viafabricplus
mod_version=1.9.0
mod_version=2.0.0
maven_group=de.florianmichael
archives_base_name=viafabricplus
# base lib
vialoadingbase_version=6dad0a2561
dietrichevents_version=1.0.0
raknet_transport_version=1.0.0.CR1-SNAPSHOT
# viaversion (and required) libs

View File

@ -17,7 +17,6 @@
*/
package de.florianmichael.viafabricplus;
import de.florianmichael.dietrichevents.EventDispatcher;
import de.florianmichael.viafabricplus.definition.ChatLengthDefinition;
import de.florianmichael.viafabricplus.definition.ItemReleaseVersionDefinition;
import de.florianmichael.viafabricplus.definition.PackFormatsDefinition;
@ -25,8 +24,8 @@ import de.florianmichael.viafabricplus.definition.c0_30.ClassicItemSelectionScre
import de.florianmichael.viafabricplus.definition.c0_30.CustomClassicProtocolExtensions;
import de.florianmichael.viafabricplus.definition.c0_30.command.ClassicProtocolCommands;
import de.florianmichael.viafabricplus.definition.v1_8_x.ArmorPointsDefinition;
import de.florianmichael.viafabricplus.event.FinishMinecraftLoadListener;
import de.florianmichael.viafabricplus.event.LoadListener;
import de.florianmichael.viafabricplus.event.FinishMinecraftLoadCallback;
import de.florianmichael.viafabricplus.event.PreLoadCallback;
import de.florianmichael.viafabricplus.settings.SettingsSystem;
import de.florianmichael.viafabricplus.vialoadingbase.ViaLoadingBaseStartup;
@ -36,11 +35,10 @@ public class ViaFabricPlus {
public final static File RUN_DIRECTORY = new File("ViaFabricPlus");
public final static ViaFabricPlus INSTANCE = new ViaFabricPlus();
private final EventDispatcher eventDispatcher = new EventDispatcher();
private final SettingsSystem settingsSystem = new SettingsSystem();
public void init() {
eventDispatcher.subscribe(FinishMinecraftLoadListener.class, () -> {
FinishMinecraftLoadCallback.EVENT.register(() -> {
settingsSystem.init();
// General definitions
@ -51,18 +49,14 @@ public class ViaFabricPlus {
// Classic Stuff
ChatLengthDefinition.create();
ClassicItemSelectionScreen.create();
ClassicProtocolCommands.load();
ClassicProtocolCommands.create();
});
eventDispatcher.post(new LoadListener.LoadEvent());
PreLoadCallback.EVENT.invoker().onLoad();
CustomClassicProtocolExtensions.create();
new ViaLoadingBaseStartup();
}
public EventDispatcher getEventDispatcher() {
return eventDispatcher;
}
public SettingsSystem getSettingsSystem() {
return settingsSystem;
}

View File

@ -18,9 +18,7 @@
package de.florianmichael.viafabricplus.definition;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.viafabricplus.event.ChangeProtocolVersionListener;
import de.florianmichael.vialoadingbase.platform.ComparableProtocolVersion;
import de.florianmichael.viafabricplus.event.ChangeProtocolVersionCallback;
import net.minecraft.client.MinecraftClient;
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
@ -30,7 +28,7 @@ public class ChatLengthDefinition {
public static void create() {
INSTANCE = new ChatLengthDefinition();
ViaFabricPlus.INSTANCE.getEventDispatcher().subscribe(ChangeProtocolVersionListener.class, protocolVersion -> {
ChangeProtocolVersionCallback.EVENT.register(protocolVersion -> {
INSTANCE.maxLength = 256;
if (protocolVersion.isOlderThanOrEqualTo(ProtocolVersion.v1_10)) {
INSTANCE.maxLength = 100;

View File

@ -18,8 +18,7 @@
package de.florianmichael.viafabricplus.definition;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.viafabricplus.event.ChangeProtocolVersionListener;
import de.florianmichael.viafabricplus.event.ChangeProtocolVersionCallback;
import de.florianmichael.vialoadingbase.platform.ComparableProtocolVersion;
import de.florianmichael.vialoadingbase.platform.ProtocolRange;
import net.minecraft.item.Item;
@ -40,10 +39,10 @@ public class ItemReleaseVersionDefinition {
public static void create() {
INSTANCE = new ItemReleaseVersionDefinition();
ViaFabricPlus.INSTANCE.getEventDispatcher().subscribe(ChangeProtocolVersionListener.class, (protocolVersion -> {
ChangeProtocolVersionCallback.EVENT.register(protocolVersion -> {
INSTANCE.currentMap.clear();
INSTANCE.currentMap.addAll(Registries.ITEM.stream().filter(item -> INSTANCE.contains(item, protocolVersion)).toList());
}));
});
}
private final Map<Item, ProtocolRange[]> itemMap = new HashMap<>();

View File

@ -17,10 +17,8 @@
*/
package de.florianmichael.viafabricplus.definition.c0_30;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.viafabricplus.event.ChangeProtocolVersionListener;
import de.florianmichael.viafabricplus.event.ChangeProtocolVersionCallback;
import de.florianmichael.vialoadingbase.platform.ComparableProtocolVersion;
import de.florianmichael.vialoadingbase.platform.InternalProtocolList;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.gui.screen.Screen;
import net.minecraft.client.sound.PositionedSoundInstance;
@ -44,7 +42,7 @@ public class ClassicItemSelectionScreen extends Screen {
public static void create() {
INSTANCE = new ClassicItemSelectionScreen();
ViaFabricPlus.INSTANCE.getEventDispatcher().subscribe(ChangeProtocolVersionListener.class, protocolVersion -> {
ChangeProtocolVersionCallback.EVENT.register(protocolVersion -> {
if (protocolVersion.isOlderThanOrEqualTo(LegacyProtocolVersion.c0_28toc0_30)) {
INSTANCE.reload(protocolVersion, false);
}

View File

@ -18,16 +18,14 @@
package de.florianmichael.viafabricplus.definition.c0_30;
import com.viaversion.viaversion.api.connection.UserConnection;
import de.florianmichael.dietrichevents.EventDispatcher;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.viafabricplus.definition.ChatLengthDefinition;
import de.florianmichael.viafabricplus.event.LoadClassicProtocolExtensionListener;
import de.florianmichael.viafabricplus.event.LoadListener;
import de.florianmichael.viafabricplus.event.LoadClassicProtocolExtensionCallback;
import de.florianmichael.vialoadingbase.ViaLoadingBase;
import io.netty.buffer.ByteBuf;
import net.lenni0451.reflect.Enums;
import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.ClientboundPacketsc0_30cpe;
import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.data.ClassicProtocolExtension;
import org.lwjgl.openal.AL;
import java.util.Arrays;
import java.util.HashMap;
@ -38,12 +36,14 @@ import java.util.function.BiConsumer;
public class CustomClassicProtocolExtensions {
public static CustomClassicProtocolExtensions INSTANCE;
public static ClientboundPacketsc0_30cpe EXT_WEATHER_TYPE;
public static void create() {
CustomClassicProtocolExtensions.INSTANCE = new CustomClassicProtocolExtensions();
EXT_WEATHER_TYPE = createNewPacket(ClassicProtocolExtension.ENV_WEATHER_TYPE, 31, (user, buf) -> buf.readByte());
ViaFabricPlus.INSTANCE.getEventDispatcher().subscribe(LoadClassicProtocolExtensionListener.class, (classicProtocolExtension) -> {
LoadClassicProtocolExtensionCallback.EVENT.register(classicProtocolExtension -> {
if (classicProtocolExtension == ClassicProtocolExtension.LONGER_MESSAGES) ChatLengthDefinition.INSTANCE.expand();
if (classicProtocolExtension == ClassicProtocolExtension.CUSTOM_BLOCKS) ClassicItemSelectionScreen.INSTANCE.reload(ViaLoadingBase.getClassWrapper().getTargetVersion(), true);
});
@ -52,7 +52,9 @@ public class CustomClassicProtocolExtensions {
public final List<ClassicProtocolExtension> ALLOWED_EXTENSIONS = Arrays.asList(ClassicProtocolExtension.ENV_WEATHER_TYPE);
public final Map<Integer, ClientboundPacketsc0_30cpe> CUSTOM_PACKETS = new HashMap<>();
public static ClientboundPacketsc0_30cpe EXT_WEATHER_TYPE;
public static void allowExtension(final ClassicProtocolExtension classicProtocolExtension) {
INSTANCE.ALLOWED_EXTENSIONS.add(classicProtocolExtension);
}
public static ClientboundPacketsc0_30cpe createNewPacket(final ClassicProtocolExtension classicProtocolExtension, final int packetId, final BiConsumer<UserConnection, ByteBuf> packetSplitter) {
final ClientboundPacketsc0_30cpe packet = Enums.newInstance(ClientboundPacketsc0_30cpe.class, classicProtocolExtension.getName(), ClassicProtocolExtension.values().length, new Class[] { int.class, BiConsumer.class }, new Object[] { packetId, packetSplitter });

View File

@ -26,11 +26,15 @@ import java.util.List;
public class ClassicProtocolCommands {
public final static String COMMAND_PREFIX = "/v";
public final static List<ICommand> commands = new ArrayList<>();
public static ClassicProtocolCommands INSTANCE;
public static void load() {
commands.add(new HelpCommand());
commands.add(new SetTimeCommand());
commands.add(new ListExtensionsCommand());
public final List<ICommand> commands = new ArrayList<>();
public static void create() {
INSTANCE = new ClassicProtocolCommands();
INSTANCE.commands.add(new HelpCommand());
INSTANCE.commands.add(new SetTimeCommand());
INSTANCE.commands.add(new ListExtensionsCommand());
}
}

View File

@ -35,9 +35,9 @@ public class HelpCommand implements ICommand {
@Override
public void execute(String[] args) {
sendFeedback(Formatting.GREEN + "Loaded " + Formatting.GOLD + (ClassicProtocolCommands.commands.size() - 1) + Formatting.GREEN + " commands");
sendFeedback(Formatting.GREEN + "Loaded " + Formatting.GOLD + (ClassicProtocolCommands.INSTANCE.commands.size() - 1) + Formatting.GREEN + " commands");
for (ICommand command : ClassicProtocolCommands.commands) {
for (ICommand command : ClassicProtocolCommands.INSTANCE.commands) {
if (command.name().equals(name())) continue;
command.sendUsage();
}

View File

@ -17,30 +17,17 @@
*/
package de.florianmichael.viafabricplus.event;
import de.florianmichael.dietrichevents.AbstractEvent;
import de.florianmichael.dietrichevents.handle.EventExecutor;
import de.florianmichael.dietrichevents.handle.Listener;
import de.florianmichael.vialoadingbase.platform.ComparableProtocolVersion;
import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface ChangeProtocolVersionListener extends Listener {
public interface ChangeProtocolVersionCallback {
Event<ChangeProtocolVersionCallback> EVENT = EventFactory.createArrayBacked(ChangeProtocolVersionCallback.class, listeners -> version -> {
for (ChangeProtocolVersionCallback listener : listeners) {
listener.onChangeProtocolVersion(version);
}
});
void onChangeProtocolVersion(final ComparableProtocolVersion protocolVersion);
class ChangeProtocolVersionEvent extends AbstractEvent<ChangeProtocolVersionListener> {
private final EventExecutor<ChangeProtocolVersionListener> eventExecutor;
public ChangeProtocolVersionEvent(final ComparableProtocolVersion protocolVersion) {
this.eventExecutor = listener -> listener.onChangeProtocolVersion(protocolVersion);
}
@Override
public EventExecutor<ChangeProtocolVersionListener> getEventExecutor() {
return this.eventExecutor;
}
@Override
public Class<ChangeProtocolVersionListener> getListenerType() {
return ChangeProtocolVersionListener.class;
}
}
}

View File

@ -17,25 +17,16 @@
*/
package de.florianmichael.viafabricplus.event;
import de.florianmichael.dietrichevents.AbstractEvent;
import de.florianmichael.dietrichevents.handle.EventExecutor;
import de.florianmichael.dietrichevents.handle.Listener;
import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface FinishMinecraftLoadListener extends Listener {
public interface FinishMinecraftLoadCallback {
Event<FinishMinecraftLoadCallback> EVENT = EventFactory.createArrayBacked(FinishMinecraftLoadCallback.class, listeners -> () -> {
for (FinishMinecraftLoadCallback listener : listeners) {
listener.onFinishMinecraftLoad();
}
});
void onFinishMinecraftLoad();
class FinishMinecraftLoadEvent extends AbstractEvent<FinishMinecraftLoadListener> {
private final EventExecutor<FinishMinecraftLoadListener> eventExecutor = FinishMinecraftLoadListener::onFinishMinecraftLoad;
@Override
public EventExecutor<FinishMinecraftLoadListener> getEventExecutor() {
return eventExecutor;
}
@Override
public Class<FinishMinecraftLoadListener> getListenerType() {
return FinishMinecraftLoadListener.class;
}
}
}

View File

@ -0,0 +1,32 @@
/*
* This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus
* Copyright (C) 2021-2023 FlorianMichael/MrLookAtMe (EnZaXD) and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.event;
import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface FinishViaLoadingBaseStartupCallback {
Event<FinishViaLoadingBaseStartupCallback> EVENT = EventFactory.createArrayBacked(FinishViaLoadingBaseStartupCallback.class, listeners -> () -> {
for (FinishViaLoadingBaseStartupCallback listener : listeners) {
listener.onFinishViaLoadingBaseStartup();
}
});
void onFinishViaLoadingBaseStartup();
}

View File

@ -1,41 +0,0 @@
/*
* This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus
* Copyright (C) 2021-2023 FlorianMichael/MrLookAtMe (EnZaXD) and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.event;
import de.florianmichael.dietrichevents.AbstractEvent;
import de.florianmichael.dietrichevents.handle.EventExecutor;
import de.florianmichael.dietrichevents.handle.Listener;
public interface FinishViaLoadingBaseStartupListener extends Listener {
void onFinishViaLoadingBaseStartup();
class FinishViaLoadingBaseStartupEvent extends AbstractEvent<FinishViaLoadingBaseStartupListener> {
private final EventExecutor<FinishViaLoadingBaseStartupListener> eventExecutor = FinishViaLoadingBaseStartupListener::onFinishViaLoadingBaseStartup;
@Override
public EventExecutor<FinishViaLoadingBaseStartupListener> getEventExecutor() {
return eventExecutor;
}
@Override
public Class<FinishViaLoadingBaseStartupListener> getListenerType() {
return FinishViaLoadingBaseStartupListener.class;
}
}
}

View File

@ -17,25 +17,16 @@
*/
package de.florianmichael.viafabricplus.event;
import de.florianmichael.dietrichevents.AbstractEvent;
import de.florianmichael.dietrichevents.handle.EventExecutor;
import de.florianmichael.dietrichevents.handle.Listener;
import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface InitializeSettingsListener extends Listener {
public interface InitializeSettingsCallback {
Event<InitializeSettingsCallback> EVENT = EventFactory.createArrayBacked(InitializeSettingsCallback.class, listeners -> () -> {
for (InitializeSettingsCallback listener : listeners) {
listener.onInitializeSettings();
}
});
void onInitializeSettings();
class InitializeSettingsEvent extends AbstractEvent<InitializeSettingsListener> {
private final EventExecutor<InitializeSettingsListener> eventExecutor = InitializeSettingsListener::onInitializeSettings;
@Override
public EventExecutor<InitializeSettingsListener> getEventExecutor() {
return eventExecutor;
}
@Override
public Class<InitializeSettingsListener> getListenerType() {
return InitializeSettingsListener.class;
}
}
}

View File

@ -0,0 +1,33 @@
/*
* This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus
* Copyright (C) 2021-2023 FlorianMichael/MrLookAtMe (EnZaXD) and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.event;
import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.data.ClassicProtocolExtension;
public interface LoadClassicProtocolExtensionCallback {
Event<LoadClassicProtocolExtensionCallback> EVENT = EventFactory.createArrayBacked(LoadClassicProtocolExtensionCallback.class, listeners -> classicProtocolExtension -> {
for (LoadClassicProtocolExtensionCallback listener : listeners) {
listener.onLoadClassicProtocolExtension(classicProtocolExtension);
}
});
void onLoadClassicProtocolExtension(final ClassicProtocolExtension classicProtocolExtension);
}

View File

@ -1,46 +0,0 @@
/*
* This file is part of ViaFabricPlus - https://github.com/FlorianMichael/ViaFabricPlus
* Copyright (C) 2021-2023 FlorianMichael/MrLookAtMe (EnZaXD) and contributors
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.event;
import de.florianmichael.dietrichevents.AbstractEvent;
import de.florianmichael.dietrichevents.handle.EventExecutor;
import de.florianmichael.dietrichevents.handle.Listener;
import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.data.ClassicProtocolExtension;
public interface LoadClassicProtocolExtensionListener extends Listener {
void onLoadClassicProtocolExtension(final ClassicProtocolExtension classicProtocolExtension);
class LoadClassicProtocolExtensionEvent extends AbstractEvent<LoadClassicProtocolExtensionListener> {
private final EventExecutor<LoadClassicProtocolExtensionListener> eventExecutor;
public LoadClassicProtocolExtensionEvent(final ClassicProtocolExtension classicProtocolExtension) {
this.eventExecutor = listener -> listener.onLoadClassicProtocolExtension(classicProtocolExtension);
}
@Override
public EventExecutor<LoadClassicProtocolExtensionListener> getEventExecutor() {
return this.eventExecutor;
}
@Override
public Class<LoadClassicProtocolExtensionListener> getListenerType() {
return LoadClassicProtocolExtensionListener.class;
}
}
}

View File

@ -17,25 +17,16 @@
*/
package de.florianmichael.viafabricplus.event;
import de.florianmichael.dietrichevents.AbstractEvent;
import de.florianmichael.dietrichevents.handle.EventExecutor;
import de.florianmichael.dietrichevents.handle.Listener;
import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface LoadListener extends Listener {
public interface PreLoadCallback {
Event<PreLoadCallback> EVENT = EventFactory.createArrayBacked(PreLoadCallback.class, listeners -> () -> {
for (PreLoadCallback listener : listeners) {
listener.onLoad();
}
});
void onLoad();
class LoadEvent extends AbstractEvent<LoadListener> {
private final EventExecutor<LoadListener> eventExecutor = LoadListener::onLoad;
@Override
public EventExecutor<LoadListener> getEventExecutor() {
return this.eventExecutor;
}
@Override
public Class<LoadListener> getListenerType() {
return LoadListener.class;
}
}
}

View File

@ -17,25 +17,16 @@
*/
package de.florianmichael.viafabricplus.event;
import de.florianmichael.dietrichevents.AbstractEvent;
import de.florianmichael.dietrichevents.handle.EventExecutor;
import de.florianmichael.dietrichevents.handle.Listener;
import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface SkipIdlePacketListener extends Listener {
public interface SkipIdlePacketCallback {
Event<SkipIdlePacketCallback> EVENT = EventFactory.createArrayBacked(SkipIdlePacketCallback.class, listeners -> () -> {
for (SkipIdlePacketCallback listener : listeners) {
listener.onSkipIdlePacket();
}
});
void onSkipIdlePacket();
class SkipIdlePacketEvent extends AbstractEvent<SkipIdlePacketListener> {
private final EventExecutor<SkipIdlePacketListener> eventExecutor = SkipIdlePacketListener::onSkipIdlePacket;
@Override
public EventExecutor<SkipIdlePacketListener> getEventExecutor() {
return eventExecutor;
}
@Override
public Class<SkipIdlePacketListener> getListenerType() {
return SkipIdlePacketListener.class;
}
}
}

View File

@ -18,9 +18,9 @@
package de.florianmichael.viafabricplus.injection.mixin.base;
import de.florianmichael.viafabricplus.injection.access.IClientConnection;
import de.florianmichael.viafabricplus.vialoadingbase.platform.pre_netty.PreNettyConstants;
import de.florianmichael.viafabricplus.vialoadingbase.platform.raknet.BedrockRakNetConstants;
import de.florianmichael.viafabricplus.vialoadingbase.platform.raknet.RakNetPingSessions;
import de.florianmichael.viafabricplus.vialoadingbase.constants.PreNettyConstants;
import de.florianmichael.viafabricplus.vialoadingbase.constants.BedrockRakNetConstants;
import de.florianmichael.viafabricplus.vialoadingbase.platform.viabedrock.RakNetPingSessions;
import de.florianmichael.vialoadingbase.ViaLoadingBase;
import de.florianmichael.vialoadingbase.event.PipelineReorderEvent;
import io.netty.bootstrap.AbstractBootstrap;

View File

@ -20,16 +20,16 @@ package de.florianmichael.viafabricplus.injection.mixin.base;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.connection.UserConnectionImpl;
import com.viaversion.viaversion.protocol.ProtocolPipelineImpl;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.viafabricplus.injection.access.IClientConnection;
import de.florianmichael.viafabricplus.vialoadingbase.ViaLoadingBaseStartup;
import de.florianmichael.viafabricplus.vialoadingbase.platform.pre_netty.PreNettyConstants;
import de.florianmichael.viafabricplus.vialoadingbase.platform.pre_netty.VFPPreNettyDecoder;
import de.florianmichael.viafabricplus.vialoadingbase.platform.pre_netty.VFPPreNettyEncoder;
import de.florianmichael.viafabricplus.vialoadingbase.platform.VFPVLBViaDecodeHandler;
import de.florianmichael.viafabricplus.vialoadingbase.platform.raknet.*;
import de.florianmichael.viafabricplus.vialoadingbase.platform.raknet.library_fix.FixedUnconnectedPingEncoder;
import de.florianmichael.viafabricplus.vialoadingbase.platform.raknet.library_fix.FixedUnconnectedPongDecoder;
import de.florianmichael.viafabricplus.vialoadingbase.constants.BedrockRakNetConstants;
import de.florianmichael.viafabricplus.vialoadingbase.constants.PreNettyConstants;
import de.florianmichael.viafabricplus.vialoadingbase.platform.vialegacy.VFPPreNettyDecoder;
import de.florianmichael.viafabricplus.vialoadingbase.platform.vialegacy.VFPPreNettyEncoder;
import de.florianmichael.viafabricplus.vialoadingbase.replacement.VFPVLBViaDecodeHandler;
import de.florianmichael.viafabricplus.vialoadingbase.platform.viabedrock.*;
import de.florianmichael.viafabricplus.vialoadingbase.platform.viabedrock.library_fix.FixedUnconnectedPingEncoder;
import de.florianmichael.viafabricplus.vialoadingbase.platform.viabedrock.library_fix.FixedUnconnectedPongDecoder;
import de.florianmichael.vialoadingbase.ViaLoadingBase;
import de.florianmichael.vialoadingbase.netty.VLBViaEncodeHandler;
import de.florianmichael.vialoadingbase.netty.NettyConstants;

View File

@ -17,7 +17,6 @@
*/
package de.florianmichael.viafabricplus.injection.mixin.base;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.viafabricplus.vialoadingbase.ViaLoadingBaseStartup;
import de.florianmichael.vialoadingbase.ViaLoadingBase;
import net.minecraft.client.network.ClientLoginNetworkHandler;

View File

@ -17,8 +17,7 @@
*/
package de.florianmichael.viafabricplus.injection.mixin.base;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.viafabricplus.event.FinishMinecraftLoadListener;
import de.florianmichael.viafabricplus.event.FinishMinecraftLoadCallback;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.RunArgs;
import org.spongepowered.asm.mixin.Mixin;
@ -31,6 +30,6 @@ public class MixinMinecraftClient {
@Inject(method = "<init>", at = @At("RETURN"))
public void postLoad(RunArgs args, CallbackInfo ci) {
ViaFabricPlus.INSTANCE.getEventDispatcher().post(new FinishMinecraftLoadListener.FinishMinecraftLoadEvent());
FinishMinecraftLoadCallback.EVENT.invoker().onFinishMinecraftLoad();
}
}

View File

@ -39,7 +39,7 @@ public class MixinMultiplayerScreen extends Screen {
public void addProtocolSelectionButton(CallbackInfo ci) {
ButtonWidget.Builder builder = ButtonWidget.builder(Text.literal("ViaFabricPlus"), button -> ProtocolSelectionScreen.open(this));
final int orientation = GeneralSettings.getClassWrapper().mainButtonOrientation.getIndex();
final int orientation = GeneralSettings.INSTANCE.mainButtonOrientation.getIndex();
switch (orientation) {
case 0 -> builder = builder.position(0, 0);
case 1 -> builder = builder.position(width - 98, 0);

View File

@ -17,7 +17,7 @@
*/
package de.florianmichael.viafabricplus.injection.mixin.base;
import de.florianmichael.viafabricplus.vialoadingbase.platform.raknet.RakNetPingSessions;
import de.florianmichael.viafabricplus.vialoadingbase.platform.viabedrock.RakNetPingSessions;
import de.florianmichael.vialoadingbase.ViaLoadingBase;
import net.minecraft.client.network.MultiplayerServerListPinger;
import net.raphimc.viabedrock.api.BedrockProtocolVersion;

View File

@ -31,7 +31,7 @@ public class MixinConnectScreen {
@Inject(method = "render", at = @At("RETURN"))
public void renderClassicProgress(MatrixStack matrices, int mouseX, int mouseY, float delta, CallbackInfo ci) {
if (!BridgeSettings.getClassWrapper().showClassicLoadingProgressInConnectScreen.getValue()) return;
if (!BridgeSettings.INSTANCE.showClassicLoadingProgressInConnectScreen.getValue()) return;
ClassicProgressRenderer.renderProgress(matrices);
}

View File

@ -43,7 +43,7 @@ public class MixinDebugHud {
@Inject(method = "getLeftText", at = @At("RETURN"))
public void addViaFabricPlusInformation(CallbackInfoReturnable<List<String>> cir) {
if (MinecraftClient.getInstance().isInSingleplayer() || !BridgeSettings.getClassWrapper().showExtraInformationInDebugHud.getValue()) return;
if (MinecraftClient.getInstance().isInSingleplayer() || !BridgeSettings.INSTANCE.showExtraInformationInDebugHud.getValue()) return;
final List<String> information = new ArrayList<>();
if (MinecraftClient.getInstance().getNetworkHandler() != null) {

View File

@ -31,7 +31,7 @@ public class MixinDownloadingTerrainScreen {
@Inject(method = "render", at = @At("RETURN"))
public void renderClassicProgress(MatrixStack matrices, int mouseX, int mouseY, float delta, CallbackInfo ci) {
if (!BridgeSettings.getClassWrapper().showClassicLoadingProgressInConnectScreen.getValue()) return;
if (!BridgeSettings.INSTANCE.showClassicLoadingProgressInConnectScreen.getValue()) return;
ClassicProgressRenderer.renderProgress(matrices);
}

View File

@ -48,7 +48,7 @@ public abstract class MixinOptionsScreen extends Screen {
@Inject(method = "init", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/widget/GridWidget$Adder;add(Lnet/minecraft/client/gui/widget/ClickableWidget;)Lnet/minecraft/client/gui/widget/ClickableWidget;", ordinal = 10, shift = At.Shift.AFTER), locals = LocalCapture.CAPTURE_FAILHARD)
public void addValuesButton(CallbackInfo ci, GridWidget gridWidget, GridWidget.Adder adder) {
if (BridgeSettings.getClassWrapper().optionsButtonInGameOptions.getValue()) {
if (BridgeSettings.INSTANCE.optionsButtonInGameOptions.getValue()) {
adder.add(this.createButton(Text.literal("ViaFabricPlus").styled(style -> style.withColor(Formatting.GOLD)).append(" ").append("Settings..."), () -> SettingsScreen.get((OptionsScreen) (Object) this)));
if (ViaLoadingBase.getClassWrapper().getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_8) && MinecraftClient.getInstance().player != null) {

View File

@ -38,7 +38,7 @@ public class MixinBipedEntityModel<T extends LivingEntity> {
@Inject(method = "setAngles(Lnet/minecraft/entity/LivingEntity;FFFFF)V", at = @At(value = "FIELD", target = "Lnet/minecraft/client/model/ModelPart;roll:F", ordinal = 1, shift = At.Shift.AFTER))
public void addOldWalkAnimation(T livingEntity, float f, float g, float h, float i, float j, CallbackInfo ci) {
if (VisualSettings.getClassWrapper().oldWalkingAnimation.getValue()) {
if (VisualSettings.INSTANCE.oldWalkingAnimation.getValue()) {
this.rightArm.pitch = MathHelper.cos(f * 0.6662F + 3.1415927F) * 2.0F * g;
this.rightArm.roll = (MathHelper.cos(f * 0.2312F) + 1.0F) * 1.0F * g;

View File

@ -42,7 +42,7 @@ public class MixinCamera {
@Inject(method = "update", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/render/Camera;setPos(DDD)V", shift = At.Shift.BEFORE))
public void onUpdateHeight(BlockView area, Entity focusedEntity, boolean thirdPerson, boolean inverseView, float tickDelta, CallbackInfo ci) {
if (!DebugSettings.getClassWrapper().replaceSneaking.getValue() && DebugSettings.getClassWrapper().sneakInstant.getValue()) {
if (!DebugSettings.INSTANCE.replaceSneaking.getValue() && DebugSettings.INSTANCE.sneakInstant.getValue()) {
cameraY = lastCameraY = focusedEntity.getStandingEyeHeight();
}
}
@ -51,14 +51,14 @@ public class MixinCamera {
public void onUpdateEyeHeight(CallbackInfo ci) {
if (this.focusedEntity == null) return;
if (DebugSettings.getClassWrapper().replaceSneaking.getValue()) {
if (DebugSettings.INSTANCE.replaceSneaking.getValue()) {
ci.cancel();
this.lastCameraY = this.cameraY;
if (this.focusedEntity instanceof PlayerEntity player && !player.isSleeping()) {
if (player.isSneaking()) {
cameraY = 1.54F;
} else if (!DebugSettings.getClassWrapper().longSneaking.getValue()) {
} else if (!DebugSettings.INSTANCE.longSneaking.getValue()) {
cameraY = 1.62F;
} else if (cameraY < 1.62F) {
float delta = 1.62F - cameraY;

View File

@ -148,6 +148,6 @@ public abstract class MixinClientPlayNetworkHandler {
@Redirect(method = "onServerMetadata", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/packet/s2c/play/ServerMetadataS2CPacket;isSecureChatEnforced()Z"))
public boolean removeSecureChatWarning(ServerMetadataS2CPacket instance) {
return instance.isSecureChatEnforced() || VisualSettings.getClassWrapper().disableSecureChatWarning.getValue();
return instance.isSecureChatEnforced() || VisualSettings.INSTANCE.disableSecureChatWarning.getValue();
}
}

View File

@ -22,11 +22,10 @@ import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.api.type.Type;
import com.viaversion.viaversion.protocols.protocol1_16_2to1_16_1.ServerboundPackets1_16_2;
import com.viaversion.viaversion.protocols.protocol1_17to1_16_4.Protocol1_17To1_16_4;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.viafabricplus.injection.access.IClientPlayerEntity;
import de.florianmichael.viafabricplus.injection.access.IScreenHandler;
import de.florianmichael.viafabricplus.vialoadingbase.ViaLoadingBaseStartup;
import de.florianmichael.viafabricplus.vialoadingbase.provider.ViaFabricPlusHandItemProvider;
import de.florianmichael.viafabricplus.vialoadingbase.provider.viaversion.ViaFabricPlusHandItemProvider;
import de.florianmichael.viafabricplus.util.ItemTranslator;
import de.florianmichael.vialoadingbase.ViaLoadingBase;
import net.minecraft.client.MinecraftClient;

View File

@ -41,22 +41,22 @@ public abstract class MixinInGameHud {
@Inject(method = "renderExperienceBar", at = @At("HEAD"), cancellable = true)
public void removeExperienceBar(MatrixStack matrices, int x, CallbackInfo ci) {
if (VisualSettings.getClassWrapper().removeNewerHudElements.getValue()) ci.cancel();
if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) ci.cancel();
}
@Inject(method = "renderMountJumpBar", at = @At("HEAD"), cancellable = true)
public void removeMountJumpBar(JumpingMount mount, MatrixStack matrices, int x, CallbackInfo ci) {
if (VisualSettings.getClassWrapper().removeNewerHudElements.getValue()) ci.cancel();
if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) ci.cancel();
}
@Inject(method = "renderMountHealth", at = @At("HEAD"), cancellable = true)
public void removeMountHealth(MatrixStack matrices, CallbackInfo ci) {
if (VisualSettings.getClassWrapper().removeNewerHudElements.getValue()) ci.cancel();
if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) ci.cancel();
}
@Inject(method = "getHeartCount", at = @At("HEAD"), cancellable = true)
public void removeHungerBar(LivingEntity entity, CallbackInfoReturnable<Integer> cir) {
if (VisualSettings.getClassWrapper().removeNewerHudElements.getValue()) {
if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) {
cir.setReturnValue(1);
}
}
@ -65,7 +65,7 @@ public abstract class MixinInGameHud {
@Redirect(method = "renderStatusBars", at = @At(value = "FIELD", target = "Lnet/minecraft/client/gui/hud/InGameHud;scaledHeight:I", opcode = Opcodes.GETFIELD))
private int moveHealthDown(InGameHud instance) {
if (VisualSettings.getClassWrapper().removeNewerHudElements.getValue()) return scaledHeight + 6;
if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) return scaledHeight + 6;
return scaledHeight;
}
@ -73,7 +73,7 @@ public abstract class MixinInGameHud {
from = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;push(Ljava/lang/String;)V"),
to = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", ordinal = 0)), index = 1)
private int moveArmor(int old) {
if (VisualSettings.getClassWrapper().removeNewerHudElements.getValue()) return scaledWidth - old - 9;
if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) return scaledWidth - old - 9;
return old;
}
@ -81,7 +81,7 @@ public abstract class MixinInGameHud {
from = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;push(Ljava/lang/String;)V"),
to = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", ordinal = 0)), index = 2)
private int moveArmorDown(int old) {
if (VisualSettings.getClassWrapper().removeNewerHudElements.getValue()) return scaledWidth - 39 + 6;
if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) return scaledWidth - 39 + 6;
return old;
}
@ -89,7 +89,7 @@ public abstract class MixinInGameHud {
from = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;swap(Ljava/lang/String;)V", ordinal = 2),
to = @At(value = "INVOKE", target = "Lnet/minecraft/util/profiler/Profiler;pop()V")), index = 1)
private int moveAir(int old) {
if (VisualSettings.getClassWrapper().removeNewerHudElements.getValue()) return scaledWidth - old - 9;
if (VisualSettings.INSTANCE.removeNewerHudElements.getValue()) return scaledWidth - old - 9;
return old;
}
}

View File

@ -39,7 +39,7 @@ public class MixinItemRenderer {
@Inject(method = "getModel", at = @At("HEAD"), cancellable = true)
public void removeModel(ItemStack stack, World world, LivingEntity entity, int seed, CallbackInfoReturnable<BakedModel> cir) {
if (VisualSettings.getClassWrapper().replacePetrifiedOakSlab.getValue() && world != null /* world is null in gui rendering */ && stack.isOf(Items.PETRIFIED_OAK_SLAB)) {
if (VisualSettings.INSTANCE.replacePetrifiedOakSlab.getValue() && world != null /* world is null in gui rendering */ && stack.isOf(Items.PETRIFIED_OAK_SLAB)) {
cir.setReturnValue(this.models.getModelManager().getMissingModel());
}
}

View File

@ -99,14 +99,14 @@ public abstract class MixinMinecraftClient {
@Inject(method = "tick", at = @At(value = "FIELD", target = "Lnet/minecraft/client/MinecraftClient;currentScreen:Lnet/minecraft/client/gui/screen/Screen;",
ordinal = 4, shift = At.Shift.BEFORE))
public void injectTick(CallbackInfo ci) {
if (!DebugSettings.getClassWrapper().executeInputsInSync.getValue()) return;
if (!DebugSettings.INSTANCE.executeInputsInSync.getValue()) return;
SyncInputExecutor.callback();
}
@Inject(method = "handleInputEvents", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/network/ClientPlayerInteractionManager;hasRidingInventory()Z"))
private void onInventoryKeyPressed(CallbackInfo ci) throws Exception {
if (getNetworkHandler() != null && DebugSettings.getClassWrapper().sendOpenInventoryPacket.getValue()) {
if (getNetworkHandler() != null && DebugSettings.INSTANCE.sendOpenInventoryPacket.getValue()) {
final UserConnection viaConnection = MinecraftClient.getInstance().getNetworkHandler().getConnection().channel.attr(ViaLoadingBaseStartup.LOCAL_VIA_CONNECTION).get();
if (viaConnection != null && ViaLoadingBase.getClassWrapper().getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_11_1)) {

View File

@ -29,7 +29,7 @@ public class MixinPendingUpdateManager {
@Inject(method = "incrementSequence", at = @At(value = "FIELD", target = "Lnet/minecraft/client/network/PendingUpdateManager;pendingSequence:Z", shift = At.Shift.BEFORE), cancellable = true)
public void injectIncrementSequence(CallbackInfoReturnable<PendingUpdateManager> cir) {
if (DebugSettings.getClassWrapper().disableSequencing.getValue()) {
if (DebugSettings.INSTANCE.disableSequencing.getValue()) {
cir.setReturnValue((PendingUpdateManager) (Object) this);
}
}

View File

@ -33,7 +33,7 @@ public class MixinAbstractBlock {
@Inject(method = "calcBlockBreakingDelta", at = @At("HEAD"), cancellable = true)
public void fixLegacyMiningSpeed(BlockState state, PlayerEntity player, BlockView world, BlockPos pos, CallbackInfoReturnable<Float> cir) {
if (DebugSettings.getClassWrapper().legacyMiningSpeeds.getValue()) {
if (DebugSettings.INSTANCE.legacyMiningSpeeds.getValue()) {
final float hardness = state.getHardness(world, pos);
if (hardness == -1.0F) {
cir.setReturnValue(0.0F);

View File

@ -19,9 +19,8 @@ package de.florianmichael.viafabricplus.injection.mixin.fixes.entity;
import com.mojang.authlib.GameProfile;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.viafabricplus.definition.v1_8_x.ArmorPointsDefinition;
import de.florianmichael.viafabricplus.event.SkipIdlePacketListener;
import de.florianmichael.viafabricplus.event.SkipIdlePacketCallback;
import de.florianmichael.viafabricplus.injection.access.IClientPlayerEntity;
import de.florianmichael.viafabricplus.settings.groups.DebugSettings;
import de.florianmichael.viafabricplus.settings.groups.VisualSettings;
@ -114,10 +113,10 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity
this.networkHandler.sendPacket(new PlayerMoveC2SPacket.PositionAndOnGround(this.getX(), this.getY(), this.getZ(), this.onGround));
} else if (bl4) {
this.networkHandler.sendPacket(new PlayerMoveC2SPacket.LookAndOnGround(this.getYaw(), this.getPitch(), this.onGround));
} else if (this.lastOnGround != this.onGround || DebugSettings.getClassWrapper().sendIdlePacket.getValue()) {
} else if (this.lastOnGround != this.onGround || DebugSettings.INSTANCE.sendIdlePacket.getValue()) {
this.networkHandler.sendPacket(new PlayerMoveC2SPacket.OnGroundOnly(this.onGround));
} else {
ViaFabricPlus.INSTANCE.getEventDispatcher().post(new SkipIdlePacketListener.SkipIdlePacketEvent());
SkipIdlePacketCallback.EVENT.invoker().onSkipIdlePacket();
}
if (ViaLoadingBase.getClassWrapper().getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_8)) {
++this.ticksSinceLastPositionPacketSent;
@ -208,7 +207,7 @@ public abstract class MixinClientPlayerEntity extends AbstractClientPlayerEntity
@Override
public int getArmor() {
if (VisualSettings.getClassWrapper().emulateArmorHud.getValue()) {
if (VisualSettings.INSTANCE.emulateArmorHud.getValue()) {
return ArmorPointsDefinition.sum();
}
return super.getArmor();

View File

@ -105,7 +105,7 @@ public abstract class MixinPlayerEntity extends LivingEntity {
// Copyright Gaming32 - LICENSE_GENERAL_MIT file
@Inject(method = "getHurtSound", at = @At("HEAD"), cancellable = true)
public void replaceSound(DamageSource source, CallbackInfoReturnable<SoundEvent> cir) {
if (VisualSettings.getClassWrapper().replaceHurtSoundWithOOFSound.getValue()) {
if (VisualSettings.INSTANCE.replaceHurtSoundWithOOFSound.getValue()) {
cir.setReturnValue(LegacySounds.RANDOM_HURT);
}
}

View File

@ -33,7 +33,7 @@ public class MixinKeyboard {
@Redirect(method = "*", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;execute(Ljava/lang/Runnable;)V"))
public void redirectSync(MinecraftClient instance, Runnable runnable) {
if (DebugSettings.getClassWrapper().executeInputsInSync.getValue()) {
if (DebugSettings.INSTANCE.executeInputsInSync.getValue()) {
SyncInputExecutor.trackKeyboardInteraction(runnable);
return;
}

View File

@ -30,7 +30,7 @@ public class MixinMouse {
@Redirect(method = { "method_29615", "method_22685", "method_22684" }, at = @At(value = "INVOKE", target = "Lnet/minecraft/client/MinecraftClient;execute(Ljava/lang/Runnable;)V"))
public void redirectSync(MinecraftClient instance, Runnable runnable) {
if (DebugSettings.getClassWrapper().executeInputsInSync.getValue()) {
if (DebugSettings.INSTANCE.executeInputsInSync.getValue()) {
SyncInputExecutor.trackMouseInteraction(runnable);
return;
}

View File

@ -30,7 +30,7 @@ public class MixinItemCooldownManager {
@Inject(method = "set", at = @At("HEAD"), cancellable = true)
public void injectSet(Item item, int duration, CallbackInfo ci) {
if (DebugSettings.getClassWrapper().removeCooldowns.getValue()) {
if (DebugSettings.INSTANCE.removeCooldowns.getValue()) {
ci.cancel();
}
}

View File

@ -31,7 +31,7 @@ public class MixinItemGroup_EntriesImpl {
@Redirect(method = "add", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/Item;isEnabled(Lnet/minecraft/resource/featuretoggle/FeatureSet;)Z"))
public boolean removeUnknownItems(Item instance, FeatureSet featureSet) {
if (!GeneralSettings.getClassWrapper().removeNotAvailableItemsFromCreativeTab.getValue() || MinecraftClient.getInstance().isInSingleplayer()) return instance.isEnabled(featureSet);
if (!GeneralSettings.INSTANCE.removeNotAvailableItemsFromCreativeTab.getValue() || MinecraftClient.getInstance().isInSingleplayer()) return instance.isEnabled(featureSet);
if (ItemReleaseVersionDefinition.INSTANCE.getCurrentMap().contains(instance)) return instance.isEnabled(featureSet);
return false;

View File

@ -40,12 +40,12 @@ public class MixinItemGroups {
@Redirect(method = "displayParametersMatch", at = @At(value = "INVOKE", target = "Lnet/minecraft/resource/featuretoggle/FeatureSet;equals(Ljava/lang/Object;)Z"))
private static boolean adjustLastVersionMatchCheck(FeatureSet instance, Object o) {
return instance.equals(o) && viafabricplus_version == ViaLoadingBase.getClassWrapper().getTargetVersion() && viafabricplus_state == GeneralSettings.getClassWrapper().removeNotAvailableItemsFromCreativeTab.getValue();
return instance.equals(o) && viafabricplus_version == ViaLoadingBase.getClassWrapper().getTargetVersion() && viafabricplus_state == GeneralSettings.INSTANCE.removeNotAvailableItemsFromCreativeTab.getValue();
}
@Inject(method = "updateDisplayParameters", at = @At(value = "INVOKE", target = "Lnet/minecraft/item/ItemGroups;updateEntries(Lnet/minecraft/resource/featuretoggle/FeatureSet;Z)V", shift = At.Shift.BEFORE))
private static void trackLastVersion(FeatureSet enabledFeatures, boolean operatorEnabled, CallbackInfoReturnable<Boolean> cir) {
viafabricplus_version = ViaLoadingBase.getClassWrapper().getTargetVersion();
viafabricplus_state = GeneralSettings.getClassWrapper().removeNotAvailableItemsFromCreativeTab.getValue();
viafabricplus_state = GeneralSettings.INSTANCE.removeNotAvailableItemsFromCreativeTab.getValue();
}
}

View File

@ -65,7 +65,7 @@ public abstract class MixinItemStack {
@SuppressWarnings({"InvalidInjectorMethodSignature", "MixinAnnotationTarget"})
@ModifyVariable(method = "getAttributeModifiers", ordinal = 0, at = @At(value = "STORE", ordinal = 1))
private Multimap<EntityAttribute, EntityAttributeModifier> modifyVariableGetAttributeModifiers(Multimap<EntityAttribute, EntityAttributeModifier> modifiers) {
if (!DebugSettings.getClassWrapper().replaceAttributeModifiers.getValue() || modifiers.isEmpty()) return modifiers;
if (!DebugSettings.INSTANCE.replaceAttributeModifiers.getValue() || modifiers.isEmpty()) return modifiers;
modifiers = HashMultimap.create(modifiers);
modifiers.removeAll(EntityAttributes.GENERIC_ATTACK_DAMAGE);

View File

@ -42,7 +42,7 @@ public class MixinChatScreen {
@Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHud;getIndicatorAt(DD)Lnet/minecraft/client/gui/hud/MessageIndicator;"))
public MessageIndicator removeIndicator(ChatHud instance, double mouseX, double mouseY) {
if (VisualSettings.getClassWrapper().hideSignatureIndicator.getValue()) {
if (VisualSettings.INSTANCE.hideSignatureIndicator.getValue()) {
return null;
}
return instance.getIndicatorAt(mouseX, mouseY);

View File

@ -43,7 +43,7 @@ public abstract class MixinCommandBlockScreen {
@Inject(method = "init", at = @At("TAIL"))
private void injectInit(CallbackInfo ci) {
if (VisualSettings.getClassWrapper().removeNewerFeaturesFromCommandBlockScreen.getValue()) {
if (VisualSettings.INSTANCE.removeNewerFeaturesFromCommandBlockScreen.getValue()) {
modeButton.visible = false;
conditionalModeButton.visible = false;
redstoneTriggerButton.visible = false;

View File

@ -31,7 +31,7 @@ public class MixinCreativeInventoryScreen {
@Inject(method = "init", at = @At("RETURN"))
public void replaceCreativeMenu(CallbackInfo ci) {
if (VisualSettings.getClassWrapper().replaceCreativeInventory.getValue()) {
if (VisualSettings.INSTANCE.replaceCreativeInventory.getValue()) {
MinecraftClient.getInstance().setScreen(ClassicItemSelectionScreen.INSTANCE);
}
}

View File

@ -50,7 +50,7 @@ public class MixinJigsawBlockScreen extends Screen {
@Inject(method = "init", at = @At("RETURN"))
public void injectInit(CallbackInfo ci) {
if (VisualSettings.getClassWrapper().removeNewerFeaturesFromJigsawScreen.getValue()) {
if (VisualSettings.INSTANCE.removeNewerFeaturesFromJigsawScreen.getValue()) {
nameField.active = false;
jointRotationButton.active = false;
int index = children().indexOf(jointRotationButton);
@ -62,7 +62,7 @@ public class MixinJigsawBlockScreen extends Screen {
@Inject(method = "render", at = @At("HEAD"))
public void injectRender(MatrixStack matrices, int mouseX, int mouseY, float delta, CallbackInfo ci) {
if (VisualSettings.getClassWrapper().removeNewerFeaturesFromJigsawScreen.getValue()) {
if (VisualSettings.INSTANCE.removeNewerFeaturesFromJigsawScreen.getValue()) {
nameField.setText(targetField.getText());
}
}

View File

@ -30,7 +30,7 @@ public class MixinChatHud {
@Redirect(method = "render", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHudLine$Visible;indicator()Lnet/minecraft/client/gui/hud/MessageIndicator;"), require = 0)
public MessageIndicator removeIndicators(ChatHudLine.Visible instance) {
if (VisualSettings.getClassWrapper().hideSignatureIndicator.getValue()) {
if (VisualSettings.INSTANCE.hideSignatureIndicator.getValue()) {
return null;
}
return instance.indicator();

View File

@ -51,7 +51,7 @@ public abstract class MixinMerchantScreen extends HandledScreen<MerchantScreenHa
@Inject(method = "syncRecipeIndex", at = @At("HEAD"))
public void smoothOutRecipeIndex(CallbackInfo ci) {
if (DebugSettings.getClassWrapper().smoothOutMerchantScreens.getValue()) {
if (DebugSettings.INSTANCE.smoothOutMerchantScreens.getValue()) {
if (viafabricplus_previousRecipeIndex != selectedIndex) {
int direction = viafabricplus_previousRecipeIndex < selectedIndex ? 1 : -1;
for (int smooth = viafabricplus_previousRecipeIndex + direction /* don't send the page we already are on */; smooth != selectedIndex; smooth += direction) {

View File

@ -17,9 +17,8 @@
*/
package de.florianmichael.viafabricplus.injection.mixin.fixes.vialegacy;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.viafabricplus.injection.access.IExtensionProtocolMetadataStorage;
import de.florianmichael.viafabricplus.event.LoadClassicProtocolExtensionListener;
import de.florianmichael.viafabricplus.event.LoadClassicProtocolExtensionCallback;
import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.data.ClassicProtocolExtension;
import net.raphimc.vialegacy.protocols.classic.protocolc0_28_30toc0_28_30cpe.storage.ExtensionProtocolMetadataStorage;
import org.spongepowered.asm.mixin.Final;
@ -38,7 +37,7 @@ public class MixinExtensionProtocolMetadataStorage implements IExtensionProtocol
@Inject(method = "addServerExtension", at = @At("RETURN"))
public void updateChatLengthDefinition(ClassicProtocolExtension extension, int version, CallbackInfo ci) {
ViaFabricPlus.INSTANCE.getEventDispatcher().post(new LoadClassicProtocolExtensionListener.LoadClassicProtocolExtensionEvent(extension));
LoadClassicProtocolExtensionCallback.EVENT.invoker().onLoadClassicProtocolExtension(extension);
}
@Override

View File

@ -62,7 +62,7 @@ public class ProtocolSyncBooleanSettingRenderer extends AbstractSettingRenderer
final int length = textRenderer.drawWithShadow(matrices, Formatting.GRAY + this.value.getName(), 3, entryHeight / 2F - textRenderer.fontHeight / 2F, -1);
textRenderer.drawWithShadow(matrices, "(" + this.value.getProtocolRange().toString() + ")", length + 2, entryHeight / 2F - textRenderer.fontHeight / 2F, -1);
if (GeneralSettings.getClassWrapper().automaticallyChangeValuesBasedOnTheCurrentVersion.getValue()) color = color.darker().darker();
if (GeneralSettings.INSTANCE.automaticallyChangeValuesBasedOnTheCurrentVersion.getValue()) color = color.darker().darker();
textRenderer.drawWithShadow(matrices, text, entryWidth - textRenderer.getWidth(text) - 3 - 3, entryHeight / 2F - textRenderer.fontHeight / 2F, color.getRGB());
matrices.pop();

View File

@ -21,7 +21,7 @@ import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.JsonObject;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.viafabricplus.event.InitializeSettingsListener;
import de.florianmichael.viafabricplus.event.InitializeSettingsCallback;
import de.florianmichael.viafabricplus.settings.base.AbstractSetting;
import de.florianmichael.viafabricplus.settings.base.SettingGroup;
import de.florianmichael.viafabricplus.settings.groups.*;
@ -41,14 +41,14 @@ public class SettingsSystem {
public void init() {
addGroup(
GeneralSettings.getClassWrapper(),
BridgeSettings.getClassWrapper(),
MPPassSettings.getClassWrapper(),
VisualSettings.getClassWrapper(),
DebugSettings.getClassWrapper()
GeneralSettings.INSTANCE,
BridgeSettings.INSTANCE,
MPPassSettings.INSTANCE,
VisualSettings.INSTANCE,
DebugSettings.INSTANCE
);
ViaFabricPlus.INSTANCE.getEventDispatcher().post(new InitializeSettingsListener.InitializeSettingsEvent());
InitializeSettingsCallback.EVENT.invoker().onInitializeSettings();
loadConfig();
Runtime.getRuntime().addShutdownHook(new Thread(this::save));

View File

@ -21,7 +21,7 @@ import de.florianmichael.viafabricplus.settings.base.SettingGroup;
import de.florianmichael.viafabricplus.settings.type_impl.BooleanSetting;
public class BridgeSettings extends SettingGroup {
private final static BridgeSettings self = new BridgeSettings();
public final static BridgeSettings INSTANCE = new BridgeSettings();
public final BooleanSetting optionsButtonInGameOptions = new BooleanSetting(this, "Options button in game options", true);
public final BooleanSetting showExtraInformationInDebugHud = new BooleanSetting(this, "Show extra information in Debug Hud", true);
@ -30,8 +30,4 @@ public class BridgeSettings extends SettingGroup {
public BridgeSettings() {
super("Bridge");
}
public static BridgeSettings getClassWrapper() {
return BridgeSettings.self;
}
}

View File

@ -24,7 +24,7 @@ import de.florianmichael.vialoadingbase.platform.ProtocolRange;
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
public class DebugSettings extends SettingGroup {
public static final DebugSettings self = new DebugSettings();
public final static DebugSettings INSTANCE = new DebugSettings();
// 1.19 -> 1.18.2
public final ProtocolSyncBooleanSetting disableSequencing = new ProtocolSyncBooleanSetting(this, "Disable sequencing", ProtocolRange.andOlder(ProtocolVersion.v1_18_2));
@ -54,8 +54,4 @@ public class DebugSettings extends SettingGroup {
public DebugSettings() {
super("Debug");
}
public static DebugSettings getClassWrapper() {
return DebugSettings.self;
}
}

View File

@ -22,7 +22,7 @@ import de.florianmichael.viafabricplus.settings.type_impl.BooleanSetting;
import de.florianmichael.viafabricplus.settings.type_impl.ModeSetting;
public class GeneralSettings extends SettingGroup {
private final static GeneralSettings self = new GeneralSettings();
public final static GeneralSettings INSTANCE = new GeneralSettings();
public final ModeSetting mainButtonOrientation = new ModeSetting(this, "Main button orientation", "Left; Top", "Right; Top", "Left; Bottom", "Right: Bottom");
public final BooleanSetting removeNotAvailableItemsFromCreativeTab = new BooleanSetting(this, "Remove not available items from creative tab", true);
@ -33,8 +33,4 @@ public class GeneralSettings extends SettingGroup {
super("General");
mainButtonOrientation.setValue(1); // Default value
}
public static GeneralSettings getClassWrapper() {
return GeneralSettings.self;
}
}

View File

@ -21,7 +21,7 @@ import de.florianmichael.viafabricplus.settings.base.SettingGroup;
import de.florianmichael.viafabricplus.settings.type_impl.BooleanSetting;
public class MPPassSettings extends SettingGroup {
private final static MPPassSettings self = new MPPassSettings();
public final static MPPassSettings INSTANCE = new MPPassSettings();
public final BooleanSetting useBetaCraftAuthentication = new BooleanSetting(this, "Use BetaCraft authentication", true);
public final BooleanSetting allowViaLegacyToCallJoinServerToVerifySession = new BooleanSetting(this, "Allow ViaLegacy to call joinServer() to verify session", true);
@ -30,8 +30,4 @@ public class MPPassSettings extends SettingGroup {
public MPPassSettings() {
super("MP Pass");
}
public static MPPassSettings getClassWrapper() {
return MPPassSettings.self;
}
}

View File

@ -24,7 +24,7 @@ import de.florianmichael.vialoadingbase.platform.ProtocolRange;
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
public class VisualSettings extends SettingGroup {
public final static VisualSettings self = new VisualSettings();
public final static VisualSettings INSTANCE = new VisualSettings();
// 1.19.2 -> 1.19
public final ProtocolSyncBooleanSetting disableSecureChatWarning = new ProtocolSyncBooleanSetting(this, "Disable secure chat warning", ProtocolRange.andOlder(ProtocolVersion.v1_19));
@ -55,8 +55,4 @@ public class VisualSettings extends SettingGroup {
public VisualSettings() {
super("Visual");
}
public static VisualSettings getClassWrapper() {
return VisualSettings.self;
}
}

View File

@ -46,7 +46,7 @@ public class ProtocolSyncBooleanSetting extends BooleanSetting {
@Override
public Boolean getValue() {
if (GeneralSettings.getClassWrapper().automaticallyChangeValuesBasedOnTheCurrentVersion.getValue()) return this.getProtocolRange().contains(ViaLoadingBase.getClassWrapper().getTargetVersion());
if (GeneralSettings.INSTANCE.automaticallyChangeValuesBasedOnTheCurrentVersion.getValue()) return this.getProtocolRange().contains(ViaLoadingBase.getClassWrapper().getTargetVersion());
return super.getValue();
}

View File

@ -23,12 +23,16 @@ import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.HandItemPr
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.MovementTransmitterProvider;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.viafabricplus.definition.v1_19_0.provider.CommandArgumentsProvider;
import de.florianmichael.viafabricplus.event.ChangeProtocolVersionListener;
import de.florianmichael.viafabricplus.event.FinishViaLoadingBaseStartupListener;
import de.florianmichael.viafabricplus.event.ChangeProtocolVersionCallback;
import de.florianmichael.viafabricplus.event.FinishViaLoadingBaseStartupCallback;
import de.florianmichael.viafabricplus.vialoadingbase.platform.ViaAprilFoolsPlatformImpl;
import de.florianmichael.viafabricplus.vialoadingbase.platform.ViaBedrockPlatformImpl;
import de.florianmichael.viafabricplus.vialoadingbase.platform.ViaLegacyPlatformImpl;
import de.florianmichael.viafabricplus.vialoadingbase.provider.*;
import de.florianmichael.viafabricplus.vialoadingbase.provider.viabedrock.ViaFabricPlusNettyPipelineProvider;
import de.florianmichael.viafabricplus.vialoadingbase.provider.vialegacy.*;
import de.florianmichael.viafabricplus.vialoadingbase.provider.viaversion.ViaFabricPlusHandItemProvider;
import de.florianmichael.viafabricplus.vialoadingbase.provider.viaversion.ViaFabricPlusMovementTransmitterProvider;
import de.florianmichael.vialoadingbase.ViaLoadingBase;
import de.florianmichael.vialoadingbase.platform.SubPlatform;
import io.netty.util.AttributeKey;
@ -94,8 +98,9 @@ public class ViaLoadingBaseStartup {
providers.use(ClassicCustomCommandProvider.class, new ViaFabricPlusClassicCustomCommandProvider());
providers.use(NettyPipelineProvider.class, new ViaFabricPlusNettyPipelineProvider());
});
builder = builder.onProtocolReload(protocolVersion -> ViaFabricPlus.INSTANCE.getEventDispatcher().post(new ChangeProtocolVersionListener.ChangeProtocolVersionEvent(protocolVersion)));
builder = builder.onProtocolReload(protocolVersion -> ChangeProtocolVersionCallback.EVENT.invoker().onChangeProtocolVersion(protocolVersion));
builder.build();
ViaFabricPlus.INSTANCE.getEventDispatcher().post(new FinishViaLoadingBaseStartupListener.FinishViaLoadingBaseStartupEvent());
FinishViaLoadingBaseStartupCallback.EVENT.invoker().onFinishViaLoadingBaseStartup();
}
}

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.platform.raknet;
package de.florianmichael.viafabricplus.vialoadingbase.constants;
public class BedrockRakNetConstants {

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.platform.pre_netty;
package de.florianmichael.viafabricplus.vialoadingbase.constants;
public class PreNettyConstants {

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.platform.raknet;
package de.florianmichael.viafabricplus.vialoadingbase.platform.viabedrock;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelOutboundHandlerAdapter;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.platform.raknet;
package de.florianmichael.viafabricplus.vialoadingbase.platform.viabedrock;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.platform.raknet;
package de.florianmichael.viafabricplus.vialoadingbase.platform.viabedrock;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.CompositeByteBuf;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.platform.raknet;
package de.florianmichael.viafabricplus.vialoadingbase.platform.viabedrock;
import java.net.InetAddress;
import java.util.ArrayList;

View File

@ -16,7 +16,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.platform.raknet.library_fix;
package de.florianmichael.viafabricplus.vialoadingbase.platform.viabedrock.library_fix;
import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;

View File

@ -16,7 +16,7 @@
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.platform.raknet.library_fix;
package de.florianmichael.viafabricplus.vialoadingbase.platform.viabedrock.library_fix;
import io.netty.buffer.ByteBuf;
import io.netty.buffer.ByteBufUtil;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.platform.pre_netty;
package de.florianmichael.viafabricplus.vialoadingbase.platform.vialegacy;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.connection.UserConnection;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.platform.pre_netty;
package de.florianmichael.viafabricplus.vialoadingbase.platform.vialegacy;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.connection.UserConnection;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.provider;
package de.florianmichael.viafabricplus.vialoadingbase.provider.viabedrock;
import com.viaversion.viaversion.api.connection.UserConnection;
import de.florianmichael.viafabricplus.ViaFabricPlus;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.provider;
package de.florianmichael.viafabricplus.vialoadingbase.provider.vialegacy;
import com.viaversion.viaversion.api.connection.UserConnection;
import de.florianmichael.viafabricplus.definition.c0_30.command.ClassicProtocolCommands;
@ -31,7 +31,7 @@ public class ViaFabricPlusClassicCustomCommandProvider extends ClassicCustomComm
@Override
public boolean handleChatMessage(UserConnection user, String message) {
if (!GeneralSettings.getClassWrapper().allowClassicProtocolCommandUsage.getValue()) return super.handleChatMessage(user, message);
if (!GeneralSettings.INSTANCE.allowClassicProtocolCommandUsage.getValue()) return super.handleChatMessage(user, message);
try {
if (message.startsWith(ClassicProtocolCommands.COMMAND_PREFIX)) {
@ -39,7 +39,7 @@ public class ViaFabricPlusClassicCustomCommandProvider extends ClassicCustomComm
final String[] input = message.split(" ");
if (input.length == 0) return super.handleChatMessage(user, message);
for (ICommand command : ClassicProtocolCommands.commands) {
for (ICommand command : ClassicProtocolCommands.INSTANCE.commands) {
if (input[0].equalsIgnoreCase(command.name())) {
command.execute(Arrays.copyOfRange(input, 1, input.length));
return true;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.provider;
package de.florianmichael.viafabricplus.vialoadingbase.provider.vialegacy;
import com.google.common.hash.Hashing;
import com.google.common.io.Resources;
@ -35,7 +35,7 @@ public class ViaFabricPlusClassicMPPassProvider extends ClassicMPPassProvider {
@Override
public String getMpPass(UserConnection user) {
if (MPPassSettings.getClassWrapper().useBetaCraftAuthentication.getValue()) {
if (MPPassSettings.INSTANCE.useBetaCraftAuthentication.getValue()) {
final HandshakeStorage handshakeStorage = user.get(HandshakeStorage.class);
return getBetaCraftMpPass(user, user.getProtocolInfo().getUsername(), handshakeStorage.getHostname(), handshakeStorage.getPort());
} else {

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.provider;
package de.florianmichael.viafabricplus.vialoadingbase.provider.vialegacy;
import com.viaversion.viaversion.api.connection.UserConnection;
import net.raphimc.vialegacy.protocols.classic.protocola1_0_15toc0_28_30.providers.ClassicWorldHeightProvider;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.provider;
package de.florianmichael.viafabricplus.vialoadingbase.provider.vialegacy;
import com.viaversion.viaversion.api.connection.UserConnection;
import de.florianmichael.viafabricplus.ViaFabricPlus;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.provider;
package de.florianmichael.viafabricplus.vialoadingbase.provider.vialegacy;
import com.mojang.authlib.Agent;
import com.mojang.authlib.GameProfileRepository;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.provider;
package de.florianmichael.viafabricplus.vialoadingbase.provider.vialegacy;
import com.viaversion.viaversion.api.connection.UserConnection;
import de.florianmichael.viafabricplus.ViaFabricPlus;
@ -30,14 +30,14 @@ public class ViaFabricPlusOldAuthProvider extends OldAuthProvider {
@Override
public void sendAuthRequest(UserConnection user, String serverId) throws Throwable {
if (!MPPassSettings.getClassWrapper().allowViaLegacyToCallJoinServerToVerifySession.getValue()) return;
if (!MPPassSettings.INSTANCE.allowViaLegacyToCallJoinServerToVerifySession.getValue()) return;
final MinecraftClient mc = MinecraftClient.getInstance();
try {
mc.getSessionService().joinServer(mc.getSession().getProfile(), mc.getSession().getAccessToken(), serverId);
} catch (Exception e) {
if (MPPassSettings.getClassWrapper().disconnectIfJoinServerCallFails.getValue()) {
if (MPPassSettings.INSTANCE.disconnectIfJoinServerCallFails.getValue()) {
user.getChannel().attr(ViaLoadingBaseStartup.LOCAL_MINECRAFT_CONNECTION).get().disconnect(Text.literal(ScreenUtil.prefixedMessage("ViaLegacy fails to verify your session! Please log in into an Account or disable the BetaCraft authentication in the ViaFabricPlus Settings")));
} else {
e.printStackTrace();

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.provider;
package de.florianmichael.viafabricplus.vialoadingbase.provider.viaversion;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.minecraft.item.Item;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.provider;
package de.florianmichael.viafabricplus.vialoadingbase.provider.viaversion;
import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.protocols.protocol1_9to1_8.providers.MovementTransmitterProvider;

View File

@ -15,7 +15,7 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
package de.florianmichael.viafabricplus.vialoadingbase.platform;
package de.florianmichael.viafabricplus.vialoadingbase.replacement;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.connection.UserConnection;