Skip to content

Commit 4abb430

Browse files
committed
Add support for showing disconnect message on 1.19+
1 parent f92b804 commit 4abb430

File tree

15 files changed

+94
-27
lines changed

15 files changed

+94
-27
lines changed

fabric/mc1140/src/main/java/io/github/retrooper/packetevents/mc1140/Fabric1140ChainLoadEntrypoint.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,17 @@
22

33
import com.github.retrooper.packetevents.manager.server.ServerVersion;
44
import io.github.retrooper.packetevents.factory.fabric.FabricPacketEventsAPI;
5+
import io.github.retrooper.packetevents.manager.AbstractFabricPlayerManager;
56
import io.github.retrooper.packetevents.manager.registry.FabricRegistryManager;
67
import io.github.retrooper.packetevents.mc1140.manager.registry.Fabric1140ItemRegistry;
78
import io.github.retrooper.packetevents.util.LazyHolder;
8-
import io.github.retrooper.packetevents.impl.netty.manager.player.PlayerManagerAbstract;
99
import io.github.retrooper.packetevents.loader.ChainLoadData;
1010
import io.github.retrooper.packetevents.loader.ChainLoadEntryPoint;
1111
import io.github.retrooper.packetevents.mc1140.factory.fabric.Fabric1140ServerPlayerManager;
1212

1313
public class Fabric1140ChainLoadEntrypoint implements ChainLoadEntryPoint {
1414

15-
protected LazyHolder<PlayerManagerAbstract> playerManagerAbstractLazyHolder = LazyHolder.simple(() -> new Fabric1140ServerPlayerManager(FabricPacketEventsAPI.getServerAPI()));
15+
protected LazyHolder<AbstractFabricPlayerManager> playerManagerAbstractLazyHolder = LazyHolder.simple(() -> new Fabric1140ServerPlayerManager(FabricPacketEventsAPI.getServerAPI()));
1616

1717
@Override
1818
public void initialize(ChainLoadData chainLoadData) {

fabric/mc1140/src/main/java/io/github/retrooper/packetevents/mc1140/factory/fabric/Fabric1140ServerPlayerManager.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020

2121
import com.github.retrooper.packetevents.PacketEventsAPI;
2222
import io.github.retrooper.packetevents.manager.AbstractFabricPlayerManager;
23+
import net.minecraft.network.chat.TextComponent;
2324
import net.minecraft.server.network.ServerPlayerEntity;
2425
import org.jetbrains.annotations.NotNull;
2526

@@ -44,4 +45,9 @@ public Object getChannel(@NotNull Object player) {
4445
}
4546
throw new UnsupportedOperationException("Unsupported player implementation: " + player);
4647
}
48+
49+
@Override
50+
public void disconnectPlayer(ServerPlayerEntity serverPlayerEntity, String message) {
51+
serverPlayerEntity.networkHandler.disconnect(new TextComponent(message));
52+
}
4753
}

fabric/mc1194/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ repositories {
66
}
77

