Skip to content

Commit f695398

Browse files
committed
Bugfix : Fix Home Bargain and made Attributes Apply on Respawn
1 parent edd3346 commit f695398

File tree

2 files changed

+28
-8
lines changed

2 files changed

+28
-8
lines changed

src/main/java/com/ghostipedia/cosmiccore/common/reflection/ReflectionEventHandler.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,7 @@ public static void onPlayerRespawn(PlayerEvent.PlayerRespawnEvent event) {
122122
if (!(event.getEntity() instanceof ServerPlayer player)) return;
123123

124124
ReflectionCapability.get(player).ifPresent(reflection -> {
125+
reapplyBargainEffects(player, reflection);
125126
syncBargainStates(player, reflection);
126127

127128
RespawnEvent pendingEvent = pendingRespawnEvents.remove(player.getUUID());

src/main/java/com/ghostipedia/cosmiccore/common/reflection/bargain/impl/HomeBargain.java

Lines changed: 27 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99

1010
import net.minecraft.core.BlockPos;
1111
import net.minecraft.network.chat.Component;
12+
import net.minecraft.resources.ResourceKey;
1213
import net.minecraft.resources.ResourceLocation;
1314
import net.minecraft.server.level.ServerLevel;
1415
import net.minecraft.server.level.ServerPlayer;
@@ -101,19 +102,33 @@ public static boolean executeHome(ServerPlayer player) {
101102
}
102103

103104
int cost = ReflectionConstants.getCommandCost(reflection, "home");
104-
Optional<Vec3> homePos = findHomePosition(player);
105-
if (homePos.isEmpty()) {
105+
Optional<HomeLocation> homeLoc = findHomePosition(player);
106+
if (homeLoc.isEmpty()) {
106107
player.displayClientMessage(
107108
Component.literal("\u00A7cYou have no home to return to."),
108109
false);
109110
return false;
110111
}
111112

112-
Vec3 home = homePos.get();
113+
HomeLocation home = homeLoc.get();
114+
ServerLevel targetLevel = player.server.getLevel(home.dimension);
115+
if (targetLevel == null) {
116+
player.displayClientMessage(
117+
Component.literal("\u00A7cThat place no longer exists."),
118+
false);
119+
return false;
120+
}
121+
113122
reflection.addErosion(cost);
114123
reflection.recordCommandUse("home");
115124

116-
player.teleportTo(home.x, home.y, home.z);
125+
Vec3 pos = home.position;
126+
if (player.level().dimension() != home.dimension) {
127+
player.teleportTo(targetLevel, pos.x, pos.y, pos.z, player.getYRot(), player.getXRot());
128+
} else {
129+
player.teleportTo(pos.x, pos.y, pos.z);
130+
}
131+
117132
player.level().playSound(null, player.blockPosition(),
118133
SoundEvents.ENDERMAN_TELEPORT, SoundSource.PLAYERS, 1.0f, 0.8f);
119134

@@ -137,25 +152,29 @@ public static boolean executeHome(ServerPlayer player) {
137152
}).orElse(false);
138153
}
139154

140-
private static Optional<Vec3> findHomePosition(ServerPlayer player) {
155+
private static Optional<HomeLocation> findHomePosition(ServerPlayer player) {
141156
BlockPos bedPos = player.getRespawnPosition();
142157
if (bedPos != null) {
143-
ServerLevel respawnLevel = player.server.getLevel(player.getRespawnDimension());
158+
ResourceKey<Level> respawnDim = player.getRespawnDimension();
159+
ServerLevel respawnLevel = player.server.getLevel(respawnDim);
144160
if (respawnLevel != null) {
145161
Optional<Vec3> bedSpawn = Player.findRespawnPositionAndUseSpawnBlock(
146162
respawnLevel, bedPos, player.getRespawnAngle(), true, false);
147163
if (bedSpawn.isPresent()) {
148-
return bedSpawn;
164+
return Optional.of(new HomeLocation(respawnDim, bedSpawn.get()));
149165
}
150166
}
151167
}
152168

153169
ServerLevel overworld = player.server.getLevel(Level.OVERWORLD);
154170
if (overworld != null) {
155171
BlockPos spawnPos = overworld.getSharedSpawnPos();
156-
return Optional.of(new Vec3(spawnPos.getX() + 0.5, spawnPos.getY(), spawnPos.getZ() + 0.5));
172+
return Optional.of(new HomeLocation(Level.OVERWORLD,
173+
new Vec3(spawnPos.getX() + 0.5, spawnPos.getY(), spawnPos.getZ() + 0.5)));
157174
}
158175

159176
return Optional.empty();
160177
}
178+
179+
private record HomeLocation(ResourceKey<Level> dimension, Vec3 position) {}
161180
}

0 commit comments

Comments
 (0)