mirror of
https://github.com/Auxilor/EcoEnchants.git
synced 2025-02-09 03:21:21 +01:00
Added Economical
This commit is contained in:
parent
fea61a382d
commit
dc3585dc64
@ -249,5 +249,11 @@
|
|||||||
<version>1.7</version>
|
<version>1.7</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.destroystokyo.paper</groupId>
|
||||||
|
<artifactId>paper-api</artifactId>
|
||||||
|
<version>1.16.3-R0.1-SNAPSHOT</version>
|
||||||
|
<scope>provided</scope>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</project>
|
</project>
|
||||||
|
@ -23,9 +23,8 @@ public abstract class AbstractCommand implements CommandExecutor, Registerable {
|
|||||||
this.playersOnly = playersOnly;
|
this.playersOnly = playersOnly;
|
||||||
}
|
}
|
||||||
|
|
||||||
public AbstractCommand setTab(AbstractTabCompleter tabCompleter) {
|
public AbstractTabCompleter getTab() {
|
||||||
this.tabCompleter = tabCompleter;
|
return null;
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getPermission() {
|
public String getPermission() {
|
||||||
@ -58,6 +57,8 @@ public abstract class AbstractCommand implements CommandExecutor, Registerable {
|
|||||||
@Override
|
@Override
|
||||||
public final void register() {
|
public final void register() {
|
||||||
Bukkit.getPluginCommand(name).setExecutor(this);
|
Bukkit.getPluginCommand(name).setExecutor(this);
|
||||||
|
|
||||||
|
this.tabCompleter = this.getTab();
|
||||||
if(tabCompleter != null) {
|
if(tabCompleter != null) {
|
||||||
Bukkit.getPluginCommand(name).setTabCompleter(tabCompleter);
|
Bukkit.getPluginCommand(name).setTabCompleter(tabCompleter);
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
package com.willfp.ecoenchants.command.commands;
|
package com.willfp.ecoenchants.command.commands;
|
||||||
|
|
||||||
import com.willfp.ecoenchants.command.AbstractCommand;
|
import com.willfp.ecoenchants.command.AbstractCommand;
|
||||||
|
import com.willfp.ecoenchants.command.AbstractTabCompleter;
|
||||||
|
import com.willfp.ecoenchants.command.tabcompleters.TabCompleterEnchantinfo;
|
||||||
import com.willfp.ecoenchants.config.ConfigManager;
|
import com.willfp.ecoenchants.config.ConfigManager;
|
||||||
import com.willfp.ecoenchants.enchantments.EcoEnchant;
|
import com.willfp.ecoenchants.enchantments.EcoEnchant;
|
||||||
import com.willfp.ecoenchants.enchantments.EcoEnchants;
|
import com.willfp.ecoenchants.enchantments.EcoEnchants;
|
||||||
@ -20,6 +22,11 @@ public final class CommandEnchantinfo extends AbstractCommand {
|
|||||||
super("enchantinfo", "ecoenchants.enchantinfo", false);
|
super("enchantinfo", "ecoenchants.enchantinfo", false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AbstractTabCompleter getTab() {
|
||||||
|
return new TabCompleterEnchantinfo();
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onExecute(CommandSender sender, List<String> args) {
|
public void onExecute(CommandSender sender, List<String> args) {
|
||||||
if(args.size() == 0) {
|
if(args.size() == 0) {
|
||||||
|
@ -4,7 +4,9 @@ import com.willfp.ecoenchants.config.ConfigManager;
|
|||||||
import com.willfp.ecoenchants.config.configs.EnchantmentConfig;
|
import com.willfp.ecoenchants.config.configs.EnchantmentConfig;
|
||||||
import com.willfp.ecoenchants.enchantments.meta.EnchantmentRarity;
|
import com.willfp.ecoenchants.enchantments.meta.EnchantmentRarity;
|
||||||
import com.willfp.ecoenchants.enchantments.util.Watcher;
|
import com.willfp.ecoenchants.enchantments.util.Watcher;
|
||||||
|
import com.willfp.ecoenchants.util.Logger;
|
||||||
import com.willfp.ecoenchants.util.interfaces.Registerable;
|
import com.willfp.ecoenchants.util.interfaces.Registerable;
|
||||||
|
import com.willfp.ecoenchants.util.optional.Prerequisite;
|
||||||
import net.md_5.bungee.api.ChatColor;
|
import net.md_5.bungee.api.ChatColor;
|
||||||
import org.apache.commons.lang.WordUtils;
|
import org.apache.commons.lang.WordUtils;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -39,11 +41,11 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist
|
|||||||
private boolean enabled;
|
private boolean enabled;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Create new EcoEnchant matching builder
|
* Create new EcoEnchant matching builder and prerequisites
|
||||||
*
|
*
|
||||||
* @param builder The {@link EcoEnchantBuilder} for enchantment
|
* @param builder The {@link EcoEnchantBuilder} for enchantment
|
||||||
*/
|
*/
|
||||||
protected EcoEnchant(EcoEnchantBuilder builder) {
|
protected EcoEnchant(EcoEnchantBuilder builder, Prerequisite[] prerequisites) {
|
||||||
super(NamespacedKey.minecraft(builder.key));
|
super(NamespacedKey.minecraft(builder.key));
|
||||||
|
|
||||||
this.type = builder.type;
|
this.type = builder.type;
|
||||||
@ -51,10 +53,28 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist
|
|||||||
this.configVersion = builder.configVersion;
|
this.configVersion = builder.configVersion;
|
||||||
this.config = builder.config;
|
this.config = builder.config;
|
||||||
|
|
||||||
|
if(!Arrays.stream(prerequisites).allMatch(Prerequisite::isMet)) {
|
||||||
|
Arrays.stream(prerequisites).forEach(prerequisite -> {
|
||||||
|
if(!prerequisite.isMet()) {
|
||||||
|
Logger.warn("Enchantment " + builder.key + " does not match prerequisite \"" + prerequisite.name() + "\". It will not be available.");
|
||||||
|
}
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
this.update();
|
this.update();
|
||||||
this.add();
|
this.add();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create new EcoEnchant matching builder
|
||||||
|
*
|
||||||
|
* @param builder The {@link EcoEnchantBuilder} for enchantment
|
||||||
|
*/
|
||||||
|
protected EcoEnchant(EcoEnchantBuilder builder) {
|
||||||
|
this(builder, new Prerequisite[]{});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Update the enchantment based off config values
|
* Update the enchantment based off config values
|
||||||
*/
|
*/
|
||||||
|
@ -227,6 +227,7 @@ public class EcoEnchants {
|
|||||||
public static final EcoEnchant INACCURACY_CURSE = new InaccuracyCurse();
|
public static final EcoEnchant INACCURACY_CURSE = new InaccuracyCurse();
|
||||||
public static final EcoEnchant RESPIRATOR = new Respirator();
|
public static final EcoEnchant RESPIRATOR = new Respirator();
|
||||||
public static final EcoEnchant FETCHING = new Fetching();
|
public static final EcoEnchant FETCHING = new Fetching();
|
||||||
|
public static final EcoEnchant ECONOMICAL = new Economical();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get all registered {@link EcoEnchant}s
|
* Get all registered {@link EcoEnchant}s
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
package com.willfp.ecoenchants.enchantments.ecoenchants.normal;
|
||||||
|
|
||||||
|
import com.destroystokyo.paper.event.player.PlayerElytraBoostEvent;
|
||||||
|
import com.willfp.ecoenchants.enchantments.EcoEnchant;
|
||||||
|
import com.willfp.ecoenchants.enchantments.EcoEnchantBuilder;
|
||||||
|
import com.willfp.ecoenchants.enchantments.util.EnchantChecks;
|
||||||
|
import com.willfp.ecoenchants.enchantments.util.EnchantmentUtils;
|
||||||
|
import com.willfp.ecoenchants.util.optional.Prerequisite;
|
||||||
|
import org.bukkit.event.EventHandler;
|
||||||
|
|
||||||
|
public class Economical extends EcoEnchant {
|
||||||
|
public Economical() {
|
||||||
|
super(
|
||||||
|
new EcoEnchantBuilder("economical", EnchantmentType.NORMAL, 5.0),
|
||||||
|
new Prerequisite[]{Prerequisite.HasPaper}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
public void onElytraBoost(PlayerElytraBoostEvent event) {
|
||||||
|
if(EnchantmentUtils.passedChance(this, EnchantChecks.getArmorPoints(event.getPlayer(), this)))
|
||||||
|
event.setShouldConsume(false);
|
||||||
|
}
|
||||||
|
}
|
@ -5,7 +5,6 @@ import com.willfp.ecoenchants.EcoEnchantsPlugin;
|
|||||||
import com.willfp.ecoenchants.command.commands.CommandEcodebug;
|
import com.willfp.ecoenchants.command.commands.CommandEcodebug;
|
||||||
import com.willfp.ecoenchants.command.commands.CommandEcoreload;
|
import com.willfp.ecoenchants.command.commands.CommandEcoreload;
|
||||||
import com.willfp.ecoenchants.command.commands.CommandEnchantinfo;
|
import com.willfp.ecoenchants.command.commands.CommandEnchantinfo;
|
||||||
import com.willfp.ecoenchants.command.tabcompleters.TabCompleterEnchantinfo;
|
|
||||||
import com.willfp.ecoenchants.config.ConfigManager;
|
import com.willfp.ecoenchants.config.ConfigManager;
|
||||||
import com.willfp.ecoenchants.display.EnchantDisplay;
|
import com.willfp.ecoenchants.display.EnchantDisplay;
|
||||||
import com.willfp.ecoenchants.display.packets.PacketOpenWindowMerchant;
|
import com.willfp.ecoenchants.display.packets.PacketOpenWindowMerchant;
|
||||||
@ -44,6 +43,7 @@ import com.willfp.ecoenchants.nms.TridentStack;
|
|||||||
import com.willfp.ecoenchants.util.Logger;
|
import com.willfp.ecoenchants.util.Logger;
|
||||||
import com.willfp.ecoenchants.util.UpdateChecker;
|
import com.willfp.ecoenchants.util.UpdateChecker;
|
||||||
import com.willfp.ecoenchants.util.interfaces.EcoRunnable;
|
import com.willfp.ecoenchants.util.interfaces.EcoRunnable;
|
||||||
|
import com.willfp.ecoenchants.util.optional.Prerequisite;
|
||||||
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
|
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
|
||||||
import org.bstats.bukkit.Metrics;
|
import org.bstats.bukkit.Metrics;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
@ -70,30 +70,6 @@ public class Loader {
|
|||||||
Logger.info("");
|
Logger.info("");
|
||||||
Logger.info("==========================================");
|
Logger.info("==========================================");
|
||||||
|
|
||||||
/*
|
|
||||||
Check for paper
|
|
||||||
*/
|
|
||||||
|
|
||||||
boolean isPapermc = false;
|
|
||||||
try {
|
|
||||||
isPapermc = Class.forName("com.destroystokyo.paper.VersionHistoryManager$VersionData") != null;
|
|
||||||
} catch (ClassNotFoundException ignored) {}
|
|
||||||
|
|
||||||
if (!isPapermc) {
|
|
||||||
Bukkit.getScheduler().runTaskLater(EcoEnchantsPlugin.getInstance(), () -> {
|
|
||||||
Logger.info("");
|
|
||||||
Logger.info("----------------------------");
|
|
||||||
Logger.info("");
|
|
||||||
Logger.error("You don't seem to be running paper!");
|
|
||||||
Logger.error("Paper is strongly recommended for all servers,");
|
|
||||||
Logger.error("and enchantments like Drill may not function properly without it");
|
|
||||||
Logger.error("Download Paper from §fhttps://papermc.io");
|
|
||||||
Logger.info("");
|
|
||||||
Logger.info("----------------------------");
|
|
||||||
Logger.info("");
|
|
||||||
}, 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
Load Configs
|
Load Configs
|
||||||
*/
|
*/
|
||||||
@ -283,7 +259,7 @@ public class Loader {
|
|||||||
Logger.info("Loading Commands...");
|
Logger.info("Loading Commands...");
|
||||||
new CommandEcoreload().register();
|
new CommandEcoreload().register();
|
||||||
new CommandEcodebug().register();
|
new CommandEcodebug().register();
|
||||||
new CommandEnchantinfo().setTab(new TabCompleterEnchantinfo()).register();
|
new CommandEnchantinfo().register();
|
||||||
Logger.info("");
|
Logger.info("");
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -412,6 +388,23 @@ public class Loader {
|
|||||||
Logger.info("Spartan: §9DISABLED");
|
Logger.info("Spartan: §9DISABLED");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
Check for paper
|
||||||
|
*/
|
||||||
|
|
||||||
|
if (!Prerequisite.HasPaper.isMet()) {
|
||||||
|
Logger.info("");
|
||||||
|
Logger.info("----------------------------");
|
||||||
|
Logger.info("");
|
||||||
|
Logger.error("You don't seem to be running paper!");
|
||||||
|
Logger.error("Paper is strongly recommended for all servers,");
|
||||||
|
Logger.error("and enchantments like Drill may not function properly without it");
|
||||||
|
Logger.error("Download Paper from §fhttps://papermc.io");
|
||||||
|
Logger.info("");
|
||||||
|
Logger.info("----------------------------");
|
||||||
|
Logger.info("");
|
||||||
|
}
|
||||||
|
|
||||||
Logger.info("");
|
Logger.info("");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,6 +1,5 @@
|
|||||||
package com.willfp.ecoenchants.nms;
|
package com.willfp.ecoenchants.nms;
|
||||||
|
|
||||||
|
|
||||||
import com.willfp.ecoenchants.nms.API.BlockBreakWrapper;
|
import com.willfp.ecoenchants.nms.API.BlockBreakWrapper;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
|
@ -0,0 +1,12 @@
|
|||||||
|
package com.willfp.ecoenchants.util;
|
||||||
|
|
||||||
|
public class ClassUtils {
|
||||||
|
public static boolean exists(String className) {
|
||||||
|
try {
|
||||||
|
Class.forName(className);
|
||||||
|
return true;
|
||||||
|
} catch (ClassNotFoundException e) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,29 @@
|
|||||||
|
package com.willfp.ecoenchants.util.optional;
|
||||||
|
|
||||||
|
import com.willfp.ecoenchants.util.ClassUtils;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
|
|
||||||
|
public enum Prerequisite {
|
||||||
|
MinVer1_16(false),
|
||||||
|
HasPaper(false),
|
||||||
|
Dummy(false);
|
||||||
|
|
||||||
|
private boolean isMet;
|
||||||
|
|
||||||
|
Prerequisite(boolean isMet) {
|
||||||
|
this.isMet = isMet;
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isMet() {
|
||||||
|
return isMet;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void setMet(boolean met) {
|
||||||
|
isMet = met;
|
||||||
|
}
|
||||||
|
|
||||||
|
static {
|
||||||
|
MinVer1_16.setMet(!Bukkit.getServer().getClass().getPackage().getName().split("\\.")[3].contains("15"));
|
||||||
|
HasPaper.setMet(ClassUtils.exists("com.destroystokyo.paper.event.player.PlayerElytraBoostEvent"));
|
||||||
|
}
|
||||||
|
}
|
25
Plugin/src/main/resources/enchants/normal/economical.yml
Normal file
25
Plugin/src/main/resources/enchants/normal/economical.yml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
#
|
||||||
|
# Economical EcoEnchant
|
||||||
|
#
|
||||||
|
|
||||||
|
config-version: 5.0 # Don't edit this.
|
||||||
|
|
||||||
|
name: "Economical"
|
||||||
|
description: Chance to not consume fireworks while boosting.
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
obtaining:
|
||||||
|
table: true
|
||||||
|
villager: true
|
||||||
|
loot: true
|
||||||
|
rarity: epic
|
||||||
|
|
||||||
|
general-config:
|
||||||
|
targets:
|
||||||
|
- elytra
|
||||||
|
grindstoneable: true
|
||||||
|
conflicts: []
|
||||||
|
maximum-level: 4
|
||||||
|
|
||||||
|
config:
|
||||||
|
chance-per-level: 20
|
@ -853,4 +853,7 @@ permissions:
|
|||||||
default: true
|
default: true
|
||||||
ecoenchants.fromtable.fetching:
|
ecoenchants.fromtable.fetching:
|
||||||
description: Allows getting fetching from an enchanting table
|
description: Allows getting fetching from an enchanting table
|
||||||
|
default: true
|
||||||
|
ecoenchants.fromtable.economical:
|
||||||
|
description: Allows getting economical from an enchanting table
|
||||||
default: true
|
default: true
|
4
pom.xml
4
pom.xml
@ -60,6 +60,10 @@
|
|||||||
<id>dmulloy2-repo</id>
|
<id>dmulloy2-repo</id>
|
||||||
<url>https://repo.dmulloy2.net/nexus/repository/public/</url>
|
<url>https://repo.dmulloy2.net/nexus/repository/public/</url>
|
||||||
</repository>
|
</repository>
|
||||||
|
<repository>
|
||||||
|
<id>papermc</id>
|
||||||
|
<url>https://papermc.io/repo/repository/maven-public/</url>
|
||||||
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
Loading…
Reference in New Issue
Block a user