88
dependencies {
9+
compileOnly(project(":fabric:mc1140", configuration = "namedElements"))
910
// To change the versions, see the gradle.properties file
1011
minecraft("com.mojang:minecraft:$minecraft_version")
1112
mappings("net.fabricmc:yarn:$yarn_mappings")

fabric/mc1194/src/main/java/io/github/retrooper/packetevents/mc1914/Fabric1913ChainLoadEntrypoint.java

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,23 @@
11
package io.github.retrooper.packetevents.mc1914;
22

33
import com.github.retrooper.packetevents.manager.server.ServerVersion;
4+
import io.github.retrooper.packetevents.factory.fabric.FabricPacketEventsAPI;
45
import io.github.retrooper.packetevents.loader.ChainLoadData;
56
import io.github.retrooper.packetevents.loader.ChainLoadEntryPoint;
7+
import io.github.retrooper.packetevents.manager.FabricServerManager;
68
import io.github.retrooper.packetevents.manager.registry.FabricRegistryManager;
9+
import io.github.retrooper.packetevents.mc1140.manager.registry.Fabric1140ItemRegistry;
10+
import io.github.retrooper.packetevents.mc1914.factory.fabric.Fabric1190ServerPlayerManager;
711
import io.github.retrooper.packetevents.mc1914.manager.registry.Fabric1193ItemRegistry;
812
import io.github.retrooper.packetevents.util.LazyHolder;
913

1014
public class Fabric1913ChainLoadEntrypoint implements ChainLoadEntryPoint {
1115

1216
@Override
1317
public void initialize(ChainLoadData chainLoadData) {
18+
chainLoadData.setPlayerManagerIfNull(LazyHolder.simple(() -> new Fabric1190ServerPlayerManager(FabricPacketEventsAPI.getServerAPI())));
1419
chainLoadData.setRegistryManagerIfNull(LazyHolder.simple(() ->
15-
new FabricRegistryManager(new Fabric1193ItemRegistry())
20+
new FabricRegistryManager(FabricServerManager.getVersionStatically().isNewerThan(ServerVersion.V_1_19_2) ? new Fabric1193ItemRegistry() : new Fabric1140ItemRegistry())
1621
));
1722
}
1823

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
/*
2+
* This file is part of packetevents - https://github.com/retrooper/packetevents
3+
* Copyright (C) 2024 retrooper and contributors
4+
*
5+
* This program is free software: you can redistribute it and/or modify
6+
* it under the terms of the GNU General Public License as published by
7+
* the Free Software Foundation, either version 3 of the License, or
8+
* (at your option) any later version.
9+
*
10+
* This program is distributed in the hope that it will be useful,
11+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
12+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13+
* GNU General Public License for more details.
14+
*
15+
* You should have received a copy of the GNU General Public License
16+
* along with this program. If not, see <http://www.gnu.org/licenses/>.
17+
*/
18+
19+
package io.github.retrooper.packetevents.mc1914.factory.fabric;
20+
21+
import com.github.retrooper.packetevents.PacketEventsAPI;
22+
import io.github.retrooper.packetevents.mc1140.factory.fabric.Fabric1140ServerPlayerManager;
23+
import net.minecraft.server.network.ServerPlayerEntity;
24+
import net.minecraft.text.Text;
25+
26+
public class Fabric1190ServerPlayerManager extends Fabric1140ServerPlayerManager {
27+
28+
public Fabric1190ServerPlayerManager(PacketEventsAPI<?> packetEventsAPI) {
29+
super(packetEventsAPI);
30+
}
31+
32+
// new TextComponent -> Text.literal in 1.19
33+
@Override
34+
public void disconnectPlayer(ServerPlayerEntity serverPlayerEntity, String message) {
35+
serverPlayerEntity.networkHandler.disconnect(Text.literal(message));
36+
}
37+
}

fabric/mc1194/src/main/resources/fabric.mod.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
"schemaVersion": 1,
33
"id": "${modName}",
44
"version": "${version}",
5-
"name": "PacketEvents dependency for 1.19.3+ compiled against ${minecraft_version}",
5+
"name": "PacketEvents dependency for 1.19+ compiled against ${minecraft_version}",
66
"description": "",
77
"authors": [
88
"retrooper"
@@ -21,6 +21,6 @@
2121
"accessWidener": "packetevents.accesswidener",
2222
"depends": {
2323
"fabricloader": "*",
24-
"minecraft": ">=1.19.3"
24+
"minecraft": ">=1.19"
2525
}
2626
}

fabric/mc1202/src/main/java/io/github/retrooper/packetevents/mc1202/Fabric1202ChainLoadEntrypoint.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,15 @@
22

33
import com.github.retrooper.packetevents.manager.server.ServerVersion;
44
import io.github.retrooper.packetevents.factory.fabric.FabricPacketEventsAPI;
5+
import io.github.retrooper.packetevents.manager.AbstractFabricPlayerManager;
56
import io.github.retrooper.packetevents.util.LazyHolder;
6-
import io.github.retrooper.packetevents.impl.netty.manager.player.PlayerManagerAbstract;
77
import io.github.retrooper.packetevents.loader.ChainLoadData;
88
import io.github.retrooper.packetevents.loader.ChainLoadEntryPoint;
99
import io.github.retrooper.packetevents.mc1202.factory.fabric.Fabric1202ServerPlayerManager;
1010

1111
public class Fabric1202ChainLoadEntrypoint implements ChainLoadEntryPoint {
1212

13-
protected LazyHolder<PlayerManagerAbstract> playerManagerAbstractLazyHolder = LazyHolder.simple(() -> new Fabric1202ServerPlayerManager(FabricPacketEventsAPI.getServerAPI()));
13+
protected LazyHolder<AbstractFabricPlayerManager> playerManagerAbstractLazyHolder = LazyHolder.simple(() -> new Fabric1202ServerPlayerManager(FabricPacketEventsAPI.getServerAPI()));
1414

1515
@Override
1616
public void initialize(ChainLoadData chainLoadData) {

fabric/mc1202/src/main/java/io/github/retrooper/packetevents/mc1202/factory/fabric/Fabric1202ServerPlayerManager.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import com.github.retrooper.packetevents.PacketEventsAPI;
2222
import io.github.retrooper.packetevents.mc1140.factory.fabric.Fabric1140ServerPlayerManager;
2323
import net.minecraft.server.network.ServerPlayerEntity;
24+
import net.minecraft.text.Text;
2425
import org.jetbrains.annotations.NotNull;
2526

2627
public class Fabric1202ServerPlayerManager extends Fabric1140ServerPlayerManager {
@@ -44,4 +45,10 @@ public Object getChannel(@NotNull Object player) {
4445
}
4546
throw new UnsupportedOperationException("Unsupported player implementation: " + player);
4647
}
48+
49+
// disconnect method moved from ServerPlayNetworkHandler -> ServerCommonNetworkHandler in 1.20.2
50+
@Override
51+
public void disconnectPlayer(ServerPlayerEntity serverPlayerEntity, String message) {
52+
serverPlayerEntity.networkHandler.disconnect(Text.literal(message));
53+
}
4754
}

fabric/src/main/java/io/github/retrooper/packetevents/factory/fabric/FabricPacketEventsAPI.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,6 +33,7 @@
3333
import com.github.retrooper.packetevents.util.LogManager;
3434
import io.github.retrooper.packetevents.PacketEventsMod;
3535
import io.github.retrooper.packetevents.impl.netty.NettyManagerImpl;
36+
import io.github.retrooper.packetevents.manager.AbstractFabricPlayerManager;
3637
import io.github.retrooper.packetevents.manager.FabricLogger;
3738
import io.github.retrooper.packetevents.manager.FabricProtocolManager;
3839
import io.github.retrooper.packetevents.manager.FabricServerManager;
@@ -174,7 +175,7 @@ public LogManager getLogManager() {
174175
}
175176

176177
@Override
177-
public PlayerManager getPlayerManager() {
178+
public AbstractFabricPlayerManager getPlayerManager() {
178179
return this.environment == EnvType.SERVER ? FabricPacketEventsAPIManagerFactory.getLazyPlayerManagerHolder().get() : FabricPacketEventsAPIManagerFactory.getClientLazyPlayerManagerHolder().get();
179180
}
180181

fabric/src/main/java/io/github/retrooper/packetevents/factory/fabric/FabricPacketEventsAPIManagerFactory.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,23 @@
11
package io.github.retrooper.packetevents.factory.fabric;
22

33
import com.github.retrooper.packetevents.manager.registry.RegistryManager;
4+
import io.github.retrooper.packetevents.manager.AbstractFabricPlayerManager;
45
import io.github.retrooper.packetevents.util.LazyHolder;
56
import io.github.retrooper.packetevents.impl.netty.manager.player.PlayerManagerAbstract;
67
import io.github.retrooper.packetevents.loader.ChainLoadData;
78

89
public class FabricPacketEventsAPIManagerFactory {
910
// TODO, refactor if booky and retrooper approve, bad design having settable static field
1011
// exists to maintain 100% backward compatability
11-
private static LazyHolder<PlayerManagerAbstract> lazyPlayerManagerHolder = () -> null;
12-
private static LazyHolder<PlayerManagerAbstract> lazyClientPlayerManagerHolder = () -> null;
12+
private static LazyHolder<AbstractFabricPlayerManager> lazyPlayerManagerHolder = () -> null;
13+
private static LazyHolder<AbstractFabricPlayerManager> lazyClientPlayerManagerHolder = () -> null;
1314
private static LazyHolder<RegistryManager> registryManagerLazyHolder = () -> null;
1415

15-
public static LazyHolder<PlayerManagerAbstract> getLazyPlayerManagerHolder() {
16+
public static LazyHolder<AbstractFabricPlayerManager> getLazyPlayerManagerHolder() {
1617
return lazyPlayerManagerHolder;
1718
}
1819

19-
public static LazyHolder<PlayerManagerAbstract> getClientLazyPlayerManagerHolder() {
20+
public static LazyHolder<AbstractFabricPlayerManager> getClientLazyPlayerManagerHolder() {
2021
return lazyClientPlayerManagerHolder;
2122
}
2223

0 commit comments

Comments
 (0)