diff --git a/Extensions/Alchemy/build.gradle b/Extensions/Alchemy/build.gradle new file mode 100644 index 00000000..dec7ee33 --- /dev/null +++ b/Extensions/Alchemy/build.gradle @@ -0,0 +1,14 @@ +dependencies { + compileOnly 'org.spigotmc:spigot-api:1.15.2-R0.1-SNAPSHOT' + compileOnly project(':plugin') +} + +jar{ + archiveFileName = project.name + " Extension" + ".jar" +} + +description = 'Alchemy' + +tasks.withType(Jar) { + destinationDirectory = file("$rootDir/bin/") +} \ No newline at end of file diff --git a/Extensions/Alchemy/src/main/java/com/willfp/ecoenchants/alchemy/Alchemy.java b/Extensions/Alchemy/src/main/java/com/willfp/ecoenchants/alchemy/Alchemy.java new file mode 100644 index 00000000..9822eee6 --- /dev/null +++ b/Extensions/Alchemy/src/main/java/com/willfp/ecoenchants/alchemy/Alchemy.java @@ -0,0 +1,46 @@ +package com.willfp.ecoenchants.alchemy; + +import com.willfp.ecoenchants.EcoEnchantsPlugin; +import com.willfp.ecoenchants.enchantments.EcoEnchant; +import com.willfp.ecoenchants.enchantments.util.EnchantChecks; +import com.willfp.ecoenchants.enchantments.util.EnchantmentUtils; +import org.bukkit.NamespacedKey; +import org.bukkit.entity.LivingEntity; +import org.bukkit.event.EventHandler; +import org.bukkit.event.entity.EntityPotionEffectEvent; +import org.bukkit.persistence.PersistentDataType; +import org.bukkit.potion.PotionEffect; + +public class Alchemy extends EcoEnchant { + public Alchemy() { + super("alchemy", EnchantmentType.NORMAL, AlchemyMain.class); + } + + @EventHandler + public void onPotionEffect(EntityPotionEffectEvent event) { + if(event.getNewEffect() == null) return; + if(!(event.getEntity() instanceof LivingEntity)) return; + + LivingEntity entity = (LivingEntity) event.getEntity(); + + int level = EnchantChecks.getArmorPoints(entity, this); + if(level == 0) return; + + if(!EnchantmentUtils.passedChance(this, level)) + return; + + PotionEffect effect = event.getNewEffect(); + + PotionEffect newEffect = new PotionEffect( + effect.getType(), + effect.getDuration(), + ((effect.getAmplifier() + 1) * 2) - 1, + effect.isAmbient(), + effect.hasParticles(), + effect.hasIcon() + ); + + entity.removePotionEffect(effect.getType()); + entity.addPotionEffect(newEffect); + } +} diff --git a/Extensions/Alchemy/src/main/java/com/willfp/ecoenchants/alchemy/AlchemyMain.java b/Extensions/Alchemy/src/main/java/com/willfp/ecoenchants/alchemy/AlchemyMain.java new file mode 100644 index 00000000..3927cbc2 --- /dev/null +++ b/Extensions/Alchemy/src/main/java/com/willfp/ecoenchants/alchemy/AlchemyMain.java @@ -0,0 +1,15 @@ +package com.willfp.ecoenchants.alchemy; + +import com.willfp.ecoenchants.extensions.Extension; + +public class AlchemyMain extends Extension { + @Override + public void onEnable() { + + } + + @Override + public void onDisable() { + + } +} diff --git a/Extensions/Alchemy/src/main/resources/enchants/normal/alchemy.yml b/Extensions/Alchemy/src/main/resources/enchants/normal/alchemy.yml new file mode 100644 index 00000000..827d2549 --- /dev/null +++ b/Extensions/Alchemy/src/main/resources/enchants/normal/alchemy.yml @@ -0,0 +1,26 @@ +# +# Alchemy EcoEnchant +# + +name: "Alchemy" +description: Chance to double the strength of potions +enabled: true + +obtaining: + table: true + villager: true + loot: true + rarity: legendary + +general-config: + targets: + - helmet + - chestplate + - leggings + - boots + grindstoneable: true + conflicts: [] + maximum-level: 6 + +config: + chance-per-level: 4 \ No newline at end of file diff --git a/Extensions/Alchemy/src/main/resources/extension.yml b/Extensions/Alchemy/src/main/resources/extension.yml new file mode 100644 index 00000000..25a24e50 --- /dev/null +++ b/Extensions/Alchemy/src/main/resources/extension.yml @@ -0,0 +1,3 @@ +name: Alchemy +main: com.willfp.ecoenchants.alchemy.AlchemyMain +version: 1.0.0 \ No newline at end of file diff --git a/Plugin/src/main/java/com/willfp/ecoenchants/config/UpdatingYamlConfig.java b/Plugin/src/main/java/com/willfp/ecoenchants/config/UpdatingYamlConfig.java index 5491e4e3..2fcb7f53 100644 --- a/Plugin/src/main/java/com/willfp/ecoenchants/config/UpdatingYamlConfig.java +++ b/Plugin/src/main/java/com/willfp/ecoenchants/config/UpdatingYamlConfig.java @@ -1,6 +1,7 @@ package com.willfp.ecoenchants.config; import com.willfp.ecoenchants.EcoEnchantsPlugin; +import com.willfp.ecoenchants.util.Logger; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.YamlConfiguration; @@ -43,6 +44,10 @@ public abstract class UpdatingYamlConfig { config.load(configFile); InputStream newIn = EcoEnchantsPlugin.getInstance().getResource(name); + if(newIn == null) { + Logger.error(name + " is null?"); + return; + } BufferedReader reader = new BufferedReader(new InputStreamReader(newIn, StandardCharsets.UTF_8)); YamlConfiguration newConfig = new YamlConfiguration(); newConfig.load(reader); diff --git a/settings.gradle b/settings.gradle index 499495e7..83d74d26 100644 --- a/settings.gradle +++ b/settings.gradle @@ -35,3 +35,5 @@ findProject(':Biomes').projectDir = file('Extensions/Biomes') include('SprintArtifacts') findProject(':SprintArtifacts').projectDir = file('Extensions/SprintArtifacts') +include('Alchemy') +findProject(':Alchemy').projectDir = file('Extensions/Alchemy')