Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Folia #5

Merged
merged 7 commits into from
Oct 4, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,6 @@ lib/

# Ignore Gradle project-specific cache directory
.gradle
gradle.properties

# Ignore Gradle build output directory
build
12 changes: 9 additions & 3 deletions BuildVivecraftSpigotExtensions/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,12 +1,12 @@
import com.github.breadmoirai.githubreleaseplugin.GithubReleaseTask

group = "com.cjcrafter"
version = "3.0.1"
version = findProperty("version").toString()

plugins {
`java-library`
id("com.github.breadmoirai.github-release") version "2.4.1"
id("com.github.johnrengelman.shadow") version "8.1.1"
id("com.gradleup.shadow") version "8.3.3"
id("net.minecrell.plugin-yml.bukkit") version "0.6.0"
}

Expand All @@ -19,6 +19,8 @@ bukkit {
prefix = "Vivecraft"
softDepend = listOf("Vault")

foliaSupported = true

commands {
register("Vive") {
description = "Vivecraft Spigot Extensions"
Expand Down Expand Up @@ -62,7 +64,7 @@ repositories {
dependencies {
implementation(project(":")) // base project

listOf("19_R3", "20_R1", "20_R2", "20_R3").forEach {
listOf("19_R3", "20_R1", "20_R2", "20_R3", "20_R4", "21_R1").forEach {
implementation(project(":Vivecraft_1_$it", "reobf"))
}
}
Expand All @@ -87,5 +89,9 @@ tasks.shadowJar {
relocate("com.cryptomorin.xseries", "com.cjcrafter.vivecraft.xseries") {
include(dependency("com.github.cryptomorin:XSeries:"))
}

relocate("com.cjcrafter.foliascheduler", "com.cjcrafter.vivecraft.foliascheduler") {
include(dependency("com.cjcrafter:foliascheduler:"))
}
}
}
1 change: 1 addition & 0 deletions Compatibility/Vivecraft_1_19_R3/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ dependencies {
paperweight.paperDevBundle("1.19.4-R0.1-SNAPSHOT")
implementation(project(":"))
compileOnly("org.spigotmc:spigot-api:1.19.4-R0.1-SNAPSHOT")
compileOnly("com.cjcrafter:foliascheduler:0.5.0")
}

java {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.cjcrafter.vivecraft.compatibility;

import com.cjcrafter.foliascheduler.util.FieldAccessor;
import com.cjcrafter.foliascheduler.util.MethodInvoker;
import com.cjcrafter.foliascheduler.util.ReflectionUtil;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.ReferenceCountUtil;
Expand Down Expand Up @@ -40,7 +43,6 @@
import org.bukkit.entity.Enderman;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
import com.cjcrafter.vivecraft.Reflector;
import com.cjcrafter.vivecraft.VSE;
import com.cjcrafter.vivecraft.VivePlayer;

Expand All @@ -51,23 +53,23 @@ public class Vivecraft_v1_19_R3 implements VivecraftCompatibility {

private static Class<?> classEndermanFreezeWhenLookedAt;
private static Class<?> classEndermanLookForPlayerGoal;
private static Reflector.FieldAccessor poseAccessor;
private static Reflector.FieldAccessor itemsByIdAccessor;
private static Reflector.FieldAccessor eyeHeightAccessor;
private static Reflector.FieldAccessor fallFlyTicksAccessor;
private static Reflector.MethodAccessor teleportAccessor;
private static Reflector.MethodAccessor teleportTowardsAccessor;
private static FieldAccessor poseAccessor;
private static FieldAccessor itemsByIdAccessor;
private static FieldAccessor eyeHeightAccessor;
private static FieldAccessor fallFlyTicksAccessor;
private static MethodInvoker teleportAccessor;
private static MethodInvoker teleportTowardsAccessor;


public Vivecraft_v1_19_R3() {
classEndermanFreezeWhenLookedAt = Reflector.getNMSClass("world.entity.monster", "EntityEnderman$a");
classEndermanLookForPlayerGoal = Reflector.getNMSClass("world.entity.monster", "EntityEnderman$PathfinderGoalPlayerWhoLookedAtTarget");
poseAccessor = Reflector.getField(Entity.class, EntityDataAccessor.class, 6, false);
itemsByIdAccessor = Reflector.getField(SynchedEntityData.class, Int2ObjectMap.class);
eyeHeightAccessor = Reflector.getField(Entity.class, "bf"); // https://nms.screamingsandals.org/1.19.4/net/minecraft/world/entity/Entity.html
fallFlyTicksAccessor = Reflector.getField(LivingEntity.class, "bw"); // https://nms.screamingsandals.org/1.19.4/net/minecraft/world/entity/LivingEntity.html
teleportAccessor = Reflector.getMethod(EnderMan.class, "w"); // https://nms.screamingsandals.org/1.19.4/net/minecraft/world/entity/monster/EnderMan.html
teleportTowardsAccessor = Reflector.getMethod(Enderman.class, "a", Entity.class);
classEndermanFreezeWhenLookedAt = ReflectionUtil.getMinecraftClass("world.entity.monster", "EntityEnderman$a");
classEndermanLookForPlayerGoal = ReflectionUtil.getMinecraftClass("world.entity.monster", "EntityEnderman$PathfinderGoalPlayerWhoLookedAtTarget");
poseAccessor = ReflectionUtil.getField(Entity.class, EntityDataAccessor.class, 6, ReflectionUtil.IS_STATIC);
itemsByIdAccessor = ReflectionUtil.getField(SynchedEntityData.class, Int2ObjectMap.class);
eyeHeightAccessor = ReflectionUtil.getField(Entity.class, "bf"); // https://nms.screamingsandals.org/1.19.4/net/minecraft/world/entity/Entity.html
fallFlyTicksAccessor = ReflectionUtil.getField(LivingEntity.class, "bw"); // https://nms.screamingsandals.org/1.19.4/net/minecraft/world/entity/LivingEntity.html
teleportAccessor = ReflectionUtil.getMethod(EnderMan.class, "w"); // https://nms.screamingsandals.org/1.19.4/net/minecraft/world/entity/monster/EnderMan.html
teleportTowardsAccessor = ReflectionUtil.getMethod(Enderman.class, "a", Entity.class);
}

@Override
Expand Down
1 change: 1 addition & 0 deletions Compatibility/Vivecraft_1_20_R1/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ dependencies {
paperweight.paperDevBundle("1.20.1-R0.1-SNAPSHOT")
implementation(project(":"))
compileOnly("org.spigotmc:spigot-api:1.20.1-R0.1-SNAPSHOT")
compileOnly("com.cjcrafter:foliascheduler:0.5.0")
}

java {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.cjcrafter.vivecraft.compatibility;

import com.cjcrafter.foliascheduler.util.FieldAccessor;
import com.cjcrafter.foliascheduler.util.ReflectionUtil;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.ReferenceCountUtil;
Expand Down Expand Up @@ -40,7 +42,6 @@
import org.bukkit.entity.Enderman;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
import com.cjcrafter.vivecraft.Reflector;
import com.cjcrafter.vivecraft.VSE;
import com.cjcrafter.vivecraft.VivePlayer;

Expand All @@ -51,19 +52,19 @@ public class Vivecraft_v1_20_R1 implements VivecraftCompatibility {

private static Class<?> classEndermanFreezeWhenLookedAt;
private static Class<?> classEndermanLookForPlayerGoal;
private static Reflector.FieldAccessor poseAccessor;
private static Reflector.FieldAccessor itemsByIdAccessor;
private static Reflector.FieldAccessor eyeHeightAccessor;
private static Reflector.FieldAccessor fallFlyTicksAccessor;
private static FieldAccessor poseAccessor;
private static FieldAccessor itemsByIdAccessor;
private static FieldAccessor eyeHeightAccessor;
private static FieldAccessor fallFlyTicksAccessor;


public Vivecraft_v1_20_R1() {
classEndermanFreezeWhenLookedAt = Reflector.getNMSClass("world.entity.monster", "EntityEnderman$a"); // https://nms.screamingsandals.org/1.20.1/net/minecraft/world/entity/monster/EnderMan.html
classEndermanLookForPlayerGoal = Reflector.getNMSClass("world.entity.monster", "EntityEnderman$PathfinderGoalPlayerWhoLookedAtTarget");
poseAccessor = Reflector.getField(Entity.class, EntityDataAccessor.class, 6, false);
itemsByIdAccessor = Reflector.getField(SynchedEntityData.class, Int2ObjectMap.class);
eyeHeightAccessor = Reflector.getField(Entity.class, "bi"); // https://nms.screamingsandals.org/1.20.1/net/minecraft/world/entity/Entity.html
fallFlyTicksAccessor = Reflector.getField(LivingEntity.class, "by"); // https://nms.screamingsandals.org/1.20.1/net/minecraft/world/entity/LivingEntity.html
classEndermanFreezeWhenLookedAt = ReflectionUtil.getMinecraftClass("world.entity.monster", "EntityEnderman$a"); // https://nms.screamingsandals.org/1.20.1/net/minecraft/world/entity/monster/EnderMan.html
classEndermanLookForPlayerGoal = ReflectionUtil.getMinecraftClass("world.entity.monster", "EntityEnderman$PathfinderGoalPlayerWhoLookedAtTarget");
poseAccessor = ReflectionUtil.getField(Entity.class, EntityDataAccessor.class, 6, ReflectionUtil.IS_STATIC);
itemsByIdAccessor = ReflectionUtil.getField(SynchedEntityData.class, Int2ObjectMap.class);
eyeHeightAccessor = ReflectionUtil.getField(Entity.class, "bi"); // https://nms.screamingsandals.org/1.20.1/net/minecraft/world/entity/Entity.html
fallFlyTicksAccessor = ReflectionUtil.getField(LivingEntity.class, "by"); // https://nms.screamingsandals.org/1.20.1/net/minecraft/world/entity/LivingEntity.html
}

@Override
Expand Down
1 change: 1 addition & 0 deletions Compatibility/Vivecraft_1_20_R2/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ dependencies {
paperweight.paperDevBundle("1.20.2-R0.1-SNAPSHOT")
implementation(project(":"))
compileOnly("org.spigotmc:spigot-api:1.20.2-R0.1-SNAPSHOT")
compileOnly("com.cjcrafter:foliascheduler:0.5.0")
}

java {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.cjcrafter.vivecraft.compatibility;

import com.cjcrafter.foliascheduler.util.FieldAccessor;
import com.cjcrafter.foliascheduler.util.ReflectionUtil;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.ReferenceCountUtil;
Expand Down Expand Up @@ -40,7 +42,6 @@
import org.bukkit.entity.Enderman;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
import com.cjcrafter.vivecraft.Reflector;
import com.cjcrafter.vivecraft.VSE;
import com.cjcrafter.vivecraft.VivePlayer;

Expand All @@ -51,19 +52,19 @@ public class Vivecraft_v1_20_R2 implements VivecraftCompatibility {

private static Class<?> classEndermanFreezeWhenLookedAt;
private static Class<?> classEndermanLookForPlayerGoal;
private static Reflector.FieldAccessor poseAccessor;
private static Reflector.FieldAccessor itemsByIdAccessor;
private static Reflector.FieldAccessor eyeHeightAccessor;
private static Reflector.FieldAccessor fallFlyTicksAccessor;
private static FieldAccessor poseAccessor;
private static FieldAccessor itemsByIdAccessor;
private static FieldAccessor eyeHeightAccessor;
private static FieldAccessor fallFlyTicksAccessor;


public Vivecraft_v1_20_R2() {
classEndermanFreezeWhenLookedAt = Reflector.getNMSClass("world.entity.monster", "EntityEnderman$a"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/monster/EnderMan.html
classEndermanLookForPlayerGoal = Reflector.getNMSClass("world.entity.monster", "EntityEnderman$PathfinderGoalPlayerWhoLookedAtTarget");
poseAccessor = Reflector.getField(Entity.class, EntityDataAccessor.class, 6, false);
itemsByIdAccessor = Reflector.getField(SynchedEntityData.class, Int2ObjectMap.class);
eyeHeightAccessor = Reflector.getField(Entity.class, "bi"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/Entity.html
fallFlyTicksAccessor = Reflector.getField(LivingEntity.class, "bx"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/LivingEntity.html
classEndermanFreezeWhenLookedAt = ReflectionUtil.getMinecraftClass("world.entity.monster", "EntityEnderman$a"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/monster/EnderMan.html
classEndermanLookForPlayerGoal = ReflectionUtil.getMinecraftClass("world.entity.monster", "EntityEnderman$PathfinderGoalPlayerWhoLookedAtTarget");
poseAccessor = ReflectionUtil.getField(Entity.class, EntityDataAccessor.class, 6, ReflectionUtil.IS_STATIC);
itemsByIdAccessor = ReflectionUtil.getField(SynchedEntityData.class, Int2ObjectMap.class);
eyeHeightAccessor = ReflectionUtil.getField(Entity.class, "bi"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/Entity.html
fallFlyTicksAccessor = ReflectionUtil.getField(LivingEntity.class, "bx"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/LivingEntity.html
}

@Override
Expand Down
1 change: 1 addition & 0 deletions Compatibility/Vivecraft_1_20_R3/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ dependencies {
paperweight.paperDevBundle("1.20.3-R0.1-SNAPSHOT")
implementation(project(":"))
compileOnly("org.spigotmc:spigot-api:1.20.3-R0.1-SNAPSHOT")
compileOnly("com.cjcrafter:foliascheduler:0.5.0")
}

java {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package com.cjcrafter.vivecraft.compatibility;

import com.cjcrafter.foliascheduler.util.FieldAccessor;
import com.cjcrafter.foliascheduler.util.ReflectionUtil;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.ReferenceCountUtil;
Expand Down Expand Up @@ -40,7 +42,6 @@
import org.bukkit.entity.Enderman;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
import com.cjcrafter.vivecraft.Reflector;
import com.cjcrafter.vivecraft.VSE;
import com.cjcrafter.vivecraft.VivePlayer;

Expand All @@ -51,19 +52,19 @@ public class Vivecraft_v1_20_R3 implements VivecraftCompatibility {

private static Class<?> classEndermanFreezeWhenLookedAt;
private static Class<?> classEndermanLookForPlayerGoal;
private static Reflector.FieldAccessor poseAccessor;
private static Reflector.FieldAccessor itemsByIdAccessor;
private static Reflector.FieldAccessor eyeHeightAccessor;
private static Reflector.FieldAccessor fallFlyTicksAccessor;
private static FieldAccessor poseAccessor;
private static FieldAccessor itemsByIdAccessor;
private static FieldAccessor eyeHeightAccessor;
private static FieldAccessor fallFlyTicksAccessor;


public Vivecraft_v1_20_R3() {
classEndermanFreezeWhenLookedAt = Reflector.getNMSClass("world.entity.monster", "EntityEnderman$a"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/monster/EnderMan.html
classEndermanLookForPlayerGoal = Reflector.getNMSClass("world.entity.monster", "EntityEnderman$PathfinderGoalPlayerWhoLookedAtTarget");
poseAccessor = Reflector.getField(Entity.class, EntityDataAccessor.class, 6, false);
itemsByIdAccessor = Reflector.getField(SynchedEntityData.class, Int2ObjectMap.class);
eyeHeightAccessor = Reflector.getField(Entity.class, "bi"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/Entity.html
fallFlyTicksAccessor = Reflector.getField(LivingEntity.class, "bx"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/LivingEntity.html
classEndermanFreezeWhenLookedAt = ReflectionUtil.getMinecraftClass("world.entity.monster", "EntityEnderman$a"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/monster/EnderMan.html
classEndermanLookForPlayerGoal = ReflectionUtil.getMinecraftClass("world.entity.monster", "EntityEnderman$PathfinderGoalPlayerWhoLookedAtTarget");
poseAccessor = ReflectionUtil.getField(Entity.class, EntityDataAccessor.class, 6, ReflectionUtil.IS_STATIC);
itemsByIdAccessor = ReflectionUtil.getField(SynchedEntityData.class, Int2ObjectMap.class);
eyeHeightAccessor = ReflectionUtil.getField(Entity.class, "bi"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/Entity.html
fallFlyTicksAccessor = ReflectionUtil.getField(LivingEntity.class, "bx"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/LivingEntity.html
}

@Override
Expand Down
1 change: 1 addition & 0 deletions Compatibility/Vivecraft_1_20_R4/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ dependencies {
paperweight.paperDevBundle("1.20.6-R0.1-SNAPSHOT")
implementation(project(":"))
compileOnly("org.spigotmc:spigot-api:1.20.6-R0.1-SNAPSHOT")
compileOnly("com.cjcrafter:foliascheduler:0.5.0")
}

java {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.cjcrafter.vivecraft.compatibility;

import com.cjcrafter.foliascheduler.util.FieldAccessor;
import com.cjcrafter.foliascheduler.util.MethodInvoker;
import com.cjcrafter.foliascheduler.util.ReflectionUtil;
import io.netty.channel.ChannelHandlerContext;
import io.netty.channel.ChannelInboundHandlerAdapter;
import io.netty.util.ReferenceCountUtil;
Expand Down Expand Up @@ -41,7 +44,6 @@
import org.bukkit.entity.Enderman;
import org.bukkit.entity.Player;
import org.bukkit.util.Vector;
import com.cjcrafter.vivecraft.Reflector;
import com.cjcrafter.vivecraft.VSE;
import com.cjcrafter.vivecraft.VivePlayer;

Expand All @@ -52,19 +54,19 @@ public class Vivecraft_v1_20_R4 implements VivecraftCompatibility {

private static Class<?> classEndermanFreezeWhenLookedAt;
private static Class<?> classEndermanLookForPlayerGoal;
private static Reflector.FieldAccessor poseAccessor;
private static Reflector.FieldAccessor itemsByIdAccessor;
private static Reflector.FieldAccessor eyeHeightAccessor;
private static Reflector.FieldAccessor fallFlyTicksAccessor;
private static FieldAccessor poseAccessor;
private static FieldAccessor itemsByIdAccessor;
private static FieldAccessor eyeHeightAccessor;
private static MethodInvoker resetFallDistanceMethod;


public Vivecraft_v1_20_R4() {
classEndermanFreezeWhenLookedAt = Reflector.getNMSClass("world.entity.monster", "EntityEnderman$a"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/monster/EnderMan.html
classEndermanLookForPlayerGoal = Reflector.getNMSClass("world.entity.monster", "EntityEnderman$PathfinderGoalPlayerWhoLookedAtTarget");
poseAccessor = Reflector.getField(Entity.class, EntityDataAccessor.class, 6, false);
itemsByIdAccessor = Reflector.getField(SynchedEntityData.class, Int2ObjectMap.class);
eyeHeightAccessor = Reflector.getField(Entity.class, "bi"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/Entity.html
fallFlyTicksAccessor = Reflector.getField(LivingEntity.class, "bx"); // https://nms.screamingsandals.org/1.20.2/net/minecraft/world/entity/LivingEntity.html
classEndermanFreezeWhenLookedAt = ReflectionUtil.getMinecraftClass("world.entity.monster", "EntityEnderman$a"); // https://nms.screamingsandals.org/1.20.6/net/minecraft/world/entity/monster/EnderMan.html
classEndermanLookForPlayerGoal = ReflectionUtil.getMinecraftClass("world.entity.monster", "EntityEnderman$PathfinderGoalPlayerWhoLookedAtTarget");
poseAccessor = ReflectionUtil.getField(Entity.class, EntityDataAccessor.class, 6, ReflectionUtil.IS_STATIC);
itemsByIdAccessor = ReflectionUtil.getField(SynchedEntityData.class, SynchedEntityData.DataItem[].class);
eyeHeightAccessor = ReflectionUtil.getField(Entity.class, "bg"); // https://nms.screamingsandals.org/1.20.6/net/minecraft/world/entity/Entity.html
resetFallDistanceMethod = ReflectionUtil.getMethod(LivingEntity.class, "n"); // https://nms.screamingsandals.org/1.20.6/net/minecraft/world/entity/Entity.html
}

@Override
Expand Down Expand Up @@ -97,16 +99,14 @@ public void injectPlayer(Player bukkit) {
public void injectPoseOverrider(Player bukkit) {
ServerPlayer player = ((CraftPlayer) bukkit).getHandle();
EntityDataAccessor<Pose> poseObj = (EntityDataAccessor<Pose>) poseAccessor.get(player);
Int2ObjectOpenHashMap<SynchedEntityData.DataItem<?>> entries = (Int2ObjectOpenHashMap<SynchedEntityData.DataItem<?>>) itemsByIdAccessor.get(player.getEntityData());
InjectedDataWatcherItem item = new InjectedDataWatcherItem(poseObj, Pose.STANDING, bukkit);
entries.put(poseObj.id(), item);
SynchedEntityData.DataItem<?>[] items = (SynchedEntityData.DataItem<?>[]) itemsByIdAccessor.get(player.getEntityData());
items[poseObj.id()] = new InjectedDataWatcherItem(poseObj, Pose.STANDING, bukkit);
}

@Override
public void resetFall(Player bukkit) {
net.minecraft.world.entity.player.Player player = ((CraftPlayer) bukkit).getHandle();
player.fallDistance = 0f;
fallFlyTicksAccessor.set(player, 0);
resetFallDistanceMethod.invoke(player);
}

@Override
Expand Down
5 changes: 3 additions & 2 deletions Compatibility/Vivecraft_1_21_R1/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,10 @@ repositories {
}

dependencies {
paperweight.paperDevBundle("1.21-R0.1-SNAPSHOT")
paperweight.paperDevBundle("1.21.1-R0.1-SNAPSHOT")
implementation(project(":"))
compileOnly("org.spigotmc:spigot-api:1.21-R0.1-SNAPSHOT")
compileOnly("org.spigotmc:spigot-api:1.21.1-R0.1-SNAPSHOT")
compileOnly("com.cjcrafter:foliascheduler:0.5.0")
}


Expand Down
Loading