mirror of
https://github.com/ViaVersion/ViaFabricPlus.git
synced 2024-09-28 04:27:25 +02:00
added more Documentation, updated ViaLoadingBase
This commit is contained in:
parent
b1b36d6141
commit
25c30ed9d7
40
README.md
40
README.md
@ -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 {
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -0,0 +1,8 @@
|
||||
package de.florianmichael.viafabricplus.definition;
|
||||
|
||||
public class MCConstants {
|
||||
|
||||
public static double getSoulSandMultiplier() {
|
||||
return 0.4D;
|
||||
}
|
||||
}
|
@ -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);
|
||||
}
|
||||
}
|
@ -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);
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
@ -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 {
|
||||
|
@ -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 {
|
||||
|
@ -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;
|
||||
|
@ -14,6 +14,7 @@
|
||||
"fixes.MixinCamera",
|
||||
"fixes.MixinClientPlayerInteractionManager",
|
||||
"fixes.MixinClientPlayNetworkHandler",
|
||||
"fixes.MixinEntityPredicates",
|
||||
"fixes.MixinMinecraftClient",
|
||||
"fixes.MixinPendingUpdateManager",
|
||||
"fixes.MixinPlayerEntityRenderer",
|
||||
|
Loading…
Reference in New Issue
Block a user