Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8474ef46f6 |
No files matched your search
Generated
+1
@@ -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" />
|
||||
|
||||
Generated
+75
@@ -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
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
@@ -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 ]
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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"
|
||||
@@ -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
@@ -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'
|
||||
|
||||
@@ -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')
|
||||
}
|
||||
Reference in new issue
Block a user