Skip to content

Commit b926a32

Browse files
committed
Merge remote-tracking branch 'origin/1.21.11' into 1.21.11
2 parents 77a3844 + 4ff1c57 commit b926a32

File tree

2 files changed

+19
-11
lines changed

2 files changed

+19
-11
lines changed

common/src/main/java/net/blay09/mods/prettybeaches/FloodingManager.java

Lines changed: 18 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,38 +2,48 @@
22

33
import net.minecraft.core.BlockPos;
44
import net.minecraft.core.Direction;
5-
import net.minecraft.world.level.Level;
65
import net.minecraft.world.level.LevelAccessor;
76
import net.minecraft.world.level.block.Blocks;
87
import net.minecraft.world.level.block.state.BlockState;
98
import net.minecraft.world.level.material.FluidState;
109
import net.minecraft.world.level.material.Fluids;
1110

1211
import java.util.ArrayList;
12+
import java.util.Collections;
1313
import java.util.List;
14+
import java.util.Map;
15+
import net.minecraft.server.level.ServerLevel;
16+
import java.util.WeakHashMap;
1417

1518
public class FloodingManager {
1619

1720
public static final int FLOOD_TIME = 10;
1821
private static final int MAX_DEPTH = 6;
1922

20-
private static final List<ScheduledFloodingEntry> scheduledFloods = new ArrayList<>();
23+
private static final Map<ServerLevel, List<ScheduledFloodingEntry>> scheduledFloods = Collections.synchronizedMap(new WeakHashMap<>());
2124

2225
public static void scheduleForFlooding(LevelAccessor level, BlockPos pos, int depth) {
2326
if (PrettyBeachesConfig.getActive().animatedFlooding) {
24-
scheduledFloods.add(new ScheduledFloodingEntry(level, pos, depth));
27+
if (level instanceof ServerLevel serverLevel) {
28+
List<ScheduledFloodingEntry> floods = scheduledFloods.computeIfAbsent(serverLevel, k -> new ArrayList<>());
29+
floods.add(new ScheduledFloodingEntry(pos, depth));
30+
}
2531
} else {
2632
populateWater(level, pos, depth);
2733
}
2834
}
2935

30-
public static void onWorldTick(Level level) {
31-
for (int i = scheduledFloods.size() - 1; i >= 0; i--) {
32-
ScheduledFloodingEntry entry = scheduledFloods.get(i);
36+
public static void onWorldTick(ServerLevel level) {
37+
List<ScheduledFloodingEntry> floods = scheduledFloods.get(level);
38+
if (floods == null || floods.isEmpty()) {
39+
return;
40+
}
41+
for (int i = floods.size() - 1; i >= 0; i--) {
42+
ScheduledFloodingEntry entry = floods.get(i);
3343
entry.ticksExisted++;
3444
if (entry.ticksExisted >= FLOOD_TIME) {
35-
populateWater(entry.level, entry.pos, entry.depth);
36-
scheduledFloods.remove(i);
45+
populateWater(level, entry.pos, entry.depth);
46+
floods.remove(i);
3747
}
3848
}
3949
}

common/src/main/java/net/blay09/mods/prettybeaches/ScheduledFloodingEntry.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,11 @@
55
import net.minecraft.world.level.LevelAccessor;
66

77
public class ScheduledFloodingEntry {
8-
public LevelAccessor level;
98
public BlockPos pos;
109
public int depth;
1110
public int ticksExisted;
1211

13-
public ScheduledFloodingEntry(LevelAccessor level, BlockPos pos, int depth) {
14-
this.level = level;
12+
public ScheduledFloodingEntry(BlockPos pos, int depth) {
1513
this.pos = pos;
1614
this.depth = depth;
1715
}

0 commit comments

Comments
 (0)