Skip to content

Commit c7580f9

Browse files
committed
Added option to not TP jailed player out of jail at end of sentence
1 parent ce534a2 commit c7580f9

File tree

5 files changed

+34
-11
lines changed

5 files changed

+34
-11
lines changed

README.md

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@ A classic jail mod for Minecraft Fabric servers (1.21.8+) - just like the good o
1818
- Teleport or escape (automatic teleport back to jail)
1919
- **Configurable**: Extensive config file for customization
2020
- **Data Persistence**: All jails and jailed players are saved and restored on server restart
21-
- **Auto-Release**: Players are automatically released when their sentence expires and teleported back
22-
- **Original Location Tracking**: Players are teleported back to their original location upon release
21+
- **Auto-Release**: Players are automatically released when their sentence expires
22+
- **Original Location Tracking**: Players are teleported back to their original location upon release (configurable)
2323
- **Logout/Login Handling**: Players remain jailed across logout/login and are auto-released if sentence expired offline
2424
- **Multiple Jails**: Create multiple jails and choose which one to send players to
2525
- **Essential Commands Compatible**: Fully compatible with [Essential Commands](https://modrinth.com/mod/essential-commands) - the recommended companion mod
@@ -34,7 +34,7 @@ A classic jail mod for Minecraft Fabric servers (1.21.8+) - just like the good o
3434
- `/jail <player> <jail_name> <time> <reason>` - Jail a player in a specific jail
3535
- Example: `/jail Steve spawn 30 Being annoying`
3636

37-
- `/jail release <player>` - Release a player from jail early and teleport them back to where they were
37+
- `/jail release <player>` - Release a player from jail early (teleports back to original location if enabled in config)
3838

3939
- `/jail time` - Check your own remaining jail time (available to jailed players)
4040
- `/jail time <player>` - Check any player's jail time (admin only - requires `oldschooljail.jail` permission)
@@ -78,6 +78,9 @@ The TOML file includes detailed comments for each option. Here's what you can co
7878
- `block_block_placing` - Prevent placing blocks
7979
- `block_interaction` - Prevent interacting with blocks
8080

81+
**Release Settings:**
82+
- `teleport_back_on_release` - Teleport players back to original location when released (if false, players must walk out manually)
83+
8184
**Messages:**
8285
- `release` - Message on manual release
8386
- `jail_expired` - Message when sentence expires

src/main/java/com/oldschooljail/command/JailCommand.java

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -278,12 +278,14 @@ private static int deleteJail(CommandContext<ServerCommandSource> context) throw
278278
return 0;
279279
}
280280

