1 Commits
Author SHA1 Message Date
KinczeK 8474ef46f6 added placeholders based on PlaceholderAPI 2024-06-03 16:23:42 +02:00
14 changed files with 358 additions and 11 deletions

No files matched your search

+1
View File
@@ -10,6 +10,7 @@
<set>
<option value="$PROJECT_DIR$" />
<option value="$PROJECT_DIR$/core" />
<option value="$PROJECT_DIR$/core_new" />
<option value="$PROJECT_DIR$/shared" />
<option value="$PROJECT_DIR$/v1_16" />
<option value="$PROJECT_DIR$/v1_17" />
+75
View File
@@ -56,5 +56,80 @@
<option name="name" value="maven3" />
<option name="url" value="https://oss.sonatype.org/content/repositories/central" />
</remote-repository>
<remote-repository>
<option name="id" value="maven7" />
<option name="name" value="maven7" />
<option name="url" value="https://s01.oss.sonatype.org/content/repositories/snapshots/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven3" />
<option name="name" value="maven3" />
<option name="url" value="https://oss.sonatype.org/content/groups/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven4" />
<option name="name" value="maven4" />
<option name="url" value="https://repo.codemc.io/repository/maven-releases/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven2" />
<option name="name" value="maven2" />
<option name="url" value="https://libraries.minecraft.net" />
</remote-repository>
<remote-repository>
<option name="id" value="maven15" />
<option name="name" value="maven15" />
<option name="url" value="https://jitpack.io" />
</remote-repository>
<remote-repository>
<option name="id" value="maven13" />
<option name="name" value="maven13" />
<option name="url" value="https://maven.playpro.com" />
</remote-repository>
<remote-repository>
<option name="id" value="maven10" />
<option name="name" value="maven10" />
<option name="url" value="https://repo.codemc.org/repository/maven-public" />
</remote-repository>
<remote-repository>
<option name="id" value="maven11" />
<option name="name" value="maven11" />
<option name="url" value="https://repo.extendedclip.com/content/repositories/placeholderapi/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven7" />
<option name="name" value="maven7" />
<option name="url" value="https://bitbucket.org/kangarko/libraries/raw/master" />
</remote-repository>
<remote-repository>
<option name="id" value="maven14" />
<option name="name" value="maven14" />
<option name="url" value="https://repo.fvdh.dev/releases" />
</remote-repository>
<remote-repository>
<option name="id" value="maven6" />
<option name="name" value="maven6" />
<option name="url" value="https://repo.bg-software.com/repository/api/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven8" />
<option name="name" value="maven8" />
<option name="url" value="https://maven.enginehub.org/repo/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven" />
<option name="name" value="maven" />
<option name="url" value="https://repo.rosewooddev.io/repository/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven9" />
<option name="name" value="maven9" />
<option name="url" value="https://repo.md-5.net/content/repositories/public/" />
</remote-repository>
<remote-repository>
<option name="id" value="maven12" />
<option name="name" value="maven12" />
<option name="url" value="https://mvn.lumine.io/repository/maven-public/" />
</remote-repository>
</component>
</project>
+2 -2
View File
@@ -9,13 +9,14 @@ version '1.0'
repositories {
mavenCentral()
maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
maven { url 'https://hub.spigotmc.org/nexus/content/groups/public/' }
maven { url 'https://repo.codemc.org/repository/nms/' }
maven { url 'https://repo.extendedclip.com/content/repositories/placeholderapi/' }
}
dependencies {
compileOnly 'org.spigotmc:spigot:1.16.5-R0.1-SNAPSHOT'
implementation 'org.bstats:bstats-bukkit:3.0.2'
compileOnly 'me.clip:placeholderapi:2.11.6'
implementation project (':shared')
implementation project (':v1_16')
@@ -27,5 +28,4 @@ dependencies {
implementation project (':v1_20')
implementation project (':v1_20_2')
implementation project (':v1_20_4')
//implementation project (':v1_20_6')
}
@@ -0,0 +1,42 @@
package xyz.exyron.fastcrystals;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.OfflinePlayer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class FastCrystalsPlaceholder extends PlaceholderExpansion {
private final String statusTrue, statusFalse;
private final FastCrystalsPlugin plugin;
public FastCrystalsPlaceholder(FastCrystalsPlugin fastCrystalsPlugin) {
this.plugin = fastCrystalsPlugin;
this.statusFalse = this.plugin.getConfiguration().getString("placeholderStatusFalse");
this.statusTrue = this.plugin.getConfiguration().getString("placeholderStatusTrue");
}
@Override
public @NotNull String getIdentifier() {
return "fastcrystals";
}
@Override
public @NotNull String getAuthor() {
return "Exyron.XYZ";
}
@Override
public @NotNull String getVersion() {
return "1.0";
}
@Override
public @Nullable String onRequest(OfflinePlayer player, @NotNull String params) {
if (params.equalsIgnoreCase("status")) {
return this.plugin.isUsingFastCrystals(player.getUniqueId()) ? this.statusTrue : this.statusFalse;
}
return null;
}
}
@@ -35,6 +35,10 @@ public final class FastCrystalsPlugin extends JavaPlugin implements Listener {
new Metrics(this, BSTATS_ID);
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
new FastCrystalsPlaceholder(this).register();
}
this.crystalDamage = this.assignCrystalDamageFromServerVersion(Bukkit.getBukkitVersion().split("-")[0]);
String disableMessage = this.colorize(Objects.requireNonNull(this.configuration.getString("disableMessage")));
@@ -64,7 +68,7 @@ public final class FastCrystalsPlugin extends JavaPlugin implements Listener {
@EventHandler(priority = EventPriority.HIGHEST)
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
if (event.getDamager() instanceof Player player && event.getEntity() instanceof EnderCrystal crystal && this.playersUUID.contains(player.getUniqueId())) {
if (event.getDamager() instanceof Player player && event.getEntity() instanceof EnderCrystal crystal && this.isUsingFastCrystals(player.getUniqueId())) {
this.crystalDamage.handle(player, crystal);
}
}
@@ -76,9 +80,12 @@ public final class FastCrystalsPlugin extends JavaPlugin implements Listener {
}
}
public boolean isUsingFastCrystals(UUID uniqueId) {
return this.playersUUID.contains(uniqueId);
}
private CrystalDamage assignCrystalDamageFromServerVersion(String version) {
return switch (version) {
//case "1.20.5", "1.20.6" -> new CrystalDamage_v1_20_6();
case "1.20.4", "1.20.3" -> new CrystalDamage_v1_20_4();
case "1.20", "1.20.1", "1.20.2" -> new CrystalDamage_v1_20_2();
case "1.19.4" -> new CrystalDamage_v1_19_4();
@@ -112,4 +119,8 @@ public final class FastCrystalsPlugin extends JavaPlugin implements Listener {
return ChatColor.translateAlternateColorCodes('&', message.replace(">>", "»").replace("<<", "«"));
}
public FileConfiguration getConfiguration() {
return configuration;
}
}
+4 -1
View File
@@ -13,4 +13,7 @@ defaultStatus: true
commandEnabled: true
enableMessage: "&7Fast crystal feature is now &aenabled&7."
disableMessage: "&7Fast crystal feature is now &cdisabled&7."
disableMessage: "&7Fast crystal feature is now &cdisabled&7."
placeholderStatusTrue: "&atrue"
placeholderStatusFalse: "&cfalse"
+1
View File
@@ -3,6 +3,7 @@ version: 1.0
api-version: 1.16
main: xyz.exyron.fastcrystals.FastCrystalsPlugin
authors: [ Exyron.XYZ, KamlaX, KinczeK ]
softdepend: [ PlaceholderAPI ]
commands:
fastcrystals:
aliases: [ fastercrystals, fastcrystal, quickcrystal ]
+29
View File
@@ -0,0 +1,29 @@
plugins {
id 'java'
id "com.github.johnrengelman.shadow" version "8.1.1"
}
group 'xyz.exyron.fastcrystals'
version '1.0'
java {
toolchain.languageVersion.set(JavaLanguageVersion.of(21))
}
repositories {
mavenCentral()
mavenLocal()
maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
maven { url 'https://oss.sonatype.org/content/repositories/snapshots' }
maven { url 'https://oss.sonatype.org/content/repositories/central' }
maven { url 'https://repo.extendedclip.com/content/repositories/placeholderapi/' }
}
dependencies {
compileOnly 'org.spigotmc:spigot-api:1.20.6-R0.1-SNAPSHOT'
implementation 'org.bstats:bstats-bukkit:3.0.2'
compileOnly 'me.clip:placeholderapi:2.11.6'
implementation project(':shared')
implementation project(':v1_20_6')
}
@@ -0,0 +1,42 @@
package xyz.exyron.fastcrystals;
import me.clip.placeholderapi.expansion.PlaceholderExpansion;
import org.bukkit.OfflinePlayer;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
public class FastCrystalsPlaceholder extends PlaceholderExpansion {
private final String statusTrue, statusFalse;
private final FastCrystalsPlugin plugin;
public FastCrystalsPlaceholder(FastCrystalsPlugin fastCrystalsPlugin) {
this.plugin = fastCrystalsPlugin;
this.statusFalse = this.plugin.getConfiguration().getString("placeholderStatusFalse");
this.statusTrue = this.plugin.getConfiguration().getString("placeholderStatusTrue");
}
@Override
public @NotNull String getIdentifier() {
return "fastcrystals";
}
@Override
public @NotNull String getAuthor() {
return "Exyron.XYZ";
}
@Override
public @NotNull String getVersion() {
return "1.0";
}
@Override
public @Nullable String onRequest(OfflinePlayer player, @NotNull String params) {
if (params.equalsIgnoreCase("status")) {
return this.plugin.isUsingFastCrystals(player.getUniqueId()) ? this.statusTrue : this.statusFalse;
}
return null;
}
}
@@ -0,0 +1,119 @@
package xyz.exyron.fastcrystals;
import java.util.HashSet;
import java.util.Objects;
import java.util.Set;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import net.md_5.bungee.api.ChatColor;
import org.bstats.bukkit.Metrics;
import org.bukkit.Bukkit;
import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.entity.EnderCrystal;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.plugin.java.JavaPlugin;
public final class FastCrystalsPlugin extends JavaPlugin implements Listener {
private final FileConfiguration configuration = this.getConfig();
private final boolean currentStatus = this.configuration.getBoolean("defaultStatus");
private final Set<UUID> playersUUID = new HashSet<>();
private CrystalDamage crystalDamage;
private static final int BSTATS_ID = 21848;
@Override
public void onEnable() {
this.saveDefaultConfig();
new Metrics(this, BSTATS_ID);
if (Bukkit.getPluginManager().getPlugin("PlaceholderAPI") != null) {
new FastCrystalsPlaceholder(this).register();
}
this.crystalDamage = this.assignCrystalDamageFromServerVersion(Bukkit.getBukkitVersion().split("-")[0]);
String disableMessage = this.colorize(Objects.requireNonNull(this.configuration.getString("disableMessage")));
String enableMessage = this.colorize(Objects.requireNonNull(this.configuration.getString("enableMessage")));
if (this.configuration.getBoolean("commandEnabled")) {
Objects.requireNonNull(this.getCommand("fastcrystals")).setExecutor(((sender, command, label, args) -> {
if (sender instanceof Player player) {
UUID playerUniqueId = player.getUniqueId();
if (this.playersUUID.contains(playerUniqueId)) {
player.sendMessage(disableMessage);
this.playersUUID.remove(playerUniqueId);
} else {
player.sendMessage(enableMessage);
this.playersUUID.add(playerUniqueId);
}
} else {
sender.sendMessage(this.colorize("&cYou cannot run this command from Console."));
}
return false;
}));
}
this.getServer().getPluginManager().registerEvents(this, this);
}
@EventHandler(priority = EventPriority.HIGHEST)
public void onEntityDamageByEntity(EntityDamageByEntityEvent event) {
if (event.getDamager() instanceof Player player && event.getEntity() instanceof EnderCrystal crystal && this.isUsingFastCrystals(player.getUniqueId())) {
this.crystalDamage.handle(player, crystal);
}
}
@EventHandler(priority = EventPriority.MONITOR)
public void onPlayerJoin(PlayerJoinEvent event) {
if (this.currentStatus) {
this.playersUUID.add(event.getPlayer().getUniqueId());
}
}
public boolean isUsingFastCrystals(UUID uniqueId) {
return this.playersUUID.contains(uniqueId);
}
private CrystalDamage assignCrystalDamageFromServerVersion(String version) {
return switch (version) {
case "1.20.5", "1.20.6" -> new CrystalDamage_v1_20_6();
default -> {
Bukkit.getPluginManager().disablePlugin(this);
throw new IllegalStateException(
"Plugin is disabling due to unsupported minecraft version (" + version + "). This version of plugin support only 1.20.5+ versions."
);
}
};
}
private static final Pattern HEX_PATTERN = Pattern.compile("#[A-Fa-f0-9]{6}");
private String colorize(String message) {
Matcher matcher = HEX_PATTERN.matcher(message);
StringBuilder result = new StringBuilder();
while (matcher.find()) {
matcher.appendReplacement(result, ChatColor.of(matcher.group()).toString());
}
matcher.appendTail(result);
message = result.toString();
return ChatColor.translateAlternateColorCodes('&', message.replace(">>", "»").replace("<<", "«"));
}
public FileConfiguration getConfiguration() {
return configuration;
}
}
+19
View File
@@ -0,0 +1,19 @@
#
# ___ __ __ _ _ _ __ ___ _ __ __ __ _ _ ____
# / _ \\ \/ /| | | || '__|/ _ \ | '_ \ \ \/ /| | | ||_ /
# | __/ > < | |_| || | | (_) || | | | _ > < | |_| | / /
# \___|/_/\_\ \__, ||_| \___/ |_| |_|(_)/_/\_\ \__, |/___|
# |___/ |___/
#
# Set this value to "false" if you don't want to be fast crystals automatically enabled on player join.
defaultStatus: true
# Set this value to "false" if you don't want "/fastcrystals" command to be working. (it's going to be completely disabled)
commandEnabled: true
enableMessage: "&7Fast crystal feature is now &aenabled&7."
disableMessage: "&7Fast crystal feature is now &cdisabled&7."
placeholderStatusTrue: "&atrue"
placeholderStatusFalse: "&cfalse"
+9
View File
@@ -0,0 +1,9 @@
name: Exyron-FastCrystals
version: 1.0
api-version: 1.20
main: xyz.exyron.fastcrystals.FastCrystalsPlugin
authors: [ Exyron.XYZ, KamlaX, KinczeK ]
softdepend: [ PlaceholderAPI ]
commands:
fastcrystals:
aliases: [ fastercrystals, fastcrystal, quickcrystal ]
+1 -4
View File
@@ -1,10 +1,7 @@
plugins {
id("org.gradle.toolchains.foojay-resolver-convention") version("0.5.0")
}
rootProject.name = 'FastCrystalsPlugin'
include 'core'
include 'core_new'
include 'shared'
include 'v1_16'
include 'v1_17'
+1 -2
View File
@@ -14,12 +14,11 @@ repositories {
mavenLocal()
maven { url 'https://hub.spigotmc.org/nexus/content/repositories/snapshots/' }
maven { url 'https://repo.codemc.org/repository/nms/' }
maven { url 'https://papermc.io/repo/repository/maven-public/' }
}
dependencies {
compileOnly 'org.spigotmc:spigot:1.20.6-R0.1-SNAPSHOT'
compileOnly 'org.spigotmc:spigot-api:1.20.6-R0.1-SNAPSHOT'
compileOnly project (':shared')
compileOnly project(':shared')
}