Skip to content

Commit 2e42c2d

Browse files
committed
Add for 1.21.9/10, set events=false for later paper versions
1 parent 25de0c9 commit 2e42c2d

File tree

7 files changed

+52
-23
lines changed

7 files changed

+52
-23
lines changed

worldedit-bukkit/adapters/adapter-1_21_4/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_4/PaperweightGetBlocks.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ protected <T extends Future<T>> T internalCall(
677677
entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM;
678678
entity.generation = false;
679679
if (PaperLib.isPaper()) {
680-
if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity)) {
680+
if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) {
681681
onError.run();
682682
}
683683
continue;

worldedit-bukkit/adapters/adapter-1_21_5/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_5/PaperweightGetBlocks.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -677,7 +677,7 @@ protected <T extends Future<T>> T internalCall(
677677
entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM;
678678
entity.generation = false;
679679
if (PaperLib.isPaper()) {
680-
if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity)) {
680+
if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) {
681681
onError.run();
682682
}
683683
continue;

worldedit-bukkit/adapters/adapter-1_21_6/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_6/PaperweightGetBlocks.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -683,7 +683,7 @@ protected <T extends Future<T>> T internalCall(
683683
entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM;
684684
entity.generation = false;
685685
if (PaperLib.isPaper()) {
686-
if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity)) {
686+
if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) {
687687
onError.run();
688688
}
689689
continue;

worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/ext/fawe/v1_21_9/PaperweightAdapter.java

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -871,12 +871,13 @@ private ResourceKey<LevelStem> getWorldDimKey(Environment env) {
871871
}
872872

873873
private static final Set<SideEffect> SUPPORTED_SIDE_EFFECTS = Sets.immutableEnumSet(
874-
SideEffect.NEIGHBORS,
874+
//FAWE start - FAWE-supported side effects
875+
SideEffect.HISTORY,
876+
SideEffect.HEIGHTMAPS,
875877
SideEffect.LIGHTING,
876-
SideEffect.VALIDATION,
877-
SideEffect.ENTITY_AI,
878-
SideEffect.EVENTS,
879-
SideEffect.UPDATE
878+
SideEffect.NEIGHBORS,
879+
SideEffect.ENTITY_EVENTS
880+
//FAWE end
880881
);
881882

882883
@Override

worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightFaweAdapter.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -336,7 +336,8 @@ public BaseBlock getFullBlock(final Location location) {
336336
SideEffect.HISTORY,
337337
SideEffect.HEIGHTMAPS,
338338
SideEffect.LIGHTING,
339-
SideEffect.NEIGHBORS
339+
SideEffect.NEIGHBORS,
340+
SideEffect.ENTITY_EVENTS
340341
);
341342

342343
@Override

worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightGetBlocks.java

Lines changed: 32 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -332,11 +332,11 @@ public CompletableFuture<LevelChunk> ensureLoaded(ServerLevel nmsWorld) {
332332

333333
@Override
334334
protected <T extends Future<T>> T internalCall(
335-
IChunkSet set,
336-
Runnable finalizer,
337-
int copyKey,
338-
LevelChunk nmsChunk,
339-
ServerLevel nmsWorld
335+
final IChunkSet set,
336+
final Runnable finalizer,
337+
final int copyKey,
338+
final LevelChunk nmsChunk,
339+
final ServerLevel nmsWorld
340340
) throws Exception {
341341
PaperweightGetBlocks_Copy copy = createCopy ? new PaperweightGetBlocks_Copy(nmsChunk) : null;
342342
if (createCopy) {
@@ -672,15 +672,34 @@ protected <T extends Future<T>> T internalCall(
672672
entity.load(input);
673673
entity.absSnapTo(x, y, z, yaw, pitch);
674674
entity.setUUID(NbtUtils.uuid(nativeTag));
675+
Runnable onError = () -> LOGGER.warn(
676+
"Error creating entity of type `{}` in world `{}` at location `{},{},{}`",
677+
id,
678+
nmsWorld.getWorld().getName(),
679+
x,
680+
y,
681+
z
682+
);
683+
if (!set.getSideEffectSet().shouldApply(SideEffect.ENTITY_EVENTS)) {
684+
entity.spawnReason = CreatureSpawnEvent.SpawnReason.CUSTOM;
685+
entity.generation = false;
686+
if (PaperLib.isPaper()) {
687+
if (!nmsWorld.moonrise$getEntityLookup().addNewEntity(entity, false)) {
688+
onError.run();
689+
}
690+
continue;
691+
}
692+
// Not paper
693+
try {
694+
PaperweightPlatformAdapter.getEntitySectionManager(nmsWorld).addNewEntity(entity);
695+
continue;
696+
} catch (IllegalAccessException e) {
697+
// Fallback
698+
LOGGER.warn("Error bypassing entity events on spawn on Spigot", e);
699+
}
700+
}
675701
if (!nmsWorld.addFreshEntity(entity, CreatureSpawnEvent.SpawnReason.CUSTOM)) {
676-
LOGGER.warn(
677-
"Error creating entity of type `{}` in world `{}` at location `{},{},{}`",
678-
id,
679-
nmsWorld.getWorld().getName(),
680-
x,
681-
y,
682-
z
683-
);
702+
onError.run();
684703
// Unsuccessful create should not be saved to history
685704
iterator.remove();
686705
}

worldedit-bukkit/adapters/adapter-1_21_9/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_9/PaperweightPlatformAdapter.java

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -635,10 +635,18 @@ static List<Entity> getEntities(LevelChunk chunk) {
635635
}
636636
try {
637637
//noinspection unchecked
638-
return ((PersistentEntitySectionManager<Entity>) (SERVER_LEVEL_ENTITY_MANAGER.get(chunk.level))).getEntities(chunk.getPos());
638+
return getEntitySectionManager(chunk.level).getEntities(chunk.getPos());
639639
} catch (IllegalAccessException e) {
640640
throw new RuntimeException("Failed to lookup entities [PAPER=false]", e);
641641
}
642642
}
643643

644+
/**
645+
* Spigot only
646+
*/
647+
static PersistentEntitySectionManager<Entity> getEntitySectionManager(ServerLevel level) throws IllegalAccessException {
648+
//noinspection unchecked
649+
return (PersistentEntitySectionManager<Entity>) (SERVER_LEVEL_ENTITY_MANAGER.get(level));
650+
}
651+
644652
}

0 commit comments

Comments
 (0)