281-
// Release players in this jail and teleport them back
281+
// Release players in this jail and teleport them back (if enabled)
282282
JailedPlayersData jailedData = OldSchoolJailMod.getJailedPlayersData();
283283
for (JailedPlayer jp : jailedData.getPlayersInJail(name)) {
284284
ServerPlayerEntity player = source.getServer().getPlayerManager().getPlayer(jp.getPlayerUuid());
285285
if (player != null) {
286-
jailedData.teleportToOriginalLocation(player, jp, source.getServer());
286+
if (OldSchoolJailMod.getConfig().teleportBackOnRelease) {
287+
jailedData.teleportToOriginalLocation(player, jp, source.getServer());
288+
}
287289
player.sendMessage(Text.literal("§aYou have been released because the jail was deleted."));
288290
}
289291
jailedData.releasePlayer(jp.getPlayerUuid());
@@ -314,10 +316,10 @@ private static int releasePlayer(CommandContext<ServerCommandSource> context) th
314316
// Get jailed player data before releasing
315317
JailedPlayer jailedPlayer = jailedData.getJailedPlayer(target.getUuid());
316318

317-
// Release and teleport back
319+
// Release and teleport back (if enabled)
318320
jailedData.releasePlayer(target.getUuid());
319321

320-
if (jailedPlayer != null) {
322+
if (jailedPlayer != null && OldSchoolJailMod.getConfig().teleportBackOnRelease) {
321323
jailedData.teleportToOriginalLocation(target, jailedPlayer, source.getServer());
322324
}
323325

src/main/java/com/oldschooljail/config/JailConfig.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ public enum TimeUnit {
2424
public boolean blockBlockBreaking = true;
2525
public boolean blockBlockPlacing = true;
2626
public boolean blockInteraction = true;
27+
public boolean teleportBackOnRelease = true;
2728
public String releaseMessage = "§aYou have been released from jail!";
2829
public String jailExpiredMessage = "§aYour jail sentence has expired. You are now free!";
2930

@@ -46,6 +47,7 @@ public static JailConfig load() {
4647
config.blockBlockBreaking = fileConfig.getOrElse("restrictions.block_block_breaking", true);
4748
config.blockBlockPlacing = fileConfig.getOrElse("restrictions.block_block_placing", true);
4849
config.blockInteraction = fileConfig.getOrElse("restrictions.block_interaction", true);
50+
config.teleportBackOnRelease = fileConfig.getOrElse("release.teleport_back_on_release", true);
4951

5052
config.releaseMessage = fileConfig.getOrElse("messages.release", "§aYou have been released from jail!");
5153
config.jailExpiredMessage = fileConfig.getOrElse("messages.jail_expired", "§aYour jail sentence has expired. You are now free!");
@@ -121,6 +123,16 @@ public void save() {
121123
" Prevent interacting with blocks (buttons, levers, doors, etc.) while jailed\n" +
122124
" Recommended: true");
123125

126+
// Release settings
127+
config.setComment("release",
128+
" Settings for when players are released from jail");
129+
130+
config.set("release.teleport_back_on_release", teleportBackOnRelease);
131+
config.setComment("release.teleport_back_on_release",
132+
" Teleport players back to their original location when released\n" +
133+
" If false, players must walk out of jail manually\n" +
134+
" Recommended: true (prevents confusion about where they are)");
135+
124136
// Message settings
125137
config.setComment("messages",
126138
" Customizable messages sent to players\n" +

src/main/java/com/oldschooljail/data/JailedPlayersData.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -81,7 +81,9 @@ public void startReleaseTimer(MinecraftServer server) {
8181
if (player != null) {
8282
// Player is online - release them immediately
8383
player.sendMessage(Text.literal(OldSchoolJailMod.getConfig().jailExpiredMessage));
84-
teleportToOriginalLocation(player, jp, server);
84+
if (OldSchoolJailMod.getConfig().teleportBackOnRelease) {
85+
teleportToOriginalLocation(player, jp, server);
86+
}
8587
releasePlayer(uuid);
8688
}
8789
// If player is offline, don't release them yet - let PlayerEventHandler handle it when they rejoin

src/main/java/com/oldschooljail/event/PlayerEventHandler.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,11 @@ public static void register() {
2222

2323
if (jailedPlayer != null) {
2424
if (jailedPlayer.shouldBeReleased()) {
25-
// Sentence expired while offline - release and teleport back
25+
// Sentence expired while offline - release and teleport back (if enabled)
2626
player.sendMessage(Text.literal(OldSchoolJailMod.getConfig().jailExpiredMessage));
27-
jailedData.teleportToOriginalLocation(player, jailedPlayer, server);
27+
if (OldSchoolJailMod.getConfig().teleportBackOnRelease) {
28+
jailedData.teleportToOriginalLocation(player, jailedPlayer, server);
29+
}
2830
jailedData.releasePlayer(player.getUuid());
2931
} else {
3032
// Still jailed - teleport to jail
@@ -38,7 +40,9 @@ public static void register() {
3840
} else {
3941
// Jail was deleted while offline - release them
4042
player.sendMessage(Text.literal("§aYour jail was removed. You are free!"));
41-
jailedData.teleportToOriginalLocation(player, jailedPlayer, server);
43+
if (OldSchoolJailMod.getConfig().teleportBackOnRelease) {
44+
jailedData.teleportToOriginalLocation(player, jailedPlayer, server);
45+
}
4246
jailedData.releasePlayer(player.getUuid());
4347
}
4448
}

0 commit comments

Comments
 (0)