Skip to content

Commit ee0c3bc

Browse files
authored
Merge pull request #23 from TheNextLvl-net/1.21.4
Update support for Paper version 1.21.4
2 parents 9e11ab3 + 9053707 commit ee0c3bc

26 files changed

+106
-84
lines changed

README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,10 @@ the HologramAPI, you can easily add user-specific and static holograms to enhanc
1313
## Versions
1414

1515
> [!IMPORTANT]
16-
> Holograms only supports the latest version of Paper (1.20.6)<br>
16+
> Holograms only supports the latest version of Paper (1.21.4)<br>
1717
> The latest version of Holograms requires Java 21
1818
19+
[Latest version supporting 1.21-1.21.1 (Java 21)](https://github.com/TheNextLvl-net/holograms/releases/tag/v2.1.3)<br>
1920
[Latest version supporting 1.19-1.20.4 (Java 19)](https://github.com/TheNextLvl-net/holograms/releases/tag/v2.0.2)<br>
2021
[Latest version supporting 1.19-1.20.2 (Java 17)](https://github.com/TheNextLvl-net/holograms/releases/tag/v2.0.0)<br>
2122

api/build.gradle.kts

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,14 +4,17 @@ plugins {
44
}
55

66
java {
7+
toolchain.languageVersion = JavaLanguageVersion.of(21)
78
withSourcesJar()
89
withJavadocJar()
9-
sourceCompatibility = JavaVersion.VERSION_21
10-
targetCompatibility = JavaVersion.VERSION_21
10+
}
11+
12+
tasks.compileJava {
13+
options.release.set(21)
1114
}
1215

1316
group = "net.thenextlvl.holograms"
14-
version = "2.1.3"
17+
version = "2.1.4"
1518

1619
repositories {
1720
mavenCentral()
@@ -23,8 +26,6 @@ dependencies {
2326
compileOnly("org.projectlombok:lombok:1.18.36")
2427
compileOnly("io.papermc.paper:paper-api:1.21.4-R0.1-SNAPSHOT")
2528

26-
compileOnly("net.thenextlvl.core:annotations:2.0.1")
27-
2829
annotationProcessor("org.projectlombok:lombok:1.18.36")
2930
}
3031

api/src/main/java/net/thenextlvl/hologram/api/HologramFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,12 @@
88
import org.bukkit.Location;
99
import org.bukkit.block.data.BlockData;
1010
import org.bukkit.inventory.ItemStack;
11+
import org.jspecify.annotations.NullMarked;
1112

1213
/**
1314
* A factory that creates {@link Hologram holograms}
1415
*/
16+
@NullMarked
1517
public interface HologramFactory {
1618

1719
/**

api/src/main/java/net/thenextlvl/hologram/api/HologramLoader.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,12 +3,14 @@
33
import net.thenextlvl.hologram.api.hologram.Hologram;
44
import org.bukkit.Location;
55
import org.bukkit.entity.Player;
6+
import org.jspecify.annotations.NullMarked;
67

78
import java.util.Collection;
89

910
/**
1011
* A loader class that handles loading, unloading and updating of holograms
1112
*/
13+
@NullMarked
1214
public interface HologramLoader {
1315
/**
1416
* Loads the hologram for the specified player

api/src/main/java/net/thenextlvl/hologram/api/HologramProvider.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,11 @@
11
package net.thenextlvl.hologram.api;
22

3+
import org.jspecify.annotations.NullMarked;
4+
35
/**
46
* A class that provides all necessities for managing holograms
57
*/
8+
@NullMarked
69
public interface HologramProvider {
710
/**
811
* Get the corresponding {@link HologramRegistry}

api/src/main/java/net/thenextlvl/hologram/api/HologramRegistry.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
package net.thenextlvl.hologram.api;
22

33
import net.thenextlvl.hologram.api.hologram.Hologram;
4+
import org.jspecify.annotations.NullMarked;
45

56
import java.util.Collection;
67

78
/**
89
* A registry that holds all registered holograms
910
*/
11+
@NullMarked
1012
public interface HologramRegistry {
1113
/**
1214
* Get all the registered holograms
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package net.thenextlvl.hologram.api.hologram;
22

33
import org.bukkit.entity.BlockDisplay;
4+
import org.jspecify.annotations.NullMarked;
45

56
/**
67
* An interface that represents a hologram displaying a block
78
*/
9+
@NullMarked
810
public interface BlockHologram extends Hologram, BlockDisplay {
911
}

api/src/main/java/net/thenextlvl/hologram/api/hologram/Hologram.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,12 @@
22

33
import org.bukkit.Location;
44
import org.bukkit.entity.Display;
5+
import org.jspecify.annotations.NullMarked;
56

67
/**
78
* An interface that represents a hologram
89
*/
10+
@NullMarked
911
public interface Hologram extends Display {
1012
/**
1113
* Get the location of the hologram
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package net.thenextlvl.hologram.api.hologram;
22

33
import org.bukkit.entity.ItemDisplay;
4+
import org.jspecify.annotations.NullMarked;
45

56
/**
67
* An interface that represents a hologram displaying an item
78
*/
9+
@NullMarked
810
public interface ItemHologram extends Hologram, ItemDisplay {
911
}
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package net.thenextlvl.hologram.api.hologram;
22

33
import org.bukkit.entity.TextDisplay;
4+
import org.jspecify.annotations.NullMarked;
45

56
/**
67
* An interface that represents a hologram displaying a text
78
*/
9+
@NullMarked
810
public interface TextHologram extends Hologram, TextDisplay {
911
}

api/src/main/java/net/thenextlvl/hologram/api/hologram/package-info.java

Lines changed: 0 additions & 6 deletions
This file was deleted.

api/src/main/java/net/thenextlvl/hologram/api/package-info.java

Lines changed: 0 additions & 8 deletions
This file was deleted.

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
gameVersions=1.21
1+
gameVersions=1.21.2,1.21.3,1.21.4

plugin/build.gradle.kts

Lines changed: 8 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import net.minecrell.pluginyml.bukkit.BukkitPluginDescription
33

44
plugins {
55
id("java")
6-
id("io.github.goooler.shadow") version "8.1.8"
6+
id("com.gradleup.shadow") version "8.3.5"
77
id("io.papermc.paperweight.userdev") version "1.7.7"
88
id("net.minecrell.plugin-yml.paper") version "0.6.0"
99
id("io.papermc.hangar-publish-plugin") version "0.1.2"
@@ -13,27 +13,23 @@ group = project(":api").group
1313
version = project(":api").version
1414

1515
java {
16-
sourceCompatibility = JavaVersion.VERSION_21
17-
targetCompatibility = JavaVersion.VERSION_21
16+
toolchain.languageVersion = JavaLanguageVersion.of(21)
17+
}
18+
19+
tasks.compileJava {
20+
options.release.set(21)
1821
}
1922

2023
repositories {
2124
mavenCentral()
2225
maven("https://repo.thenextlvl.net/releases")
23-
maven("https://repo.thenextlvl.net/snapshots")
2426
}
2527

2628
dependencies {
27-
paperweight.paperDevBundle("1.21-R0.1-SNAPSHOT")
28-
29-
compileOnly("org.projectlombok:lombok:1.18.36")
30-
compileOnly("net.thenextlvl.core:annotations:2.0.1")
31-
32-
implementation(project(":api"))
29+
paperweight.paperDevBundle("1.21.4-R0.1-SNAPSHOT")
3330

3431
implementation("org.bstats:bstats-bukkit:3.1.0")
35-
36-
annotationProcessor("org.projectlombok:lombok:1.18.36")
32+
implementation(project(":api"))
3733
}
3834

3935
paper {

plugin/src/main/java/net/thenextlvl/hologram/HologramAPI.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
package net.thenextlvl.hologram;
22

3-
import core.annotation.FieldsAreNotNullByDefault;
4-
import core.annotation.MethodsReturnNotNullByDefault;
53
import net.thenextlvl.hologram.api.HologramProvider;
64
import net.thenextlvl.hologram.implementation.CraftHologramProvider;
75
import net.thenextlvl.hologram.listener.HologramListener;
86
import org.bstats.bukkit.Metrics;
97
import org.bukkit.Bukkit;
108
import org.bukkit.plugin.ServicePriority;
119
import org.bukkit.plugin.java.JavaPlugin;
10+
import org.jspecify.annotations.NullMarked;
1211

13-
@FieldsAreNotNullByDefault
14-
@MethodsReturnNotNullByDefault
12+
@NullMarked
1513
public class HologramAPI extends JavaPlugin {
1614
private final HologramProvider provider = new CraftHologramProvider();
1715
private final Metrics metrics = new Metrics(this, 20033);

plugin/src/main/java/net/thenextlvl/hologram/implementation/CraftHologramFactory.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88
import org.bukkit.Location;
99
import org.bukkit.block.data.BlockData;
1010
import org.bukkit.inventory.ItemStack;
11+
import org.jspecify.annotations.NullMarked;
1112

13+
@NullMarked
1214
public class CraftHologramFactory implements HologramFactory {
1315
@Override
1416
public CraftTextHologram createHologram(Location location, Component text) {

plugin/src/main/java/net/thenextlvl/hologram/implementation/CraftHologramLoader.java

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,16 +8,23 @@
88
import net.minecraft.network.protocol.game.ClientboundSetEntityDataPacket;
99
import net.minecraft.network.protocol.game.ClientboundTeleportEntityPacket;
1010
import net.minecraft.network.syncher.SynchedEntityData;
11+
import net.minecraft.world.entity.PositionMoveRotation;
1112
import net.minecraft.world.phys.Vec3;
1213
import net.thenextlvl.hologram.api.HologramLoader;
1314
import net.thenextlvl.hologram.api.hologram.Hologram;
1415
import org.bukkit.Location;
1516
import org.bukkit.craftbukkit.entity.CraftDisplay;
1617
import org.bukkit.craftbukkit.entity.CraftPlayer;
1718
import org.bukkit.entity.Player;
19+
import org.jspecify.annotations.NullMarked;
1820

19-
import java.util.*;
21+
import java.util.ArrayList;
22+
import java.util.Collection;
23+
import java.util.HashSet;
24+
import java.util.Set;
25+
import java.util.WeakHashMap;
2026

27+
@NullMarked
2128
public class CraftHologramLoader implements HologramLoader {
2229
private final ClientHologramLoader loader = new ClientHologramLoader();
2330

@@ -103,7 +110,12 @@ private void teleport(Hologram hologram, Location location, CraftPlayer player)
103110
var connection = player.getHandle().connection;
104111
var display = ((CraftDisplay) hologram).getHandle();
105112
display.moveTo(location.getX(), location.getY(), location.getZ());
106-
connection.send(new ClientboundTeleportEntityPacket(display));
113+
connection.send(new ClientboundTeleportEntityPacket(
114+
display.getId(),
115+
PositionMoveRotation.of(display),
116+
Set.of(),
117+
display.onGround()
118+
));
107119
}
108120

109121
private Set<Hologram> getHolograms(Player player) {
Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,29 @@
11
package net.thenextlvl.hologram.implementation;
22

3-
import lombok.Getter;
3+
import net.thenextlvl.hologram.api.HologramFactory;
4+
import net.thenextlvl.hologram.api.HologramLoader;
45
import net.thenextlvl.hologram.api.HologramProvider;
6+
import net.thenextlvl.hologram.api.HologramRegistry;
7+
import org.jspecify.annotations.NullMarked;
58

6-
@Getter
9+
@NullMarked
710
public class CraftHologramProvider implements HologramProvider {
811
private final CraftHologramRegistry hologramRegistry = new CraftHologramRegistry();
912
private final CraftHologramFactory hologramFactory = new CraftHologramFactory();
1013
private final CraftHologramLoader hologramLoader = new CraftHologramLoader();
14+
15+
@Override
16+
public HologramRegistry getHologramRegistry() {
17+
return hologramRegistry;
18+
}
19+
20+
@Override
21+
public HologramFactory getHologramFactory() {
22+
return hologramFactory;
23+
}
24+
25+
@Override
26+
public HologramLoader getHologramLoader() {
27+
return hologramLoader;
28+
}
1129
}

plugin/src/main/java/net/thenextlvl/hologram/implementation/CraftHologramRegistry.java

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,22 @@
11
package net.thenextlvl.hologram.implementation;
22

33
import com.google.common.base.Preconditions;
4-
import lombok.Getter;
54
import net.thenextlvl.hologram.api.HologramRegistry;
65
import net.thenextlvl.hologram.api.hologram.Hologram;
6+
import org.jspecify.annotations.NullMarked;
77

88
import java.util.ArrayList;
99
import java.util.Collection;
1010

11-
@Getter
11+
@NullMarked
1212
public class CraftHologramRegistry implements HologramRegistry {
1313
private final Collection<Hologram> holograms = new ArrayList<>();
1414

15+
@Override
16+
public Collection<Hologram> getHolograms() {
17+
return holograms;
18+
}
19+
1520
@Override
1621
public void register(Hologram hologram) throws IllegalArgumentException {
1722
Preconditions.checkArgument(!isRegistered(hologram), "Hologram already registered");

plugin/src/main/java/net/thenextlvl/hologram/implementation/hologram/CraftBlockHologram.java

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
package net.thenextlvl.hologram.implementation.hologram;
22

3-
import lombok.Getter;
43
import net.minecraft.world.entity.Display;
54
import net.minecraft.world.entity.EntityType;
65
import net.thenextlvl.hologram.api.hologram.BlockHologram;
@@ -10,10 +9,10 @@
109
import org.bukkit.craftbukkit.CraftServer;
1110
import org.bukkit.craftbukkit.CraftWorld;
1211
import org.bukkit.craftbukkit.entity.CraftBlockDisplay;
12+
import org.jspecify.annotations.NullMarked;
1313

14-
@Getter
14+
@NullMarked
1515
public class CraftBlockHologram extends CraftBlockDisplay implements BlockHologram {
16-
@SuppressWarnings("NotNullFieldNotInitialized")
1716
private Location location;
1817

1918
public CraftBlockHologram(Location location, BlockData block) {
@@ -24,6 +23,11 @@ public CraftBlockHologram(Location location, BlockData block) {
2423
setBlock(block);
2524
}
2625

26+
@Override
27+
public Location getLocation() {
28+
return location;
29+
}
30+
2731
@Override
2832
public void setLocation(Location location) {
2933
getHandle().setPos(location.getX(), location.getY(), location.getZ());

0 commit comments

Comments
 (0)