Skip to content

Commit

Permalink
use lateversionenable
Browse files Browse the repository at this point in the history
use yarn
cleanup mod
  • Loading branch information
BetterClient committed Jul 22, 2024
1 parent e951570 commit 640e666
Show file tree
Hide file tree
Showing 12 changed files with 122 additions and 42 deletions.
3 changes: 2 additions & 1 deletion build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,12 @@ base {
repositories {
mavenCentral()
maven { url = "https://repo.viaversion.com" }
maven { url = "https://api.modrinth.com/maven" }
}

dependencies {
minecraft "com.mojang:minecraft:${project.minecraft_version}"
mappings loom.officialMojangMappings()
mappings "net.fabricmc:yarn:${project.minecraft_version}+build.${project.yarn_build_number}:v2"
modImplementation "net.fabricmc:fabric-loader:${project.loader_version}"

compileOnly "com.viaversion:viaversion:${project.viaversion_version}"
Expand Down
8 changes: 5 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,10 @@ archives_base_name = ViaCombatTest
viaversion_version=5.0.2-SNAPSHOT
snake_yml_version=2.0
google_guava_version=32.0.0
loader_version=0.15.11
minecraft_version=1.20.1

# Dependencies
# see https://fabricmc.net/develop/

loader_version=0.15.11
minecraft_version=1.20.6
yarn_build_number=3
fabric_version=0.91.1+1.20.1
9 changes: 9 additions & 0 deletions src/main/java/com/nexia/viacombattest/ViaFabricAddon.java
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
package com.nexia.viacombattest;

import com.nexia.viacombattest.platform.VCTServerVersionProvider;
import com.nexia.viacombattest.platform.ViaCombatTestPlatform;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.ViaManager;
import com.viaversion.viaversion.api.protocol.version.VersionProvider;

import java.io.File;
import java.nio.file.Path;
Expand All @@ -12,6 +15,12 @@ public class ViaFabricAddon implements ViaCombatTestPlatform, Runnable {
private final Logger logger = LogManager.getLogManager().getLogger("ViaCombatTest");
private File configDir;

public static void lateEnable() {
final ViaManager manager = Via.getManager();
final VersionProvider delegate = manager.getProviders().get(VersionProvider.class);
manager.getProviders().use(VersionProvider.class, new VCTServerVersionProvider(delegate));
}

@Override
public void run() {
Path configDirPath = Via.getPlatform().getDataFolder().toPath().resolve("ViaCombatTest");
Expand Down

This file was deleted.

35 changes: 35 additions & 0 deletions src/main/java/com/nexia/viacombattest/mixin/MixinAirSwingFix.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
package com.nexia.viacombattest.mixin;

import com.nexia.viacombattest.mixin_interfaces.Is8CMissPacket;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.network.packet.c2s.play.PlayerInteractEntityC2SPacket;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Redirect;

@Mixin(PlayerInteractEntityC2SPacket.class)
public class MixinAirSwingFix implements Is8CMissPacket {
@Unique
public boolean isMiss = false;

@Redirect(method = "<init>(Lnet/minecraft/network/PacketByteBuf;)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/network/PacketByteBuf;readEnumConstant(Ljava/lang/Class;)Ljava/lang/Enum;"))
public Enum<?> initHook(PacketByteBuf instance, Class<Enum<?>> enumClass) {
int readVar = instance.readVarInt();

if(readVar > 2) {
System.out.println("FUCK YOU FUCK YOU FUCK YOU FUCK YOU FUCK YOU FUCK YOU FUCK YOU FUCK YOU FUCK YOU FUCK YOU FUCK YOU");
//new Exception().printStackTrace();
this.isMiss = true; //cancel packet
return enumClass.getEnumConstants()[0];
}

return enumClass.getEnumConstants()[readVar];
}

@Unique
@Override
public boolean viaCombatTest$isMissPacket() {
return isMiss;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
package com.nexia.viacombattest.mixin;

import com.nexia.viacombattest.ViaFabricAddon;
import com.viaversion.viaversion.ViaManagerImpl;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(ViaManagerImpl.class)
public class MixinViaVersionLateEnable {
//https://github.com/ViaVersion/ViaVersion/pull/4038
@Inject(method = "onServerLoaded", at = @At(value = "INVOKE", target = "Lcom/viaversion/viaversion/protocol/ProtocolManagerImpl;refreshVersions()V", shift = At.Shift.AFTER), remap = false)
public void afterRefreshVersions(CallbackInfo ci) {
ViaFabricAddon.lateEnable();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package com.nexia.viacombattest.mixin_interfaces;

public interface Is8CMissPacket {
boolean viaCombatTest$isMissPacket();
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package com.nexia.viacombattest.platform;

import com.viaversion.viaversion.api.connection.UserConnection;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.api.protocol.version.VersionProvider;
import com.viaversion.viaversion.api.protocol.version.VersionType;

public record VCTServerVersionProvider(VersionProvider old) implements VersionProvider {
@Override
public ProtocolVersion getClientProtocol(UserConnection connection) {
final ProtocolVersion version = connection.getProtocolInfo().protocolVersion();
if (version.getVersionType() == VersionType.SPECIAL) {
return ProtocolVersion.getProtocol(VersionType.SPECIAL, version.getOriginalVersion());
} else {
return old.getClientProtocol(connection);
}
}

@Override
public ProtocolVersion getClosestServerProtocol(UserConnection connection) throws Exception {
return old.getClosestServerProtocol(connection);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,6 @@

import com.nexia.viacombattest.ViaCombatTest;
import com.nexia.viacombattest.ViaCombatTestConfig;
import com.nexia.viacombattest.api.CombatTestProtocolVersion;
import com.nexia.viacombattest.protocols.CombatTest8c;
import com.viaversion.viaversion.api.Via;
import com.viaversion.viaversion.api.protocol.ProtocolManager;
Expand All @@ -21,7 +20,7 @@ default void init(final File dataFolder) {
Via.getManager().getSubPlatforms().add("ViaCombatTest-" + ViaCombatTest.VERSION);

final ProtocolManager protocolManager = Via.getManager().getProtocolManager();
protocolManager.registerProtocol(new CombatTest8c(), CombatTestProtocolVersion.CombatTest8c, ProtocolVersion.v1_16_2);
protocolManager.registerProtocol(new CombatTest8c(), CombatTest8c.instance, ProtocolVersion.v1_16_2);
}

void run();
Expand Down
21 changes: 9 additions & 12 deletions src/main/java/com/nexia/viacombattest/protocols/CombatTest8c.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
package com.nexia.viacombattest.protocols;

import com.viaversion.viaversion.api.protocol.AbstractProtocol;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandler;
import com.viaversion.viaversion.api.protocol.remapper.PacketHandlers;
import com.viaversion.viaversion.api.protocol.version.ProtocolVersion;
import com.viaversion.viaversion.api.protocol.version.VersionType;
import com.viaversion.viaversion.api.type.Types;
import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ClientboundPackets1_16_2;
import com.viaversion.viaversion.protocols.v1_16_1to1_16_2.packet.ServerboundPackets1_16_2;

public class CombatTest8c extends AbstractProtocol<ClientboundPackets1_16_2, ClientboundPackets1_16_2, ServerboundPackets1_16_2, ServerboundPackets1_16_2> {
public static final ProtocolVersion instance = new ProtocolVersion(VersionType.SPECIAL, 803, -1, "Combat Test 8c", null);
static {
ProtocolVersion.register(instance);
}

public CombatTest8c() {
super(ClientboundPackets1_16_2.class, ClientboundPackets1_16_2.class, ServerboundPackets1_16_2.class, ServerboundPackets1_16_2.class);
}
Expand All @@ -15,7 +23,7 @@ public CombatTest8c() {
protected void registerPackets() {
this.registerServerbound(ServerboundPackets1_16_2.CLIENT_INFORMATION, new PacketHandlers() {
@Override
public void register() {
protected void register() {
map(Types.STRING); //language
map(Types.BYTE); //viewDistance
map(Types.VAR_INT); //chatVisibility
Expand All @@ -25,16 +33,5 @@ public void register() {
read(Types.BOOLEAN); // useShieldOnCrouch
}
});

this.registerServerbound(ServerboundPackets1_16_2.INTERACT, new PacketHandlers() {
@Override
protected void register() {
map(Types.PROFILE_ACTIONS_ENUM); // INTERACT
map(Types.PROFILE_ACTIONS_ENUM); // ATTACK
map(Types.PROFILE_ACTIONS_ENUM); // INTERACT_AT
map(Types.PROFILE_ACTIONS_ENUM); // AIR_SWING
}
});
// ^^ im not sure if this works
}
}
5 changes: 3 additions & 2 deletions src/main/resources/fabric.mod.json
Original file line number Diff line number Diff line change
Expand Up @@ -19,9 +19,10 @@
"depends": {
"fabricloader": ">=0.14.0",
"viafabric": ">=0.4.10",
"minecraft": ">=1.20 <=1.20.2"
"minecraft": ">=1.20.5 <=1.20.6"
},
"recommends": {
"combatify": "*"
}
},
"mixins": ["vct_fix.mixins.json"]
}
12 changes: 12 additions & 0 deletions src/main/resources/vct_fix.mixins.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"required": true,
"package": "com.nexia.viacombattest.mixin",
"compatibilityLevel": "JAVA_21",
"mixins": [
"MixinAirSwingFix",
"MixinViaVersionLateEnable"
],
"injectors": {
"defaultRequire": 1
}
}

0 comments on commit 640e666

Please sign in to comment.