Skip to content

Commit 0e1e434

Browse files
committed
Add support for 26.1.2
1 parent ce51831 commit 0e1e434

8 files changed

Lines changed: 486 additions & 3 deletions

File tree

Movecraft/build.gradle.kts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ plugins {
55
id("io.papermc.hangar-publish-plugin") version "0.1.3"
66
}
77

8-
java.toolchain.languageVersion = JavaLanguageVersion.of(21)
8+
java.toolchain.languageVersion = JavaLanguageVersion.of(25)
99

1010
dependencies {
1111
runtimeOnly(project(":movecraft-v1_20_6"))
@@ -15,6 +15,7 @@ dependencies {
1515
runtimeOnly(project(":movecraft-v1_21_8"))
1616
runtimeOnly(project(":movecraft-v1_21_10"))
1717
runtimeOnly(project(":movecraft-v1_21_11"))
18+
runtimeOnly(project(":movecraft-v26_1_2"))
1819
implementation(project(":movecraft-api"))
1920
compileOnly("org.yaml:snakeyaml:2.0")
2021
}
@@ -33,6 +34,7 @@ tasks.shadowJar {
3334
include(project(":movecraft-v1_21_8"))
3435
include(project(":movecraft-v1_21_10"))
3536
include(project(":movecraft-v1_21_11"))
37+
include(project(":movecraft-v26_1_2"))
3638
}
3739

3840
manifest.attributes(
@@ -80,7 +82,7 @@ hangarPublish {
8082
platforms {
8183
register(io.papermc.hangarpublishplugin.model.Platforms.PAPER) {
8284
jar.set(tasks.shadowJar.flatMap { it.archiveFile })
83-
platformVersions.set(listOf("1.20.6", "1.21.1", "1.21.4", "1.21.5", "1.21.8", "1.21.10", "1.21.11"))
85+
platformVersions.set(listOf("1.20.6", "1.21.1", "1.21.4", "1.21.5", "1.21.8", "1.21.10", "1.21.11", "26.1.2"))
8486
}
8587
}
8688
}

build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
plugins {
22
id("buildlogic.java-conventions")
3-
id("io.papermc.paperweight.userdev") version "2.0.0-beta.17" apply false
3+
id("io.papermc.paperweight.userdev") version "2.0.0-beta.21" apply false
44
}

settings.gradle.kts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ include(":movecraft-v1_21_5")
66
include(":movecraft-v1_21_8")
77
include(":movecraft-v1_21_10")
88
include(":movecraft-v1_21_11")
9+
include(":movecraft-v26_1_2")
910
include(":movecraft-api")
1011
include(":movecraft-datapack")
1112
include(":movecraft")
@@ -16,6 +17,7 @@ project(":movecraft-v1_21_5").projectDir = file("v1_21_5")
1617
project(":movecraft-v1_21_8").projectDir = file("v1_21_8")
1718
project(":movecraft-v1_21_10").projectDir = file("v1_21_10")
1819
project(":movecraft-v1_21_11").projectDir = file("v1_21_11")
20+
project(":movecraft-v26_1_2").projectDir = file("v26_1_2")
1921
project(":movecraft-api").projectDir = file("api")
2022
project(":movecraft-datapack").projectDir = file("datapack")
2123
project(":movecraft").projectDir = file("Movecraft")

v26_1_2/build.gradle.kts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
plugins {
2+
id("buildlogic.java-conventions")
3+
id("io.papermc.paperweight.userdev")
4+
}
5+
6+
java.toolchain.languageVersion = JavaLanguageVersion.of(25)
7+
8+
dependencies {
9+
api(project(":movecraft-api"))
10+
paperweight.paperDevBundle("26.1.2.build.+")
11+
}
12+
13+
description = "Movecraft-v26_1_2"
14+
paperweight.reobfArtifactConfiguration = io.papermc.paperweight.userdev.ReobfArtifactConfiguration.MOJANG_PRODUCTION

v26_1_2/src/main/java/net/countercraft/movecraft/compat/v26_1_2/IWorldHandler.java

Lines changed: 342 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 39 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,39 @@
1+
package net.countercraft.movecraft.compat.v26_1_2;
2+
3+
import net.minecraft.core.BlockPos;
4+
import net.minecraft.server.level.ServerLevel;
5+
import net.minecraft.world.level.block.Block;
6+
import net.minecraft.world.level.levelgen.structure.BoundingBox;
7+
import net.minecraft.world.ticks.LevelChunkTicks;
8+
import net.minecraft.world.ticks.ScheduledTick;
9+
import org.jetbrains.annotations.NotNull;
10+
import org.jetbrains.annotations.Nullable;
11+
12+
import java.util.List;
13+
import java.util.stream.Stream;
14+
15+
public class NextTickProvider {
16+
17+
@Nullable
18+
public ScheduledTick<?> getNextTick(@NotNull ServerLevel world, @NotNull BlockPos position){
19+
LevelChunkTicks<Block> tickList = (LevelChunkTicks<Block>) world
20+
.getChunk(position)
21+
.getBlockTicks();
22+
23+
var box = BoundingBox.encapsulatingPositions(List.of(position));
24+
if(box.isEmpty()){
25+
return null;
26+
}
27+
28+
Stream<ScheduledTick<Block>> ticks = tickList.getAll();
29+
30+
for (var iter = ticks.iterator(); iter.hasNext(); ) {
31+
var next = iter.next();
32+
if (!next.pos().equals(position)) {
33+
continue;
34+
}
35+
return next;
36+
}
37+
return null;
38+
}
39+
}
Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
package net.countercraft.movecraft.support.v26_1_2;
2+
3+
import com.google.common.cache.CacheBuilder;
4+
import com.google.common.cache.CacheLoader;
5+
import com.google.common.cache.LoadingCache;
6+
import net.countercraft.movecraft.MovecraftLocation;
7+
import net.countercraft.movecraft.processing.WorldManager;
8+
import net.countercraft.movecraft.support.AsyncChunk;
9+
import net.minecraft.core.BlockPos;
10+
import net.minecraft.world.level.chunk.ChunkAccess;
11+
import net.minecraft.world.level.chunk.status.ChunkStatus;
12+
import org.bukkit.Chunk;
13+
import org.bukkit.Material;
14+
import org.bukkit.block.BlockState;
15+
import org.bukkit.block.data.BlockData;
16+
import org.bukkit.craftbukkit.CraftChunk;
17+
import org.bukkit.craftbukkit.block.data.CraftBlockData;
18+
import org.jetbrains.annotations.NotNull;
19+
20+
@SuppressWarnings("unused")
21+
public class IAsyncChunk extends AsyncChunk<CraftChunk> {
22+
private final @NotNull LoadingCache<MovecraftLocation, BlockState> stateCache = CacheBuilder.newBuilder().maximumSize(1000).build(new CacheLoader<>() {
23+
@Override
24+
public BlockState load(@NotNull MovecraftLocation movecraftLocation) {
25+
var block = chunk.getBlock(movecraftLocation.getX(), movecraftLocation.getY(), movecraftLocation.getZ());
26+
return WorldManager.INSTANCE.executeMain(() -> block.getState());
27+
}
28+
});
29+
30+
// getHandle needs to be access in the main thread as of 1.19.4
31+
private final ChunkAccess handle;
32+
33+
public IAsyncChunk(@NotNull Chunk chunk) {
34+
super(chunk);
35+
handle = this.chunk.getHandle(ChunkStatus.FULL);
36+
}
37+
38+
@NotNull
39+
@Override
40+
protected CraftChunk adapt(@NotNull org.bukkit.Chunk chunk) {
41+
return (CraftChunk) chunk;
42+
}
43+
44+
@NotNull
45+
@Override
46+
public BlockState getState(@NotNull MovecraftLocation location) {
47+
return stateCache.getUnchecked(location);
48+
}
49+
50+
@Override
51+
@NotNull
52+
public Material getType(@NotNull MovecraftLocation location){
53+
return this.getData(location).getMaterial();
54+
}
55+
56+
@Override
57+
@NotNull
58+
public BlockData getData(@NotNull MovecraftLocation location){
59+
return CraftBlockData.createData(handle.getBlockState(new BlockPos(location.getX(), location.getY(), location.getZ())));
60+
}
61+
}
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
package net.countercraft.movecraft.support.v26_1_2;
2+
3+
import io.papermc.paper.entity.TeleportFlag;
4+
import net.countercraft.movecraft.SmoothTeleport;
5+
import org.bukkit.Location;
6+
import org.bukkit.entity.Player;
7+
import org.jetbrains.annotations.NotNull;
8+
9+
public class ISmoothTeleport extends SmoothTeleport {
10+
public void teleport(@NotNull Player player, @NotNull Location location) {
11+
player.teleport(
12+
location,
13+
TeleportFlag.Relative.VELOCITY_X,//x
14+
TeleportFlag.Relative.VELOCITY_Y,//y
15+
TeleportFlag.Relative.VELOCITY_Z,//z
16+
TeleportFlag.Relative.VELOCITY_ROTATION,//pitch
17+
TeleportFlag.Relative.VELOCITY_ROTATION,//yaw
18+
TeleportFlag.EntityState.RETAIN_OPEN_INVENTORY,
19+
TeleportFlag.EntityState.RETAIN_VEHICLE,
20+
TeleportFlag.EntityState.RETAIN_PASSENGERS
21+
);
22+
}
23+
}

0 commit comments

Comments
 (0)