Skip to content

Commit 4a22925

Browse files
committed
Add rule:fixXpLevelBug
1 parent f35e084 commit 4a22925

File tree

3 files changed

+37
-6
lines changed

3 files changed

+37
-6
lines changed

src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetAddition.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,9 @@
77
import com.mojang.brigadier.CommandDispatcher;
88
import io.github.optijava.opt_carpet_addition.commands.ListAdvanceCommand;
99
import io.github.optijava.opt_carpet_addition.commands.PlayerTpCommand;
10+
import io.github.optijava.opt_carpet_addition.events.FixExperienceBug;
1011
import net.fabricmc.api.ModInitializer;
12+
import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents;
1113
import net.minecraft.server.command.ServerCommandSource;
1214
import net.minecraft.server.network.ServerPlayerEntity;
1315
import net.minecraft.world.GameMode;
@@ -23,6 +25,8 @@ public class OptCarpetAddition implements CarpetExtension, ModInitializer {
2325
@Override
2426
public void onInitialize() {
2527
CarpetServer.manageExtension(additionInstance);
28+
29+
ServerEntityWorldChangeEvents.AFTER_PLAYER_CHANGE_WORLD.register(new FixExperienceBug());
2630
}
2731

2832
@Override

src/main/java/io/github/optijava/opt_carpet_addition/OptCarpetSettings.java

Lines changed: 17 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,35 +7,46 @@
77

88
public class OptCarpetSettings {
99
// Tp command rules =========================================================
10-
@Rule(desc = "Enables [/player xxx tp] to teleport to fake player",
10+
@Rule(
11+
desc = "Enables [/player xxx tp] to teleport to fake player",
1112
category = COMMAND,
1213
options = {"true", "false", "ops"}
1314
)
1415
public static String commandTpToFakePlayer = "false";
1516

16-
@Rule(desc = "Enables [/player xxx tp] to teleport to real player",
17+
@Rule(
18+
desc = "Enables [/player xxx tp] to teleport to real player",
1719
category = COMMAND,
1820
options = {"true", "false", "ops"}
1921
)
2022
public static String allowTpToRealPlayer = "false";
2123

22-
@Rule(desc = "Enables [/player xxx tp] to teleport to fake player",
24+
@Rule(
25+
desc = "Enables [/player xxx tp] to teleport to fake player",
2326
category = COMMAND,
2427
options = {"true", "false", "ops"}
2528
)
2629
public static String commandTpHereFakePlayer = "false";
2730

28-
@Rule(desc = "Enables [/player xxx tp] to teleport to real player",
31+
@Rule(
32+
desc = "Enables [/player xxx tp] to teleport to real player",
2933
category = COMMAND,
3034
options = {"true", "false", "ops"}
3135
)
3236
public static String allowTpHereRealPlayer = "false";
3337

3438
// Force fake player gamemode rule =========================================================
35-
36-
@Rule(desc = "Force fake player gamemode",
39+
@Rule(
40+
desc = "Force fake player gamemode",
3741
category = RuleCategory.FEATURE,
3842
options = {"survival", "creative", "adventure", "spectator", "false"}
3943
)
4044
public static String forceFakePlayerGameMode = "false";
45+
46+
// Fix bugs ================================================================================
47+
@Rule(
48+
desc = "Refresh xp level when player change world",
49+
category = RuleCategory.BUGFIX
50+
)
51+
public static boolean fixXpLevelBug = false;
4152
}
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
package io.github.optijava.opt_carpet_addition.events;
2+
3+
import io.github.optijava.opt_carpet_addition.OptCarpetSettings;
4+
import net.fabricmc.fabric.api.entity.event.v1.ServerEntityWorldChangeEvents;
5+
import net.minecraft.server.network.ServerPlayerEntity;
6+
import net.minecraft.server.world.ServerWorld;
7+
8+
public class FixExperienceBug implements ServerEntityWorldChangeEvents.AfterPlayerChange {
9+
@Override
10+
public void afterChangeWorld(ServerPlayerEntity player, ServerWorld origin, ServerWorld destination) {
11+
if (OptCarpetSettings.fixXpLevelBug) {
12+
player.addExperience(0);
13+
// refresh xp level
14+
}
15+
}
16+
}

0 commit comments

Comments
 (0)