Skip to content

Commit

Permalink
Merge pull request #20 from BlackLotus-SMP/1.20.2
Browse files Browse the repository at this point in the history
1.20.2 update
  • Loading branch information
Kahzerx authored Sep 24, 2023
2 parents c3bc4fb + f1b5f80 commit 29f3ef9
Show file tree
Hide file tree
Showing 12 changed files with 71 additions and 43 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@ jobs:
with:
repo_token: "${{ secrets.GITHUB_TOKEN }}"
prerelease: false
automatic_release_tag: 1.20.1
automatic_release_tag: 1.20.2
files: |
build/libs/*.jar
6 changes: 3 additions & 3 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,9 @@ org.gradle.jvmargs=-Xmx1G

# Fabric Properties
# check these on https://fabricmc.net/versions.html
minecraft_version=1.20.1
yarn_mappings=1.20.1+build.2
loader_version=0.14.21
minecraft_version=1.20.2
yarn_mappings=1.20.2+build.1
loader_version=0.14.22

# Mod Properties
mod_version = 4.6
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
import net.minecraft.network.packet.s2c.play.EntitiesDestroyS2CPacket;
import net.minecraft.network.packet.s2c.play.PlayerListS2CPacket;
import net.minecraft.network.packet.s2c.play.PlayerRemoveS2CPacket;
import net.minecraft.network.packet.s2c.play.PlayerSpawnS2CPacket;
import net.minecraft.network.packet.s2c.play.PlayerSpawnPositionS2CPacket;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.network.ServerPlayerEntity;
Expand Down Expand Up @@ -37,7 +37,7 @@ public void register(CommandDispatcher<ServerCommandSource> dispatcher, FBIExten
continue;
}
p.networkHandler.sendPacket(new PlayerListS2CPacket(PlayerListS2CPacket.Action.ADD_PLAYER, player));
p.networkHandler.sendPacket(new PlayerSpawnS2CPacket(player));
p.networkHandler.sendPacket(new PlayerSpawnPositionS2CPacket(player.getBlockPos(), player.getSpawnAngle()));
}
server.getPlayerManager().broadcast(Text.translatable("multiplayer.player.joined", new Object[]{player.getDisplayName()}).formatted(Formatting.YELLOW), false);
} else {
Expand All @@ -51,7 +51,7 @@ public void register(CommandDispatcher<ServerCommandSource> dispatcher, FBIExten
}
player.changeGameMode(GameMode.SPECTATOR);
// server.getPlayerManager().broadcast(Text.translatable("multiplayer.player.joined", new Object[]{player.getDisplayName()}).formatted(Formatting.YELLOW), MessageType.SYSTEM);
server.getPlayerManager().broadcast(Text.translatable("multiplayer.player.left", new Object[]{player.getDisplayName()}).formatted(Formatting.YELLOW), false);
server.getPlayerManager().broadcast(Text.translatable("multiplayer.player.left", player.getDisplayName()).formatted(Formatting.YELLOW), false);
}
return 1;
}));
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,10 +13,7 @@
import net.minecraft.entity.EntityType;
import net.minecraft.item.Item;
import net.minecraft.registry.entry.RegistryEntry;
import net.minecraft.scoreboard.Scoreboard;
import net.minecraft.scoreboard.ScoreboardCriterion;
import net.minecraft.scoreboard.ScoreboardObjective;
import net.minecraft.scoreboard.ScoreboardPlayerScore;
import net.minecraft.scoreboard.*;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.command.ServerCommandSource;
import net.minecraft.server.network.ServerPlayerEntity;
Expand Down Expand Up @@ -89,19 +86,19 @@ public ExtensionSettings extensionSettings() {

private void hideSidebar(MinecraftServer server) {
Scoreboard scoreboard = server.getScoreboard();
if (scoreboard.getObjectiveForSlot(1) != null) {
scoreboard.setObjectiveSlot(1, null);
if (scoreboard.getObjectiveForSlot(ScoreboardDisplaySlot.SIDEBAR) != null) {
scoreboard.setObjectiveSlot(ScoreboardDisplaySlot.SIDEBAR, null);
}
}

public int hideSidebar(ServerCommandSource source) {
Scoreboard scoreboard = source.getServer().getScoreboard();
Entity entity = source.getEntity();
if (scoreboard.getObjectiveForSlot(1) == null) {
if (scoreboard.getObjectiveForSlot(ScoreboardDisplaySlot.SIDEBAR) == null) {
source.sendFeedback(MarkEnum.CROSS.appendMessage("There is no scoreboard"), false);
return 1;
} else {
scoreboard.setObjectiveSlot(1, null);
scoreboard.setObjectiveSlot(ScoreboardDisplaySlot.SIDEBAR, null);
assert entity != null;
source.getServer().getPlayerManager().broadcast(MarkEnum.TICK.appendMsg(entity.getEntityName() + " removed the scoreboard."), false);
}
Expand Down Expand Up @@ -137,11 +134,11 @@ public void startCustomSB(String name, String sbName, String command, ServerComm

public Text display(Scoreboard scoreboard, ScoreboardObjective scoreboardObjective, int tick, Entity entity, boolean persistent) {
Text text;
if (scoreboard.getObjectiveForSlot(1) == scoreboardObjective) {
if (scoreboard.getObjectiveForSlot(ScoreboardDisplaySlot.SIDEBAR) == scoreboardObjective) {
text = MarkEnum.CROSS.appendMsg("Already showing");
} else {
assert entity != null;
scoreboard.setObjectiveSlot(1, scoreboardObjective);
scoreboard.setObjectiveSlot(ScoreboardDisplaySlot.SIDEBAR, scoreboardObjective);
if (persistent) {
tickSet = -100;
} else {
Expand Down Expand Up @@ -189,7 +186,7 @@ public void showSideBar(ServerCommandSource source, Identifier id, String type,

return;
}
scoreboard.setObjectiveSlot(1, newScoreboardObjective);
scoreboard.setObjectiveSlot(ScoreboardDisplaySlot.SIDEBAR, newScoreboardObjective);
if (persistent) {
tickSet = -100;
} else {
Expand Down Expand Up @@ -236,7 +233,7 @@ public void showSideBar(ServerCommandSource source, ItemStackArgument item, Stri

return;
}
scoreboard.setObjectiveSlot(1, newScoreboardObjective);
scoreboard.setObjectiveSlot(ScoreboardDisplaySlot.SIDEBAR, newScoreboardObjective);
if (persistent) {
tickSet = -100;
} else {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,12 +7,14 @@
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.network.NetworkSide;
import net.minecraft.network.PacketCallbacks;
import net.minecraft.network.packet.c2s.common.SyncedClientOptions;
import net.minecraft.network.packet.s2c.play.DeathMessageS2CPacket;
import net.minecraft.network.packet.s2c.play.EntityPositionS2CPacket;
import net.minecraft.network.packet.s2c.play.EntitySetHeadYawS2CPacket;
import net.minecraft.network.packet.s2c.play.PlayerListS2CPacket;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.ServerTask;
import net.minecraft.server.network.ConnectedClientData;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.world.ServerWorld;
import net.minecraft.text.HoverEvent;
Expand All @@ -26,8 +28,10 @@
public class KlonePlayerEntity extends ServerPlayerEntity {
private final LocalDateTime timeout;
private final KloneExtension kloneExtension;
public KlonePlayerEntity(MinecraftServer server, ServerWorld world, GameProfile profile, KloneExtension kloneExtension) {
super(server, world, profile);

// TODO doesn't seem to work anymore?
public KlonePlayerEntity(MinecraftServer server, ServerWorld world, GameProfile profile, SyncedClientOptions clientOptions, KloneExtension kloneExtension) {
super(server, world, profile, clientOptions);
this.timeout = LocalDateTime.now().plusDays(1); // TODO this has to be customizable
this.kloneExtension = kloneExtension;
}
Expand All @@ -45,11 +49,11 @@ public static KlonePlayerEntity createKlone(MinecraftServer server, ServerPlayer
// server.getPlayerManager().sendToAll(new PlayerListS2CPacket(PlayerListS2CPacket.Action.REMOVE_PLAYER, player));
player.networkHandler.disconnect(Text.literal("A clone has been created.\nThe clone will leave once you rejoin.\nHappy AFK!"));

KlonePlayerEntity klonedPlayer = new KlonePlayerEntity(server, world, profile, kloneExtension);
KlonePlayerEntity klonedPlayer = new KlonePlayerEntity(server, world, profile, player.getClientOptions(), kloneExtension);
// KlonePlayerEntity klonedPlayer = new KlonePlayerEntity(server, world, profile);

klonedPlayer.refreshPositionAndAngles(player.getX(), player.getY(), player.getZ(), player.getYaw(), player.getPitch());
server.getPlayerManager().onPlayerConnect(new KloneNetworkManager(NetworkSide.SERVERBOUND), klonedPlayer);
server.getPlayerManager().onPlayerConnect(new KloneNetworkManager(NetworkSide.SERVERBOUND), klonedPlayer, new ConnectedClientData(profile, 0, klonedPlayer.getClientOptions()));
klonedPlayer.teleport(world, player.getX(), player.getY(), player.getZ(), player.getYaw(), player.getPitch());
klonedPlayer.setHealth(player.getHealth());
klonedPlayer.unsetRemoved();
Expand Down Expand Up @@ -109,7 +113,7 @@ public void onDeath(DamageSource source) {
this.hungerManager = new HungerManager();
Text text = this.getDamageTracker().getDeathMessage();
if (this.getWorld().getGameRules().getBoolean(GameRules.SHOW_DEATH_MESSAGES)) {
this.networkHandler.sendPacket(new DeathMessageS2CPacket(this.getId(), text), PacketCallbacks.of(() -> {
this.networkHandler.send(new DeathMessageS2CPacket(this.getId(), text), PacketCallbacks.of(() -> {
String string = text.asTruncatedString(256);
Text text2 = Text.translatable("death.attack.message_too_long", Text.literal(string).formatted(Formatting.YELLOW));
Text text3 = Text.translatable("death.attack.even_more_magic", this.getDisplayName()).styled((style) -> style.withHoverEvent(new HoverEvent(HoverEvent.Action.SHOW_TEXT, text2)));
Expand Down
Original file line number Diff line number Diff line change
@@ -1,32 +1,46 @@
package com.kahzerx.kahzerxmod.mixin.kloneExtension;

import com.kahzerx.kahzerxmod.klone.KlonePlayerEntity;
import com.mojang.authlib.GameProfile;
import net.minecraft.network.ClientConnection;
import net.minecraft.network.packet.Packet;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ConnectedClientData;
import net.minecraft.server.network.ServerCommonNetworkHandler;
import net.minecraft.server.network.ServerPlayNetworkHandler;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.Text;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(value = ServerPlayNetworkHandler.class, priority = 69420)
public class NetworkHandlerMixin {
@Shadow public ServerPlayerEntity player;
@Mixin(value = ServerCommonNetworkHandler.class, priority = 69420)
public abstract class NetworkHandlerMixin {
@Shadow protected abstract GameProfile getProfile();

@Shadow @Final protected MinecraftServer server;

@Inject(method = "sendPacket(Lnet/minecraft/network/packet/Packet;)V", at = @At("HEAD"), cancellable = true)
private void onSendPacket(Packet<?> packet, CallbackInfo ci) {
if (player instanceof KlonePlayerEntity) {
if (this.getPlayer() instanceof KlonePlayerEntity) {
ci.cancel();
}
}

@Inject(method = "disconnect", at = @At("HEAD"), cancellable = true)
private void onDisconnect(Text reason, CallbackInfo ci) {
if (player instanceof KlonePlayerEntity) {
((KlonePlayerEntity) player).kill(reason);
if (this.getPlayer() instanceof KlonePlayerEntity) {
((KlonePlayerEntity) this.getPlayer()).kill(reason);
ci.cancel();
}
}

@Unique
private ServerPlayerEntity getPlayer() {
return this.server.getPlayerManager().getPlayer(this.getProfile().getId());
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import com.kahzerx.kahzerxmod.klone.KlonePlayerEntity;
import com.mojang.authlib.GameProfile;
import net.minecraft.network.packet.c2s.common.SyncedClientOptions;
import net.minecraft.server.PlayerManager;
import net.minecraft.server.network.ServerPlayerEntity;
import org.spongepowered.asm.mixin.Mixin;
Expand All @@ -17,7 +18,7 @@ public abstract class PlayerManagerMixin {
@Shadow public abstract List<ServerPlayerEntity> getPlayerList();

@Inject(method = "createPlayer", at = @At("HEAD"))
private void onCreatePlayer(GameProfile profile, CallbackInfoReturnable<ServerPlayerEntity> cir) {
private void onCreatePlayer(GameProfile profile, SyncedClientOptions syncedOptions, CallbackInfoReturnable<ServerPlayerEntity> cir) {
for (ServerPlayerEntity player : getPlayerList()) {
if (player.getGameProfile().getId().equals(profile.getId()) && player.getClass() == KlonePlayerEntity.class) {
((KlonePlayerEntity) player).kill();
Expand Down
Original file line number Diff line number Diff line change
@@ -1,44 +1,50 @@
package com.kahzerx.kahzerxmod.mixin.noReports;

import net.minecraft.network.listener.ServerCommonPacketListener;
import net.minecraft.network.packet.Packet;
import net.minecraft.network.PacketCallbacks;
import net.minecraft.network.listener.ServerPlayPacketListener;
import net.minecraft.network.packet.s2c.play.ChatMessageS2CPacket;
import net.minecraft.network.packet.s2c.play.GameMessageS2CPacket;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.network.ServerCommonNetworkHandler;
import net.minecraft.server.network.ServerPlayNetworkHandler;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.text.Text;
import org.spongepowered.asm.mixin.Final;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.Unique;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(ServerPlayNetworkHandler.class)
public abstract class ServerPlayNetworkHandlerMixin implements ServerPlayPacketListener {
@Mixin(ServerCommonNetworkHandler.class)
public abstract class ServerCommonNetworkHandlerMixin implements ServerCommonPacketListener {
@Shadow public abstract void sendPacket(Packet<?> packet);

@Shadow public ServerPlayerEntity player;
@Shadow @Final protected MinecraftServer server;

@Inject(method = "sendPacket(Lnet/minecraft/network/packet/Packet;)V", at = @At(value = "HEAD"), cancellable = true)
@Inject(method = "sendPacket", at = @At(value = "HEAD"), cancellable = true)
private void onSend(Packet<?> packet, CallbackInfo ci) {
if (packet instanceof ChatMessageS2CPacket chatPacket) {
ci.cancel();
this.replaceChatMessage(chatPacket);
}
}

@Inject(method = "sendPacket(Lnet/minecraft/network/packet/Packet;Lnet/minecraft/network/PacketCallbacks;)V", at = @At(value = "HEAD"), cancellable = true)
@Inject(method = "send", at = @At(value = "HEAD"), cancellable = true)
private void onSend(Packet<?> packet, PacketCallbacks callbacks, CallbackInfo ci) {
if (packet instanceof ChatMessageS2CPacket chatPacket) {
ci.cancel();
this.replaceChatMessage(chatPacket);
}
}

@Unique
private void replaceChatMessage(ChatMessageS2CPacket chatPacket) {
GameMessageS2CPacket gamePacket = new GameMessageS2CPacket(
chatPacket.serializedParameters().toParameters(this.player.getServerWorld().getRegistryManager()).get().applyChatDecoration(
chatPacket.serializedParameters().toParameters(this.server.getOverworld().getRegistryManager()).get().applyChatDecoration(
chatPacket.unsignedContent() != null ? chatPacket.unsignedContent() : Text.literal(chatPacket.body().content())
), false
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@

@Mixin(SeedCommand.class)
public class seedCommandMixin {
// TODO inject in the hasPermission method
@Inject(method = "register", at = @At(value = "HEAD"), cancellable = true)
private static void onRegisterCommand(CommandDispatcher<ServerCommandSource> dispatcher, boolean dedicated, CallbackInfo ci) {
ci.cancel();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import com.kahzerx.kahzerxmod.KahzerxServer;
import net.minecraft.advancement.Advancement;
import net.minecraft.advancement.AdvancementDisplay;
import net.minecraft.advancement.AdvancementEntry;
import net.minecraft.advancement.PlayerAdvancementTracker;
import net.minecraft.block.Block;
import net.minecraft.block.BlockState;
Expand All @@ -11,6 +13,7 @@
import net.minecraft.item.ItemStack;
import net.minecraft.network.ClientConnection;
import net.minecraft.server.PlayerManager;
import net.minecraft.server.network.ConnectedClientData;
import net.minecraft.server.network.ServerPlayerEntity;
import net.minecraft.server.network.ServerPlayerInteractionManager;
import net.minecraft.server.world.ServerWorld;
Expand Down Expand Up @@ -38,12 +41,12 @@ private void onPlayerLeft(ServerPlayerEntity player, CallbackInfo ci) {
}

@Inject(method = "onPlayerConnect", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/PlayerManager;loadPlayerData(Lnet/minecraft/server/network/ServerPlayerEntity;)Lnet/minecraft/nbt/NbtCompound;", shift = At.Shift.AFTER))
private void onPlayerJoined(ClientConnection connection, ServerPlayerEntity player, CallbackInfo ci) {
private void onPlayerJoined(ClientConnection connection, ServerPlayerEntity player, ConnectedClientData clientData, CallbackInfo ci) {
KahzerxServer.onPlayerJoined(player);
}

@Inject(method = "onPlayerConnect", at = @At("TAIL"))
private void onPlayerConnected(ClientConnection connection, ServerPlayerEntity player, CallbackInfo ci) {
private void onPlayerConnected(ClientConnection connection, ServerPlayerEntity player, ConnectedClientData clientData, CallbackInfo ci) {
KahzerxServer.onPlayerConnected(player);
}
}
Expand Down Expand Up @@ -88,9 +91,9 @@ private void onPlayerClicker(Hand hand, CallbackInfo ci) {
public static class PlayerAdvancement {
@Shadow private ServerPlayerEntity owner;

@Inject(method = "grantCriterion", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/PlayerManager;broadcast(Lnet/minecraft/text/Text;Z)V"))
private void onAdvancement(Advancement advancement, String criterionName, CallbackInfoReturnable<Boolean> cir) {
Text text = Text.translatable("chat.type.advancement." + Objects.requireNonNull(advancement.getDisplay()).getFrame().getId(), owner.getDisplayName(), advancement.toHoverableText());
@Inject(method = "method_53637", at = @At(value = "INVOKE", target = "Lnet/minecraft/server/PlayerManager;broadcast(Lnet/minecraft/text/Text;Z)V"))
private void onAdvancement(AdvancementEntry advancementEntry, AdvancementDisplay display, CallbackInfo ci) {
Text text = Text.translatable("chat.type.advancement." + display.getFrame().getId(), owner.getDisplayName(), Advancement.getNameFromIdentity(advancementEntry));
KahzerxServer.onAdvancement(text.getString().replace("_", "\\_"));
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,14 @@
import net.minecraft.item.Items;
import net.minecraft.world.World;
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.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(VillagerEntity.class)
public abstract class VillagerEntityMixin extends MerchantEntity {
@Unique
private PlayerEntity player = null;

public VillagerEntityMixin(EntityType<? extends MerchantEntity> entityType, World world) {
Expand Down
2 changes: 1 addition & 1 deletion src/main/resources/kahzerx.mixins.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,8 +25,8 @@
"noReports.DedicatedServerMixin",
"noReports.PlayerManagerMixin",
"noReports.PlayerSessionC2SPacketMixin",
"noReports.ServerCommonNetworkHandlerMixin",
"noReports.ServerMetadataMixin",
"noReports.ServerPlayNetworkHandlerMixin",
"opOnWhitelistExtension.ServerConfigMixin",
"playerDropsSkullExtension.PlayerEntityMixin",
"pranksExtension.PlayerMixin",
Expand Down

0 comments on commit 29f3ef9

Please sign in to comment.