Skip to content

Commit 6584546

Browse files
SirYwellCopilotCopilotNotMyFault
authored
Introduce 26.2 support (#3566)
* Introduce 26.2 support * Delegate to correct method Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> * Fix wrong method call in PaperweightChunkAccessProxy (#3567) Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> * Add 26.2 issue template entry * leafpile snakeyaml workaround (??) --------- Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com> Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com> Co-authored-by: Alexander Brandes <mc.cache@web.de>
1 parent 74ad677 commit 6584546

43 files changed

Lines changed: 11667 additions & 10 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/ISSUE_TEMPLATE/bug_report.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ body:
2727
description: Which server version version you using? If your server version is not listed, it is not supported. Update to a supported version first.
2828
multiple: false
2929
options:
30+
- '26.2'
3031
- '26.1.2'
3132
- '1.21.11'
3233
- '1.21.10'

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ allprojects {
9494
}
9595

9696
val supportedVersions: List<String> = listOf("1.21", "1.21.1", "1.21.4", "1.21.5",
97-
"1.21.8", "1.21.10", "1.21.11", "26.1.2")
97+
"1.21.8", "1.21.10", "1.21.11", "26.1.2", "26.2")
9898

9999
tasks {
100100
supportedVersions.forEach {

settings.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ includeBuild("build-logic")
5555

5656
include("worldedit-libs")
5757

58-
listOf("1_21", "1_21_4", "1_21_5", "1_21_6", "1_21_9", "1_21_11", "26.1").forEach {
58+
listOf("1_21", "1_21_4", "1_21_5", "1_21_6", "1_21_9", "1_21_11", "26.1", "26.2").forEach {
5959
include("worldedit-bukkit:adapters:adapter-$it")
6060
}
6161

worldedit-bukkit/adapters/adapter-1_21_11/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v1_21_11/PaperweightChunkAccessProxy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ public BlockEntity getBlockEntity(final @Nonnull BlockPos pos) {
213213

214214
@Override
215215
public @Nonnull SWMRNibbleArray[] starlight$getSkyNibbles() {
216-
return parent.starlight$getBlockNibbles();
216+
return parent.starlight$getSkyNibbles();
217217
}
218218

219219
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ public BlockEntity getBlockEntity(final @Nonnull BlockPos pos) {
213213

214214
@Override
215215
public @Nonnull SWMRNibbleArray[] starlight$getSkyNibbles() {
216-
return parent.starlight$getBlockNibbles();
216+
return parent.starlight$getSkyNibbles();
217217
}
218218

219219
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ public BlockEntity getBlockEntity(final @Nonnull BlockPos pos) {
213213

214214
@Override
215215
public @Nonnull SWMRNibbleArray[] starlight$getSkyNibbles() {
216-
return parent.starlight$getBlockNibbles();
216+
return parent.starlight$getSkyNibbles();
217217
}
218218

219219
@Override

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ public BlockEntity getBlockEntity(final @Nonnull BlockPos pos) {
213213

214214
@Override
215215
public @Nonnull SWMRNibbleArray[] starlight$getSkyNibbles() {
216-
return parent.starlight$getBlockNibbles();
216+
return parent.starlight$getSkyNibbles();
217217
}
218218

219219
@Override

worldedit-bukkit/adapters/adapter-26.1/src/main/java/com/sk89q/worldedit/bukkit/adapter/impl/fawe/v26_1/PaperweightChunkAccessProxy.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -213,7 +213,7 @@ public BlockEntity getBlockEntity(final @Nonnull BlockPos pos) {
213213

214214
@Override
215215
public @Nonnull SWMRNibbleArray[] starlight$getSkyNibbles() {
216-
return parent.starlight$getBlockNibbles();
216+
return parent.starlight$getSkyNibbles();
217217
}
218218

219219
@Override
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import io.papermc.paperweight.userdev.PaperweightUserDependenciesExtension
2+
3+
plugins {
4+
id("buildlogic.adapter")
5+
}
6+
7+
// workaround LeafPile providing wrong snakeyaml version
8+
configurations.named("testRuntimeClasspath") {
9+
exclude(group = "org.yaml", module = "snakeyaml")
10+
}
11+
12+
dependencies {
13+
// https://artifactory.papermc.io/ui/native/universe/io/papermc/paper/dev-bundle/
14+
the<PaperweightUserDependenciesExtension>().paperDevBundle("26.2.build.+")
15+
compileOnly(libs.paperLib)
16+
testRuntimeOnly(libs.snakeyaml) {
17+
because("Keep adapter tests on Bukkit's SnakeYaml while excluding LeafPile's conflicting transitive version")
18+
}
19+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,229 @@
1+
package com.sk89q.worldedit.bukkit.adapter.impl.fawe.v26_2;
2+
3+
import com.fastasyncworldedit.core.util.MathMan;
4+
import it.unimi.dsi.fastutil.longs.Long2ObjectOpenHashMap;
5+
import net.minecraft.core.BlockPos;
6+
import net.minecraft.core.Holder;
7+
import net.minecraft.core.SectionPos;
8+
import net.minecraft.core.particles.ParticleOptions;
9+
import net.minecraft.server.MinecraftServer;
10+
import net.minecraft.server.level.ServerLevel;
11+
import net.minecraft.sounds.SoundEvent;
12+
import net.minecraft.sounds.SoundSource;
13+
import net.minecraft.util.RandomSource;
14+
import net.minecraft.world.DifficultyInstance;
15+
import net.minecraft.world.entity.Entity;
16+
import net.minecraft.world.entity.player.Player;
17+
import net.minecraft.world.flag.FeatureFlagSet;
18+
import net.minecraft.world.level.biome.Biome;
19+
import net.minecraft.world.level.biome.BiomeManager;
20+
import net.minecraft.world.level.block.state.BlockState;
21+
import net.minecraft.world.level.border.WorldBorder;
22+
import net.minecraft.world.level.chunk.ChunkAccess;
23+
import net.minecraft.world.level.chunk.ChunkSource;
24+
import net.minecraft.world.level.chunk.status.ChunkStatus;
25+
import net.minecraft.world.level.lighting.LevelLightEngine;
26+
import net.minecraft.world.level.material.FluidState;
27+
import org.bukkit.craftbukkit.util.BlockStateListPopulator;
28+
import org.jetbrains.annotations.NotNull;
29+
30+
import javax.annotation.Nonnull;
31+
import javax.annotation.Nullable;
32+
import java.util.List;
33+
34+
public class FaweBlockStateListPopulator extends BlockStateListPopulator {
35+
36+
private final Long2ObjectOpenHashMap<PaperweightChunkAccessProxy> chunkProxies = new Long2ObjectOpenHashMap<>();
37+
private final ServerLevel world;
38+
39+
public FaweBlockStateListPopulator(ServerLevel world) {
40+
super(world);
41+
this.world = world;
42+
}
43+
44+
@Override
45+
public long getSeed() {
46+
return world.getSeed();
47+
}
48+
49+
@Override
50+
@Nonnull
51+
public ServerLevel getLevel() {
52+
return world.getLevel();
53+
}
54+
55+
@Override
56+
@Nonnull
57+
public DifficultyInstance getCurrentDifficultyAt(final BlockPos pos) {
58+
return world.getCurrentDifficultyAt(pos);
59+
}
60+
61+
@Override
62+
public MinecraftServer getServer() {
63+
return world.getServer();
64+
}
65+
66+
@Override
67+
@Nonnull
68+
public ChunkSource getChunkSource() {
69+
return world.getChunkSource();
70+
}
71+
72+
@Override
73+
@Nonnull
74+
public RandomSource getRandom() {
75+
return world.getRandom();
76+
}
77+
78+
@Override
79+
public void playSound(
80+
final Entity source,
81+
final BlockPos pos,
82+
final SoundEvent sound,
83+
final SoundSource category,
84+
final float volume,
85+
final float pitch
86+
) {
87+
// don't for now
88+
}
89+
90+
@Override
91+
public void addParticle(
92+
final ParticleOptions parameters,
93+
final double x,
94+
final double y,
95+
final double z,
96+
final double velocityX,
97+
final double velocityY,
98+
final double velocityZ
99+
) {
100+
// definitely don't
101+
}
102+
103+
@Override
104+
public @NotNull List<? extends Player> players() {
105+
return world.players();
106+
}
107+
108+
@Override
109+
public ChunkAccess getChunk(final int chunkX, final int chunkZ, final ChunkStatus leastStatus, final boolean create) {
110+
ChunkAccess worldChunk = world.getChunk(chunkX, chunkZ, leastStatus, create);
111+
PaperweightChunkAccessProxy proxy = chunkProxies.compute(
112+
MathMan.pairInt(chunkX, chunkZ),
113+
(k, v) -> v == null ? PaperweightChunkAccessProxy.getInstance() : v
114+
);
115+
proxy.parent = worldChunk;
116+
return proxy;
117+
}
118+
119+
@Override
120+
@Nonnull
121+
public BiomeManager getBiomeManager() {
122+
return world.getBiomeManager();
123+
}
124+
125+
@Override
126+
@Nonnull
127+
public Holder<Biome> getUncachedNoiseBiome(final int biomeX, final int biomeY, final int biomeZ) {
128+
return world.getUncachedNoiseBiome(biomeX, biomeY, biomeZ);
129+
}
130+
131+
@Override
132+
public int getSeaLevel() {
133+
return world.getSeaLevel();
134+
}
135+
136+
@Override
137+
public @Nonnull ChunkAccess getChunk(final @Nonnull BlockPos pos) {
138+
ChunkAccess worldChunk = world.getChunk(pos);
139+
PaperweightChunkAccessProxy proxy = chunkProxies.compute(
140+
MathMan.pairInt(SectionPos.blockToSectionCoord(pos.getX()), SectionPos.blockToSectionCoord(pos.getZ())),
141+
(k, v) -> v == null ? PaperweightChunkAccessProxy.getInstance() : v
142+
);
143+
proxy.parent = worldChunk;
144+
return proxy;
145+
}
146+
147+
@Override
148+
public @Nonnull ChunkAccess getChunk(final int chunkX, final int chunkZ) {
149+
ChunkAccess worldChunk = world.getChunk(chunkX, chunkZ);
150+
PaperweightChunkAccessProxy proxy = chunkProxies.compute(
151+
MathMan.pairInt(chunkX, chunkZ),
152+
(k, v) -> v == null ? PaperweightChunkAccessProxy.getInstance() : v
153+
);
154+
proxy.parent = worldChunk;
155+
return proxy;
156+
}
157+
158+
@Override
159+
public @Nonnull ChunkAccess getChunk(final int chunkX, final int chunkZ, final @Nonnull ChunkStatus chunkStatus) {
160+
ChunkAccess worldChunk = world.getChunk(chunkX, chunkZ, chunkStatus);
161+
PaperweightChunkAccessProxy proxy = chunkProxies.compute(
162+
MathMan.pairInt(chunkX, chunkZ),
163+
(k, v) -> v == null ? PaperweightChunkAccessProxy.getInstance() : v
164+
);
165+
proxy.parent = worldChunk;
166+
return proxy;
167+
}
168+
169+
@Override
170+
@Nonnull
171+
public FeatureFlagSet enabledFeatures() {
172+
return world.enabledFeatures();
173+
}
174+
175+
@Override
176+
@Nonnull
177+
public LevelLightEngine getLightEngine() {
178+
return world.getLightEngine();
179+
}
180+
181+
@Nullable
182+
@Override
183+
public ChunkAccess getChunkIfLoadedImmediately(final int x, final int z) {
184+
return world.getChunkIfLoadedImmediately(x, z);
185+
}
186+
187+
@Override
188+
public BlockState getBlockStateIfLoaded(final BlockPos blockposition) {
189+
return world.getBlockStateIfLoaded(blockposition);
190+
}
191+
192+
@Override
193+
public FluidState getFluidIfLoaded(final BlockPos blockposition) {
194+
return world.getFluidIfLoaded(blockposition);
195+
}
196+
197+
@Override
198+
@Nonnull
199+
public WorldBorder getWorldBorder() {
200+
return world.getWorldBorder();
201+
}
202+
203+
@Override
204+
public boolean setBlock(final BlockPos pos, final BlockState state, final int flags, final int maxUpdateDepth) {
205+
return world.setBlock(pos, state, flags, maxUpdateDepth);
206+
}
207+
208+
@Override
209+
public boolean removeBlock(final BlockPos pos, final boolean move) {
210+
return world.removeBlock(pos, move);
211+
}
212+
213+
@Override
214+
public boolean destroyBlock(final BlockPos pos, final boolean drop, final Entity breakingEntity, final int maxUpdateDepth) {
215+
return world.destroyBlock(pos, drop, breakingEntity, maxUpdateDepth);
216+
}
217+
218+
@Override
219+
@Nonnull
220+
public BlockState getBlockState(final BlockPos pos) {
221+
return world.getBlockState(pos);
222+
}
223+
224+
@Override
225+
public boolean setBlock(final BlockPos pos, final BlockState state, final int flags) {
226+
return world.setBlock(pos, state, flags);
227+
}
228+
229+
}

0 commit comments

Comments
 (0)