mirror of
https://github.com/Auxilor/EcoEnchants.git
synced 2025-02-03 02:21:21 +01:00
Added Economical
This commit is contained in:
parent
fea61a382d
commit
dc3585dc64
@ -249,5 +249,11 @@
|
||||
<version>1.7</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>com.destroystokyo.paper</groupId>
|
||||
<artifactId>paper-api</artifactId>
|
||||
<version>1.16.3-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
</project>
|
||||
|
@ -23,9 +23,8 @@ public abstract class AbstractCommand implements CommandExecutor, Registerable {
|
||||
this.playersOnly = playersOnly;
|
||||
}
|
||||
|
||||
public AbstractCommand setTab(AbstractTabCompleter tabCompleter) {
|
||||
this.tabCompleter = tabCompleter;
|
||||
return this;
|
||||
public AbstractTabCompleter getTab() {
|
||||
return null;
|
||||
}
|
||||
|
||||
public String getPermission() {
|
||||
@ -58,6 +57,8 @@ public abstract class AbstractCommand implements CommandExecutor, Registerable {
|
||||
@Override
|
||||
public final void register() {
|
||||
Bukkit.getPluginCommand(name).setExecutor(this);
|
||||
|
||||
this.tabCompleter = this.getTab();
|
||||
if(tabCompleter != null) {
|
||||
Bukkit.getPluginCommand(name).setTabCompleter(tabCompleter);
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
package com.willfp.ecoenchants.command.commands;
|
||||
|
||||
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.enchantments.EcoEnchant;
|
||||
import com.willfp.ecoenchants.enchantments.EcoEnchants;
|
||||
@ -20,6 +22,11 @@ public final class CommandEnchantinfo extends AbstractCommand {
|
||||
super("enchantinfo", "ecoenchants.enchantinfo", false);
|
||||
}
|
||||
|
||||
@Override
|
||||
public AbstractTabCompleter getTab() {
|
||||
return new TabCompleterEnchantinfo();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onExecute(CommandSender sender, List<String> args) {
|
||||
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.enchantments.meta.EnchantmentRarity;
|
||||
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.optional.Prerequisite;
|
||||
import net.md_5.bungee.api.ChatColor;
|
||||
import org.apache.commons.lang.WordUtils;
|
||||
import org.bukkit.Material;
|
||||
@ -39,11 +41,11 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist
|
||||
private boolean enabled;
|
||||
|
||||
/**
|
||||
* Create new EcoEnchant matching builder
|
||||
* Create new EcoEnchant matching builder and prerequisites
|
||||
*
|
||||
* @param builder The {@link EcoEnchantBuilder} for enchantment
|
||||
*/
|
||||
protected EcoEnchant(EcoEnchantBuilder builder) {
|
||||
protected EcoEnchant(EcoEnchantBuilder builder, Prerequisite[] prerequisites) {
|
||||
super(NamespacedKey.minecraft(builder.key));
|
||||
|
||||
this.type = builder.type;
|
||||
@ -51,10 +53,28 @@ public abstract class EcoEnchant extends Enchantment implements Listener, Regist
|
||||
this.configVersion = builder.configVersion;
|
||||
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.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
|
||||
*/
|
||||
|
@ -227,6 +227,7 @@ public class EcoEnchants {
|
||||
public static final EcoEnchant INACCURACY_CURSE = new InaccuracyCurse();
|
||||
public static final EcoEnchant RESPIRATOR = new Respirator();
|
||||
public static final EcoEnchant FETCHING = new Fetching();
|
||||
public static final EcoEnchant ECONOMICAL = new Economical();
|
||||
|
||||
/**
|
||||
* 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.CommandEcoreload;
|
||||
import com.willfp.ecoenchants.command.commands.CommandEnchantinfo;
|
||||
import com.willfp.ecoenchants.command.tabcompleters.TabCompleterEnchantinfo;
|
||||
import com.willfp.ecoenchants.config.ConfigManager;
|
||||
import com.willfp.ecoenchants.display.EnchantDisplay;
|
||||
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.UpdateChecker;
|
||||
import com.willfp.ecoenchants.util.interfaces.EcoRunnable;
|
||||
import com.willfp.ecoenchants.util.optional.Prerequisite;
|
||||
import org.apache.maven.artifact.versioning.DefaultArtifactVersion;
|
||||
import org.bstats.bukkit.Metrics;
|
||||
import org.bukkit.Bukkit;
|
||||
@ -70,30 +70,6 @@ public class Loader {
|
||||
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
|
||||
*/
|
||||
@ -283,7 +259,7 @@ public class Loader {
|
||||
Logger.info("Loading Commands...");
|
||||
new CommandEcoreload().register();
|
||||
new CommandEcodebug().register();
|
||||
new CommandEnchantinfo().setTab(new TabCompleterEnchantinfo()).register();
|
||||
new CommandEnchantinfo().register();
|
||||
Logger.info("");
|
||||
|
||||
/*
|
||||
@ -412,6 +388,23 @@ public class Loader {
|
||||
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("");
|
||||
}
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
package com.willfp.ecoenchants.nms;
|
||||
|
||||
|
||||
import com.willfp.ecoenchants.nms.API.BlockBreakWrapper;
|
||||
import org.bukkit.Bukkit;
|
||||
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
|
||||
ecoenchants.fromtable.fetching:
|
||||
description: Allows getting fetching from an enchanting table
|
||||
default: true
|
||||
ecoenchants.fromtable.economical:
|
||||
description: Allows getting economical from an enchanting table
|
||||
default: true
|
Loading…
Reference in New Issue
Block a user