Skip to content

Commit d09d92d

Browse files
oliwoliFourmisain
andauthored
update to 1.20.6 (#13)
* port to 1.20.6 --------- Co-authored-by: Fourmisain <8464472+Fourmisain@users.noreply.github.com>
1 parent cf88d00 commit d09d92d

14 files changed

Lines changed: 186 additions & 78 deletions

.github/workflows/build-and-test.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,11 +13,11 @@ jobs:
1313
runs-on: ubuntu-latest
1414
steps:
1515
- uses: actions/checkout@v4
16-
- name: Set up JDK 1.17
16+
- name: Set up JDK 21
1717
uses: actions/setup-java@v4
1818
with:
1919
distribution: 'adopt'
20-
java-version: 17
20+
java-version: 21
2121
- name: Cache Gradle packages
2222
uses: actions/cache@v4
2323
with:

.github/workflows/minepkg-publish.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@ jobs:
99
runs-on: ubuntu-latest
1010
steps:
1111
- uses: actions/checkout@v4
12-
- name: Set up JDK 1.17
12+
- name: Set up JDK 21
1313
uses: actions/setup-java@v4
1414
with:
1515
distribution: 'adopt'
16-
java-version: 17
16+
java-version: 21
1717
- name: Publish package on minepkg.io
1818
uses: minepkg/action-publish@main
1919
with:

.minepkg-lock.toml

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,20 +4,20 @@
44
lockfileVersion = 1
55

66
[fabric]
7-
minecraft = "1.20.4"
7+
minecraft = "1.20.6"
88
fabricLoader = "0.16.10"
9-
mapping = "1.20.4+build.3"
9+
mapping = "1.20.6+build.3"
1010

1111
[dependencies]
1212

1313
[dependencies.fabric]
1414
name = "fabric"
15-
version = "0.97.2+1.20.4.mpkg.1"
15+
version = "0.100.8+1.20.6.mpkg.1"
1616
versionName = ""
1717
type = "mod"
1818
ipfsHash = ""
19-
Sha256 = "3e820841b9f5d3d898bcb0f0abb9bfc15fb608bf07c74292ea3dd1b98d36460a"
20-
url = "https://api.preview.minepkg.io/v1/releases/fabric/fabric@0.97.2+1.20.4.mpkg.1/download"
19+
Sha256 = "aa0457cd765d62072c8ceeb75f4d8ea36698ae996e71c28a898da4d0a81752b2"
20+
url = "https://api.preview.minepkg.io/v1/releases/fabric/fabric@0.100.8+1.20.6.mpkg.1/download"
2121
provider = "minepkg"
2222
dependent = ""
2323

gradle.properties

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@ org.gradle.jvmargs=-Xmx1G
33

44
# Fabric Properties
55
# check these on https://fabricmc.net/versions.html
6-
minecraft_version=1.20.2
7-
yarn_mappings=1.20.2+build.4
6+
minecraft_version=1.20.6
7+
yarn_mappings=1.20.6+build.3
88
loader_version=0.16.10
99

1010
# Mod Properties
@@ -13,8 +13,8 @@ maven_group=io.minepkg
1313
archives_base_name=test-utils
1414

1515
# Dependencies
16-
fabric_version=0.91.6+1.20.2
17-
libgui_version=9.2.2+1.20.2
16+
fabric_version=0.100.8+1.20.6
17+
libgui_version=10.0.0+1.20.6
1818

19-
minecraft_version_range= >=1.20.2 <=1.20.4
20-
java_version=17
19+
minecraft_version_range= 1.20.6
20+
java_version=21

minepkg.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ manifestVersion = 0
1313

1414
# These are global requirements
1515
[requirements]
16-
minecraft = ">=1.20.2 <=1.20.4"
16+
minecraft = "1.20.6"
1717
fabricLoader = "*"
1818

1919
[dependencies]

src/main/java/io/minepkg/testutils/RuleBookGUI.java

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,15 @@
88
import io.github.cottonmc.cotton.gui.widget.data.Color.RGB;
99
import io.github.cottonmc.cotton.gui.widget.data.HorizontalAlignment;
1010
import io.github.cottonmc.cotton.gui.widget.data.Insets;
11-
import io.minepkg.testutils.gui.*;
12-
import io.netty.buffer.Unpooled;
11+
import io.minepkg.testutils.gui.WClickableLabel;
12+
import io.minepkg.testutils.gui.WGradient;
13+
import io.minepkg.testutils.gui.WSpriteButton;
14+
import io.minepkg.testutils.gui.WUsableClippedPanel;
15+
import io.minepkg.testutils.network.c2s.SetRulePayload;
16+
import io.minepkg.testutils.network.c2s.SetTimePayload;
17+
import io.minepkg.testutils.network.c2s.SetWeatherPayload;
1318
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
1419
import net.minecraft.entity.player.PlayerEntity;
15-
import net.minecraft.network.PacketByteBuf;
1620
import net.minecraft.registry.entry.RegistryEntry;
1721
import net.minecraft.text.Text;
1822
import net.minecraft.util.Identifier;
@@ -221,10 +225,8 @@ public void tick() {
221225

222226
private void setTime(long timeOfDay) {
223227
preventTickUpdates = 1000;
224-
PacketByteBuf passedData = new PacketByteBuf(Unpooled.buffer());
225-
passedData.writeLong(timeOfDay);
226228
// Send packet to server to change the time
227-
ClientPlayNetworking.send(TestUtils.SET_TIME_C2S, passedData);
229+
ClientPlayNetworking.send(new SetTimePayload(timeOfDay));
228230
timeSlider.setValue((int)timeOfDay, false);
229231
envBox.setTimeOfDay(timeOfDay);
230232
// TODO: wait for response instead
@@ -233,20 +235,14 @@ private void setTime(long timeOfDay) {
233235

234236
private void setRule(short id, boolean value) {
235237
preventTickUpdates += 1;
236-
PacketByteBuf passedData = new PacketByteBuf(Unpooled.buffer());
237-
// eg. 0 is day cycle
238-
passedData.writeShort(id);
239-
// enabling the button locks the weather
240-
passedData.writeBoolean(value);
241-
ClientPlayNetworking.send(TestUtils.SET_RULE_C2S, passedData);
238+
// e.g. id 0 is day cycle, enabling the button locks the weather
239+
ClientPlayNetworking.send(new SetRulePayload(id, value));
242240
preventTickUpdates = 20;
243241
}
244242

245243
private void setWeather(short weather) {
246244
preventTickUpdates += 1;
247-
PacketByteBuf passedData = new PacketByteBuf(Unpooled.buffer());
248-
passedData.writeShort(weather);
249-
ClientPlayNetworking.send(TestUtils.SET_WEATHER_C2S, passedData);
245+
ClientPlayNetworking.send(new SetWeatherPayload(weather));
250246
preventTickUpdates = 30;
251247
}
252248
}
Lines changed: 31 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,19 @@
11
package io.minepkg.testutils;
22

3-
import io.netty.buffer.Unpooled;
3+
import io.minepkg.testutils.network.c2s.SetRulePayload;
4+
import io.minepkg.testutils.network.c2s.SetTimePayload;
5+
import io.minepkg.testutils.network.c2s.SetWeatherPayload;
6+
import io.minepkg.testutils.network.s2c.OpenBookPayload;
7+
import io.minepkg.testutils.network.s2c.WeatherGameruleSyncPayload;
48
import net.fabricmc.api.ModInitializer;
59
import net.fabricmc.fabric.api.itemgroup.v1.ItemGroupEvents;
10+
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
611
import net.fabricmc.fabric.api.networking.v1.ServerPlayConnectionEvents;
712
import net.fabricmc.fabric.api.networking.v1.ServerPlayNetworking;
813
import net.minecraft.item.Item;
914
import net.minecraft.item.ItemGroups;
10-
import net.minecraft.network.PacketByteBuf;
1115
import net.minecraft.registry.Registries;
1216
import net.minecraft.registry.Registry;
13-
1417
import net.minecraft.server.MinecraftServer;
1518
import net.minecraft.server.network.ServerPlayerEntity;
1619
import net.minecraft.server.world.ServerWorld;
@@ -24,13 +27,6 @@ public class TestUtils implements ModInitializer {
2427
public static final String MOD_ID = "testutils"; // Note: currently different from fabric.mod.json id
2528
public static final Logger LOGGER = LogManager.getLogger(MOD_ID);
2629

27-
public static final Identifier OPEN_BOOK_S2C = TestUtils.id("open_book");
28-
public static final Identifier WEATHER_GAMERULE_SYNC_S2C = TestUtils.id("weather_sync");
29-
30-
public static final Identifier SET_TIME_C2S = TestUtils.id("set_time");
31-
public static final Identifier SET_RULE_C2S = TestUtils.id("set_rule");
32-
public static final Identifier SET_WEATHER_C2S = TestUtils.id("set_weather");
33-
3430
public static final short DO_DAYLIGHT_CYCLE_RULE = 1;
3531
public static final short DO_WEATHER_CYCLE_RULE = 2;
3632

@@ -62,86 +58,82 @@ public void onInitialize() {
6258
});
6359

6460
// client wants to set the time
65-
ServerPlayNetworking.registerGlobalReceiver(SET_TIME_C2S, (server, player, handler, buf, responseSender) -> {
66-
// make sure its not over 24000
67-
long wantedTime = buf.getLong(0) % 24000;
68-
61+
PayloadTypeRegistry.playC2S().register(SetTimePayload.ID, SetTimePayload.CODEC);
62+
ServerPlayNetworking.registerGlobalReceiver(SetTimePayload.ID, (payload, context) -> {
6963
// Execute on the main thread
70-
server.execute(() -> {
71-
ServerWorld world = player.getServerWorld();
64+
context.player().server.execute(() -> {
65+
ServerWorld world = context.player().getServerWorld();
7266
// set the time
73-
world.setTimeOfDay(wantedTime);
67+
world.setTimeOfDay(payload.time());
7468
});
7569
});
7670

7771
// client wants to set the weather
78-
ServerPlayNetworking.registerGlobalReceiver(SET_WEATHER_C2S, (server, player, handler, buf, responseSender) -> {
79-
short weather = buf.getShort(0);
80-
ServerWorld world = player.getServerWorld();
72+
PayloadTypeRegistry.playC2S().register(SetWeatherPayload.ID, SetWeatherPayload.CODEC);
73+
ServerPlayNetworking.registerGlobalReceiver(SetWeatherPayload.ID, (payload, context) -> {
74+
ServerWorld world = context.player().getServerWorld();
8175

8276
// Execute on the main thread
83-
server.execute(() -> {
84-
switch (weather) {
77+
context.player().server.execute(() -> {
78+
switch (payload.weather()) {
8579
case WEATHER_CLEAR -> world.setWeather(120000, 0, false, false);
8680
case WEATHER_RAIN -> world.setWeather(0, 24000, true, false);
8781
case WEATHER_THUNDER -> world.setWeather(0, 24000, true, true);
8882
}
8983
});
9084
});
9185

92-
// client wants to set a rule (eg. freeze the time)
93-
ServerPlayNetworking.registerGlobalReceiver(SET_RULE_C2S, (server, player, handler, buf, sender) -> {
94-
short ruleID = buf.getShort(0);
95-
boolean value = buf.getBoolean(2);
86+
// client wants to set a rule (e.g. freeze the time)
87+
PayloadTypeRegistry.playC2S().register(SetRulePayload.ID, SetRulePayload.CODEC);
88+
ServerPlayNetworking.registerGlobalReceiver(SetRulePayload.ID, (payload, context) -> {
89+
ServerPlayerEntity player = context.player();
90+
MinecraftServer server = player.server;
9691
ServerWorld world = player.getServerWorld();
9792

9893
// Execute on the main thread
9994
server.execute(() -> {
10095

10196
GameRules rules = world.getGameRules();
10297

103-
switch(ruleID) {
98+
switch(payload.ruleID()) {
10499
// daylight cycle
105100
case DO_DAYLIGHT_CYCLE_RULE -> {
106101
BooleanRule rule = rules.get(GameRules.DO_DAYLIGHT_CYCLE);
107-
rule.set(value, world.getServer());
102+
rule.set(payload.value(), server);
108103
}
109104
case DO_WEATHER_CYCLE_RULE -> {
110105
BooleanRule rule = rules.get(GameRules.DO_WEATHER_CYCLE);
111-
rule.set(value, world.getServer());
112-
broadcastWeatherRuleChange(server, value);
106+
rule.set(payload.value(), server);
107+
broadcastWeatherRuleChange(server, payload.value());
113108
}
114109
default ->
115110
LOGGER.error(
116111
"Player {} requested to change an unsupported rule id ({}). (client might be outdated)",
117112
player.getName().getString(),
118-
ruleID
113+
payload.ruleID()
119114
);
120115
}
121116
});
122117
});
123118
}
124119

125120
public static void sendOpenBookPacket(ServerPlayerEntity player) {
126-
PacketByteBuf packet = new PacketByteBuf(Unpooled.buffer());
127-
ServerPlayNetworking.send(player, OPEN_BOOK_S2C, packet);
121+
ServerPlayNetworking.send(player, new OpenBookPayload());
128122
}
129123

130124
public static void broadcastWeatherRuleChange(MinecraftServer server, boolean value) {
131-
PacketByteBuf packet = new PacketByteBuf(Unpooled.buffer());
132-
packet.writeBoolean(value);
125+
var payload = new WeatherGameruleSyncPayload(value);
133126

134127
// Notify each player on the server about the weather gamerule update.
135128
server.getPlayerManager().getPlayerList().forEach(player -> {
136-
ServerPlayNetworking.send(player, WEATHER_GAMERULE_SYNC_S2C, packet);
129+
ServerPlayNetworking.send(player, payload);
137130
});
138131
}
139132

140133
public static void sendWeatherRule(ServerPlayerEntity player) {
141134
ServerWorld world = player.getServerWorld();
142135
boolean doWeatherCycle = world.getGameRules().getBoolean(GameRules.DO_WEATHER_CYCLE);
143-
PacketByteBuf packet = new PacketByteBuf(Unpooled.buffer());
144-
packet.writeBoolean(doWeatherCycle);
145-
ServerPlayNetworking.send(player, WEATHER_GAMERULE_SYNC_S2C, packet);
136+
var payload = new WeatherGameruleSyncPayload(doWeatherCycle);
137+
ServerPlayNetworking.send(player, payload);
146138
}
147139
}

src/main/java/io/minepkg/testutils/TestUtilsClient.java

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,11 @@
11
package io.minepkg.testutils;
22

3+
import io.minepkg.testutils.network.s2c.OpenBookPayload;
4+
import io.minepkg.testutils.network.s2c.WeatherGameruleSyncPayload;
35
import net.fabricmc.api.ClientModInitializer;
46
import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking;
7+
import net.fabricmc.fabric.api.networking.v1.PayloadTypeRegistry;
8+
import net.minecraft.client.MinecraftClient;
59

610
public class TestUtilsClient implements ClientModInitializer {
711

@@ -10,17 +14,19 @@ public class TestUtilsClient implements ClientModInitializer {
1014

1115
@Override
1216
public void onInitializeClient() {
13-
ClientPlayNetworking.registerGlobalReceiver(TestUtils.OPEN_BOOK_S2C, (client, clientPlayNetworkHandler, packet, packetSender) -> {
17+
PayloadTypeRegistry.playS2C().register(OpenBookPayload.ID, OpenBookPayload.CODEC);
18+
ClientPlayNetworking.registerGlobalReceiver(OpenBookPayload.ID, (payload, context) -> {
19+
MinecraftClient client = context.client();
20+
1421
client.execute(() -> {
1522
client.setScreen(new RuleBookScreen(new RuleBookGUI(client.world, client.player)));
1623
});
1724
});
1825

19-
ClientPlayNetworking.registerGlobalReceiver(TestUtils.WEATHER_GAMERULE_SYNC_S2C, (client, clientPlayNetworkHandler, packet, packetSender) -> {
20-
boolean doWeatherCycle = packet.readBoolean();
21-
22-
client.execute(() -> {
23-
TestUtilsClient.doWeatherCycle = doWeatherCycle;
26+
PayloadTypeRegistry.playS2C().register(WeatherGameruleSyncPayload.ID, WeatherGameruleSyncPayload.CODEC);
27+
ClientPlayNetworking.registerGlobalReceiver(WeatherGameruleSyncPayload.ID, (payload, context) -> {
28+
context.client().execute(() -> {
29+
TestUtilsClient.doWeatherCycle = payload.doWeatherCycle();
2430
// Does not work because .. minecraft
2531
// ((GameRules.BooleanRule)client.world.getGameRules().get(GameRules.DO_WEATHER_CYCLE)).set(doWeatherCycle, (MinecraftServer)null);
2632
});

src/main/java/io/minepkg/testutils/gui/WGradient.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
import io.github.cottonmc.cotton.gui.widget.data.Color.RGB;
66
import net.fabricmc.api.EnvType;
77
import net.fabricmc.api.Environment;
8-
import net.minecraft.client.gui.DrawContext; // Import DrawContext!
8+
import net.minecraft.client.gui.DrawContext;
99

1010
public class WGradient extends WWidget {
1111

@@ -38,4 +38,4 @@ public static RGB interpolateColors(RGB color1, RGB color2, double percent){
3838
double b = (color2.getB() - color1.getB()) * percent + color1.getB();
3939
return new RGB((int)a, (int)r, (int)g, (int)b);
4040
}
41-
}
41+
}
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
package io.minepkg.testutils.network.c2s;
2+
3+
import io.minepkg.testutils.TestUtils;
4+
import net.minecraft.network.PacketByteBuf;
5+
import net.minecraft.network.codec.PacketCodec;
6+
import net.minecraft.network.packet.CustomPayload;
7+
8+
public record SetRulePayload(short ruleID, boolean value) implements CustomPayload {
9+
public static final Id<SetRulePayload> ID = new Id<>(TestUtils.id("set_rule"));
10+
11+
public static final PacketCodec<PacketByteBuf, SetRulePayload> CODEC = PacketCodec.of(
12+
(payload, buf) -> {
13+
buf.writeShort(payload.ruleID);
14+
buf.writeBoolean(payload.value);
15+
},
16+
buf -> {
17+
short ruleID = buf.readShort();
18+
boolean value = buf.readBoolean();
19+
return new SetRulePayload(ruleID, value);
20+
}
21+
);
22+
23+
@Override
24+
public Id<? extends CustomPayload> getId() {
25+
return ID;
26+
}
27+
}

0 commit comments

Comments
 (0)