Skip to content

Commit dfe8747

Browse files
authored
Merge pull request #76 from FTBTeam/dev
Dev
2 parents 2f1ab66 + 19b9bd2 commit dfe8747

File tree

7 files changed

+53
-6
lines changed

7 files changed

+53
-6
lines changed

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,16 @@ All notable changes to this project will be documented in this file.
44
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
55
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## [2101.1.3]
8+
9+
### Added
10+
* Now fires an `EntityTeleportEvent.TeleportCommand` event on NeoForge when any teleportation is done
11+
* Note: There isn't a Fabric API equivalent for this event
12+
13+
### Fixed
14+
* Fixed problem on SMP where player data (e.g. home location) wasn't always written for the player
15+
* In particular if player disconnected before the server ran a scheduled level save
16+
717
## [2101.1.2]
818

919
### Fixed

common/src/main/java/dev/ftb/mods/ftbessentials/FTBEEventHandler.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ private static void playerLoggedIn(ServerPlayer serverPlayer) {
108108
private static void playerLoggedOut(ServerPlayer serverPlayer) {
109109
FTBEPlayerData.getOrCreate(serverPlayer).ifPresent(data -> {
110110
data.setLastSeenPos(new TeleportPos(serverPlayer));
111-
data.markDirty();
111+
data.saveIfChanged();
112112
});
113113
}
114114

common/src/main/java/dev/ftb/mods/ftbessentials/util/WarmupCooldownTeleporter.java

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package dev.ftb.mods.ftbessentials.util;
22

33
import dev.architectury.event.CompoundEventResult;
4+
import dev.architectury.injectables.annotations.ExpectPlatform;
45
import dev.ftb.mods.ftbessentials.api.event.TeleportEvent;
56
import dev.ftb.mods.ftbessentials.config.FTBEConfig;
67
import dev.ftb.mods.ftbessentials.util.TeleportPos.TeleportResult;
@@ -49,15 +50,25 @@ public TeleportResult checkCooldown(ServerPlayer player) {
4950
return TeleportResult.SUCCESS;
5051
}
5152

53+
@ExpectPlatform
54+
private static boolean firePlatformTeleportEvent(ServerPlayer player, Vec3 pos) {
55+
throw new AssertionError();
56+
}
57+
5258
public TeleportResult teleport(ServerPlayer player, Function<ServerPlayer, TeleportPos> positionGetter) {
59+
TeleportResult cooldownResult = checkCooldown(player);
60+
if (!cooldownResult.isSuccess()) {
61+
return cooldownResult;
62+
}
63+
5364
CompoundEventResult<Component> result = TeleportEvent.TELEPORT.invoker().teleport(player);
5465
if (result.isFalse()) {
5566
return TeleportResult.failed(result.object());
5667
}
5768

58-
TeleportResult cooldownResult = checkCooldown(player);
59-
if (!cooldownResult.isSuccess()) {
60-
return cooldownResult;
69+
TeleportPos pos = positionGetter.apply(player);
70+
if (!firePlatformTeleportEvent(player, Vec3.atBottomCenterOf(pos.getPos()))) {
71+
return TeleportResult.failed(Component.translatable("ftbessentials.teleport_prevented"));
6172
}
6273

6374
int warmupTime = warmupConfig.applyAsInt(player);

common/src/main/resources/assets/ftbessentials/lang/en_us.json

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,6 @@
66
"ftbessentials.chat.status.stop_stream": "is no longer streaming!",
77
"ftbessentials.messages.kick_self": "You kicked yourself!",
88
"ftbessentials.feedback.limit_radius": "Limiting radius to %s",
9-
"ftbessentials.feedback.players_within": "%s player(s) within %sm"
9+
"ftbessentials.feedback.players_within": "%s player(s) within %sm",
10+
"ftbessentials.teleport_prevented": "Teleportation was prevented!"
1011
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
package dev.ftb.mods.ftbessentials.util.fabric;
2+
3+
import net.minecraft.server.level.ServerPlayer;
4+
import net.minecraft.world.phys.Vec3;
5+
6+
public class WarmupCooldownTeleporterImpl {
7+
public static boolean firePlatformTeleportEvent(ServerPlayer player, Vec3 pos) {
8+
// TODO don't think there's a FAPI event for this; update here if one gets added
9+
return true;
10+
}
11+
}

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ archives_base_name=ftb-essentials
99
maven_group=dev.ftb.mods
1010

1111
minecraft_version=1.21.1
12-
mod_version=2101.1.2
12+
mod_version=2101.1.3
1313
mod_author=FTB Team
1414

1515
# Deps
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package dev.ftb.mods.ftbessentials.util.neoforge;
2+
3+
import net.minecraft.server.level.ServerPlayer;
4+
import net.minecraft.world.phys.Vec3;
5+
import net.neoforged.neoforge.common.NeoForge;
6+
import net.neoforged.neoforge.event.entity.EntityTeleportEvent;
7+
8+
public class WarmupCooldownTeleporterImpl {
9+
public static boolean firePlatformTeleportEvent(ServerPlayer player, Vec3 pos) {
10+
EntityTeleportEvent.TeleportCommand event = new EntityTeleportEvent.TeleportCommand(player, pos.x, pos.y, pos.z);
11+
NeoForge.EVENT_BUS.post(event);
12+
return !event.isCanceled();
13+
}
14+
}

0 commit comments

Comments
 (0)