1.20.2 update
This commit is contained in:
parent
f146976177
commit
675af542c6
7 changed files with 12 additions and 131 deletions
|
@ -7,9 +7,6 @@ import static com.mojang.brigadier.arguments.StringArgumentType.greedyString;
|
||||||
import static com.mojang.brigadier.arguments.StringArgumentType.getString;
|
import static com.mojang.brigadier.arguments.StringArgumentType.getString;
|
||||||
import static land.chipmunk.chipmunkmod.command.CommandManager.literal;
|
import static land.chipmunk.chipmunkmod.command.CommandManager.literal;
|
||||||
import static land.chipmunk.chipmunkmod.command.CommandManager.argument;
|
import static land.chipmunk.chipmunkmod.command.CommandManager.argument;
|
||||||
|
|
||||||
import land.chipmunk.chipmunkmod.ChipmunkMod;
|
|
||||||
import land.chipmunk.chipmunkmod.util.SharedVariables;
|
|
||||||
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
|
import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.gui.screen.ConnectScreen;
|
import net.minecraft.client.gui.screen.ConnectScreen;
|
||||||
|
@ -26,6 +23,7 @@ import java.util.UUID;
|
||||||
import land.chipmunk.chipmunkmod.mixin.MinecraftClientAccessor;
|
import land.chipmunk.chipmunkmod.mixin.MinecraftClientAccessor;
|
||||||
|
|
||||||
public class UsernameCommand {
|
public class UsernameCommand {
|
||||||
|
private static final Session ORIGINAL_SESSION = ((MinecraftClientAccessor) MinecraftClient.getInstance()).session();
|
||||||
private static final SimpleCommandExceptionType USERNAME_TOO_LONG = new SimpleCommandExceptionType(Text.translatable("The specified username is longer than 16 characters"));
|
private static final SimpleCommandExceptionType USERNAME_TOO_LONG = new SimpleCommandExceptionType(Text.translatable("The specified username is longer than 16 characters"));
|
||||||
|
|
||||||
public static void register (CommandDispatcher<FabricClientCommandSource> dispatcher) {
|
public static void register (CommandDispatcher<FabricClientCommandSource> dispatcher) {
|
||||||
|
@ -35,9 +33,13 @@ public class UsernameCommand {
|
||||||
literal("set")
|
literal("set")
|
||||||
.then(
|
.then(
|
||||||
argument("username", greedyString())
|
argument("username", greedyString())
|
||||||
.executes(UsernameCommand::updateUsername)
|
.executes(c -> updateUsername(c))
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
|
.then(
|
||||||
|
literal("revert")
|
||||||
|
.executes(c -> updateSession(c, ORIGINAL_SESSION))
|
||||||
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,17 +50,18 @@ public class UsernameCommand {
|
||||||
return updateSession(context, session);
|
return updateSession(context, session);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static int updateSession (CommandContext<FabricClientCommandSource> context, String username) throws CommandSyntaxException {
|
public static int updateSession (CommandContext<FabricClientCommandSource> context, Session session) throws CommandSyntaxException {
|
||||||
final FabricClientCommandSource source = context.getSource();
|
final FabricClientCommandSource source = context.getSource();
|
||||||
|
|
||||||
final MinecraftClient client = source.getClient();
|
final MinecraftClient client = source.getClient();
|
||||||
|
|
||||||
ChipmunkMod.CONFIG.defaultUsername = username;
|
((MinecraftClientAccessor) client).session(session);
|
||||||
|
|
||||||
|
// TODO: Put this in a separate class
|
||||||
final ServerInfo info = client.getCurrentServerEntry();
|
final ServerInfo info = client.getCurrentServerEntry();
|
||||||
client.world.disconnect();
|
client.world.disconnect();
|
||||||
client.disconnect();
|
client.disconnect();
|
||||||
ConnectScreen.connect(new MultiplayerScreen(new TitleScreen()), client, ServerAddress.parse(info.address), info, false);
|
ConnectScreen.connect(new TitleScreen(), client, ServerAddress.parse(info.address), info, false);
|
||||||
|
|
||||||
return Command.SINGLE_SUCCESS;
|
return Command.SINGLE_SUCCESS;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,17 +0,0 @@
|
||||||
package land.chipmunk.chipmunkmod.mixin;
|
|
||||||
|
|
||||||
import net.minecraft.nbt.NbtElement;
|
|
||||||
import net.minecraft.nbt.NbtIo;
|
|
||||||
import net.minecraft.nbt.NbtTagSizeTracker;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
|
||||||
import org.spongepowered.asm.mixin.gen.Invoker;
|
|
||||||
|
|
||||||
import java.io.DataInput;
|
|
||||||
|
|
||||||
@Mixin(NbtIo.class)
|
|
||||||
public interface NbtIoInvoker {
|
|
||||||
@Invoker(value = "read")
|
|
||||||
static NbtElement readInvoker(DataInput input, int depth, NbtTagSizeTracker tracker) {
|
|
||||||
throw new AssertionError();
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,44 +0,0 @@
|
||||||
package land.chipmunk.chipmunkmod.mixin;
|
|
||||||
|
|
||||||
import land.chipmunk.chipmunkmod.ChipmunkMod;
|
|
||||||
import land.chipmunk.chipmunkmod.util.Chat;
|
|
||||||
import net.minecraft.nbt.*;
|
|
||||||
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.CallbackInfoReturnable;
|
|
||||||
|
|
||||||
import java.io.DataInput;
|
|
||||||
import java.io.IOException;
|
|
||||||
|
|
||||||
@Mixin(NbtIo.class)
|
|
||||||
public class NbtIoMixin {
|
|
||||||
|
|
||||||
@Inject(method = "read(Ljava/io/DataInput;ILnet/minecraft/nbt/NbtTagSizeTracker;)Lnet/minecraft/nbt/NbtElement;",at = @At("HEAD"), cancellable = true)
|
|
||||||
private static void testclient$preventNbtKick(DataInput input, int depth, NbtTagSizeTracker tracker, CallbackInfoReturnable<NbtElement> cir) throws IOException {
|
|
||||||
byte b = input.readByte();
|
|
||||||
if (b == 0) {
|
|
||||||
cir.setReturnValue(NbtEnd.INSTANCE);
|
|
||||||
} else {
|
|
||||||
NbtString.skip(input);
|
|
||||||
|
|
||||||
try {
|
|
||||||
cir.setReturnValue(NbtTypes.byId(b).read(input, depth, tracker));
|
|
||||||
} catch (Exception var7) {
|
|
||||||
Chat.sendGold("ChipmunkMod prevented an NBT kick!");
|
|
||||||
cir.setReturnValue(NbtEnd.INSTANCE); // i don't fucking know i just copied
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Inject(method = "read(Ljava/io/DataInput;Lnet/minecraft/nbt/NbtTagSizeTracker;)Lnet/minecraft/nbt/NbtCompound;", at = @At("HEAD"), cancellable = true)
|
|
||||||
private static void testclient$antiNbtKickPreventLag(DataInput input, NbtTagSizeTracker tracker, CallbackInfoReturnable<NbtCompound> cir) {
|
|
||||||
NbtElement nbtElement = NbtIoInvoker.readInvoker(input, 0, tracker);
|
|
||||||
if (nbtElement instanceof NbtCompound) {
|
|
||||||
cir.setReturnValue((NbtCompound)nbtElement);
|
|
||||||
} else {
|
|
||||||
ChipmunkMod.LOGGER.warn("ChipmunkMod hopefully prevented lag lol idk");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,6 +1,6 @@
|
||||||
package land.chipmunk.chipmunkmod.mixin;
|
package land.chipmunk.chipmunkmod.mixin;
|
||||||
|
|
||||||
import net.minecraft.network.PacketBundleHandler;
|
import net.minecraft.network.handler.PacketBundleHandler;
|
||||||
import net.minecraft.network.listener.PacketListener;
|
import net.minecraft.network.listener.PacketListener;
|
||||||
import net.minecraft.network.packet.BundlePacket;
|
import net.minecraft.network.packet.BundlePacket;
|
||||||
import net.minecraft.network.packet.BundleSplitterPacket;
|
import net.minecraft.network.packet.BundleSplitterPacket;
|
||||||
|
|
|
@ -3,7 +3,7 @@ package land.chipmunk.chipmunkmod.mixin;
|
||||||
import land.chipmunk.chipmunkmod.ChipmunkMod;
|
import land.chipmunk.chipmunkmod.ChipmunkMod;
|
||||||
import land.chipmunk.chipmunkmod.testclient.gui.Gui;
|
import land.chipmunk.chipmunkmod.testclient.gui.Gui;
|
||||||
import land.chipmunk.chipmunkmod.util.SharedVariables;
|
import land.chipmunk.chipmunkmod.util.SharedVariables;
|
||||||
import net.minecraft.client.util.Session;
|
import net.minecraft.client.session.Session;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
|
|
|
@ -1,58 +0,0 @@
|
||||||
package land.chipmunk.chipmunkmod.util;
|
|
||||||
|
|
||||||
import net.minecraft.client.MinecraftClient;
|
|
||||||
import net.minecraft.entity.attribute.EntityAttribute;
|
|
||||||
import net.minecraft.entity.attribute.EntityAttributeInstance;
|
|
||||||
import net.minecraft.entity.attribute.EntityAttributeModifier;
|
|
||||||
|
|
||||||
public class AttributeModifier {
|
|
||||||
/*
|
|
||||||
EntityAttributeInstance movementSpeedAttribute = MC.player.getAttributeInstance(EntityAttributes.GENERIC_MOVEMENT_SPEED);
|
|
||||||
EntityAttributeModifier tempModifier = new EntityAttributeModifier(
|
|
||||||
"TestClient@Speed", // Modifier name
|
|
||||||
3, // Modifier value
|
|
||||||
EntityAttributeModifier.Operation.MULTIPLY_TOTAL); // Modifier operation
|
|
||||||
movementSpeedAttribute.addPersistentModifier(tempModifier);
|
|
||||||
*/
|
|
||||||
String name;
|
|
||||||
EntityAttribute attribute;
|
|
||||||
float value;
|
|
||||||
EntityAttributeModifier.Operation operation;
|
|
||||||
EntityAttributeModifier modifier;
|
|
||||||
EntityAttributeInstance instance;
|
|
||||||
public AttributeModifier(EntityAttribute attribute, float value, EntityAttributeModifier.Operation operation) {
|
|
||||||
this.attribute = attribute;
|
|
||||||
this.value = value;
|
|
||||||
this.operation = operation;
|
|
||||||
name = "TestClient@"+(new Throwable().getStackTrace()[1].getClassName())+"."+(new Throwable().getStackTrace()[1].getMethodName());
|
|
||||||
// Chat.send("Created new attribute modifier " + name);
|
|
||||||
instance = MinecraftClient.getInstance().player.getAttributeInstance(attribute);
|
|
||||||
modifier = new EntityAttributeModifier(name, value, operation);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void add() {
|
|
||||||
instance.addPersistentModifier(modifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void remove() {
|
|
||||||
instance.removeModifier(modifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isOnPlayer() {
|
|
||||||
return instance.hasModifier(modifier);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setValue(float value) {
|
|
||||||
this.value = value;
|
|
||||||
modifier = new EntityAttributeModifier(name, value, operation);
|
|
||||||
// remove and add multiplier to refresh value
|
|
||||||
if(isOnPlayer()){
|
|
||||||
remove();
|
|
||||||
add();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public float getValue() {
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -13,7 +13,6 @@
|
||||||
"ClientPlayerEntityMixin",
|
"ClientPlayerEntityMixin",
|
||||||
"ClientPlayNetworkHandlerAccessor",
|
"ClientPlayNetworkHandlerAccessor",
|
||||||
"ClientPlayNetworkHandlerMixin",
|
"ClientPlayNetworkHandlerMixin",
|
||||||
"DecoderHandlerMixin",
|
|
||||||
"DecoratedPotBlockEntitySherdsMixin",
|
"DecoratedPotBlockEntitySherdsMixin",
|
||||||
"MinecraftClientAccessor",
|
"MinecraftClientAccessor",
|
||||||
"StringHelperMixin",
|
"StringHelperMixin",
|
||||||
|
@ -24,7 +23,6 @@
|
||||||
"KeyboardMixin",
|
"KeyboardMixin",
|
||||||
"MinecraftClientAccessor",
|
"MinecraftClientAccessor",
|
||||||
"MultiplayerScreenMixin",
|
"MultiplayerScreenMixin",
|
||||||
"NbtIoMixin",
|
|
||||||
"PlayerListEntryAccessor",
|
"PlayerListEntryAccessor",
|
||||||
"SessionMixin",
|
"SessionMixin",
|
||||||
"SharedConstantsMixin",
|
"SharedConstantsMixin",
|
||||||
|
@ -40,7 +38,6 @@
|
||||||
"defaultRequire": 1
|
"defaultRequire": 1
|
||||||
},
|
},
|
||||||
"mixins": [
|
"mixins": [
|
||||||
"NbtIoInvoker",
|
|
||||||
"PacketBundleHandlerMixin",
|
"PacketBundleHandlerMixin",
|
||||||
"PlayerEntityMixin",
|
"PlayerEntityMixin",
|
||||||
"TextMixin",
|
"TextMixin",
|
||||||
|
|
Loading…
Reference in a new issue