added more Documentation, updated ViaLoadingBase

This commit is contained in:
FlorianMichael 2023-02-26 22:36:22 +01:00
parent b1b36d6141
commit 25c30ed9d7
14 changed files with 89 additions and 74 deletions

View File

@ -37,7 +37,7 @@ ViaFabricPlus uses Gradle, to make sure that it is installed properly you can ch
Values are optional settings that can turn fixes on and off, originally they were used for debugging<br>
![](/image/values.png)
## Addon-API
## Addons
To make a ViaFabricPlus addon you just have to implement the ViaFabricPlusAddon interface in your main class:
```java
package net.example;
@ -66,7 +66,43 @@ To load the addon you have to specify the addon main class as entrypoint in your
}
```
### Create Setting Group
### 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
public class Example {
static {
IdlePacketExecutor.registerIdlePacketSkipExecute(() -> {
// Called when the idle packet is skipped
});
}
}
```
In case you need the release version of a material, you can do that:
```java
public class Example {
static {
final ProtocolRange range = ItemReleaseVersionDefinition.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.
// https://github.com/FlorianMichael/ViaLoadingBase
}
}
```
To get the current Maximum Chat Length you can do this:
```java
public class Example {
static {
final int maxLength = ChatLengthDefinition.getMaxLength();
}
}
```
To create a setting group, you can simply use the SettingGroup class:
```java
public class ExampleSettingGroup extends SettingGroup {

View File

@ -5,11 +5,11 @@ minecraft_version=1.19.3
yarn_mappings=1.19.3+build.5
loader_version=0.14.14
mod_version=1.5.1
mod_version=1.5.3
maven_group=de.florianmichael
archives_base_name=viafabricplus
vialoadingbase_version=f4f9949531
vialoadingbase_version=8df0605c3d
viaversion_version=4.6.0-23w07a-SNAPSHOT
viabackwards_version=4.6.0-23w07a-SNAPSHOT
vialegacy_version=29a7082d7f

View File

@ -1,8 +1,8 @@
package de.florianmichael.viafabricplus.definition;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.viafabricplus.platform.ProtocolRange;
import de.florianmichael.vialoadingbase.platform.ComparableProtocolVersion;
import de.florianmichael.vialoadingbase.platform.ProtocolRange;
import net.minecraft.item.Item;
import net.minecraft.item.Items;
import net.minecraft.registry.Registries;
@ -1291,6 +1291,10 @@ public class ItemReleaseVersionDefinition {
itemMap.put(item, ranges);
}
public static Map<Item, ProtocolRange[]> getItemMap() {
return itemMap;
}
public static List<Item> getCurrentMap() {
return currentMap;
}

View File

@ -0,0 +1,8 @@
package de.florianmichael.viafabricplus.definition;
public class MCConstants {
public static double getSoulSandMultiplier() {
return 0.4D;
}
}

View File

@ -1,14 +0,0 @@
package de.florianmichael.viafabricplus.definition.v1_14_4;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.Vec3d;
public class SoulSandVelocityHandler {
public static void handleVelocity(final Entity entity) {
final Vec3d velocity = entity.getVelocity();
double multiplier = 0.4D;
entity.setVelocity(velocity.getX() * multiplier, velocity.getY(), velocity.getZ() * multiplier);
}
}

View File

@ -8,11 +8,13 @@ import com.viaversion.viaversion.protocols.protocol1_12to1_11_1.Protocol1_12To1_
import com.viaversion.viaversion.protocols.protocol1_9_3to1_9_1_2.ServerboundPackets1_9_3;
import de.florianmichael.viafabricplus.ViaFabricPlus;
import de.florianmichael.vialoadingbase.ViaLoadingBase;
import net.minecraft.client.MinecraftClient;
import net.minecraft.client.network.ClientPlayNetworkHandler;
@SuppressWarnings("DataFlowIssue")
public class InventoryPacketSender {
public static void sendOpenInventoryAchievement(final ClientPlayNetworkHandler clientPlayNetworkHandler) throws Exception {
final UserConnection viaConnection = clientPlayNetworkHandler.getConnection().channel.attr(ViaFabricPlus.LOCAL_VIA_CONNECTION).get();
public static void sendOpenInventoryAchievement() throws Exception {
final UserConnection viaConnection = MinecraftClient.getInstance().getNetworkHandler().getConnection().channel.attr(ViaFabricPlus.LOCAL_VIA_CONNECTION).get();
if (viaConnection != null && ViaLoadingBase.getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_11_1)) {
final PacketWrapper clientStatus = PacketWrapper.create(ServerboundPackets1_9_3.CLIENT_STATUS, viaConnection);

View File

@ -0,0 +1,22 @@
package de.florianmichael.viafabricplus.injection.mixin.fixes;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.vialoadingbase.ViaLoadingBase;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.predicate.entity.EntityPredicates;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;
@Mixin(EntityPredicates.class)
public class MixinEntityPredicates {
@SuppressWarnings("target")
@Redirect(method = "method_5915(Lnet/minecraft/entity/Entity;Lnet/minecraft/scoreboard/AbstractTeam;Lnet/minecraft/scoreboard/AbstractTeam$CollisionRule;Lnet/minecraft/entity/Entity;)Z", at = @At(value = "INVOKE", target = "Lnet/minecraft/entity/player/PlayerEntity;isMainPlayer()Z"))
private static boolean makeMainPlayerUnpushable(PlayerEntity player) {
if (ViaLoadingBase.getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_8)) {
return false;
}
return player.isMainPlayer();
}
}

View File

@ -83,6 +83,6 @@ public abstract class MixinMinecraftClient {
@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) InventoryPacketSender.sendOpenInventoryAchievement(getNetworkHandler());
if (getNetworkHandler() != null) InventoryPacketSender.sendOpenInventoryAchievement();
}
}

View File

@ -1,13 +1,14 @@
package de.florianmichael.viafabricplus.injection.mixin.fixes.block;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.viafabricplus.definition.v1_14_4.SoulSandVelocityHandler;
import de.florianmichael.viafabricplus.definition.MCConstants;
import de.florianmichael.vialoadingbase.ViaLoadingBase;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
import net.minecraft.block.SoulSandBlock;
import net.minecraft.entity.Entity;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
import net.minecraft.world.World;
import org.spongepowered.asm.mixin.Mixin;
@ -23,7 +24,9 @@ public class MixinSoulSandBlock extends Block {
super.onEntityCollision(state, world, pos, entity);
if (ViaLoadingBase.getTargetVersion().isOlderThanOrEqualTo(ProtocolVersion.v1_14_4)) {
SoulSandVelocityHandler.handleVelocity(entity);
final Vec3d velocity = entity.getVelocity();
entity.setVelocity(velocity.getX() * MCConstants.getSoulSandMultiplier(), velocity.getY(), velocity.getZ() * MCConstants.getSoulSandMultiplier());
}
}

View File

@ -1,47 +0,0 @@
package de.florianmichael.viafabricplus.platform;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.vialoadingbase.platform.ComparableProtocolVersion;
import de.florianmichael.vialoadingbase.platform.InternalProtocolList;
public class ProtocolRange {
private final ComparableProtocolVersion lowerBound;
private final ComparableProtocolVersion upperBound;
public ProtocolRange(ProtocolVersion lowerBound, ProtocolVersion upperBound) {
if (lowerBound == null && upperBound == null) {
throw new RuntimeException("Invalid protocol range");
}
this.lowerBound = InternalProtocolList.fromProtocolVersion(lowerBound);
this.upperBound = InternalProtocolList.fromProtocolVersion(upperBound);
}
public static ProtocolRange andNewer(final ProtocolVersion version) {
return new ProtocolRange(null, version);
}
public static ProtocolRange singleton(final ProtocolVersion version) {
return new ProtocolRange(version, version);
}
public static ProtocolRange andOlder(final ProtocolVersion version) {
return new ProtocolRange(version, null);
}
public boolean contains(final ComparableProtocolVersion protocolVersion) {
if (this.lowerBound != null && protocolVersion.getIndex() < lowerBound.getIndex())
return false;
if (this.upperBound != null && protocolVersion.getIndex() > upperBound.getIndex())
return false;
return true;
}
@Override
public String toString() {
if (lowerBound == null) return upperBound.getName() + "+";
if (upperBound == null) return lowerBound.getName() + "-";
if (lowerBound == upperBound) return lowerBound.getName();
return lowerBound.getName() + " - " + upperBound.getName();
}
}

View File

@ -1,9 +1,9 @@
package de.florianmichael.viafabricplus.setting.groups;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.viafabricplus.platform.ProtocolRange;
import de.florianmichael.viafabricplus.setting.SettingGroup;
import de.florianmichael.viafabricplus.setting.impl.ProtocolSyncBooleanSetting;
import de.florianmichael.vialoadingbase.platform.ProtocolRange;
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
public class DebugSettings extends SettingGroup {

View File

@ -1,9 +1,9 @@
package de.florianmichael.viafabricplus.setting.groups;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import de.florianmichael.viafabricplus.platform.ProtocolRange;
import de.florianmichael.viafabricplus.setting.SettingGroup;
import de.florianmichael.viafabricplus.setting.impl.ProtocolSyncBooleanSetting;
import de.florianmichael.vialoadingbase.platform.ProtocolRange;
import net.raphimc.vialegacy.api.LegacyProtocolVersion;
public class VisualSettings extends SettingGroup {

View File

@ -1,10 +1,10 @@
package de.florianmichael.viafabricplus.setting.impl;
import com.google.gson.JsonObject;
import de.florianmichael.viafabricplus.platform.ProtocolRange;
import de.florianmichael.viafabricplus.setting.SettingGroup;
import de.florianmichael.viafabricplus.setting.groups.GeneralSettings;
import de.florianmichael.vialoadingbase.ViaLoadingBase;
import de.florianmichael.vialoadingbase.platform.ProtocolRange;
public class ProtocolSyncBooleanSetting extends BooleanSetting {
private final ProtocolRange protocolRange;

View File

@ -14,6 +14,7 @@
"fixes.MixinCamera",
"fixes.MixinClientPlayerInteractionManager",
"fixes.MixinClientPlayNetworkHandler",
"fixes.MixinEntityPredicates",
"fixes.MixinMinecraftClient",
"fixes.MixinPendingUpdateManager",
"fixes.MixinPlayerEntityRenderer",