diff --git a/eco-extensions/transmission/build.gradle b/eco-extensions/transmission/build.gradle new file mode 100644 index 00000000..4dff8a79 --- /dev/null +++ b/eco-extensions/transmission/build.gradle @@ -0,0 +1,7 @@ +group 'com.willfp' +version '1.0.0' +description = 'Transmission Extension' + +shadowJar { + archiveFileName = project.getDescription() + " v" + project.version + ".jar" +} \ No newline at end of file diff --git a/eco-extensions/transmission/src/main/java/com/willfp/ecoenchants/transmission/Transmission.java b/eco-extensions/transmission/src/main/java/com/willfp/ecoenchants/transmission/Transmission.java new file mode 100644 index 00000000..fda4be86 --- /dev/null +++ b/eco-extensions/transmission/src/main/java/com/willfp/ecoenchants/transmission/Transmission.java @@ -0,0 +1,38 @@ +package com.willfp.ecoenchants.transmission; + + +import com.willfp.ecoenchants.enchantments.EcoEnchants; +import com.willfp.ecoenchants.enchantments.itemtypes.Spell; +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.bukkit.event.player.PlayerInteractEvent; +import org.bukkit.util.Vector; +import org.jetbrains.annotations.NotNull; + +public class Transmission extends Spell { + public Transmission() { + super("transmission"); + } + + @Override + public boolean onUse(@NotNull final Player player, + final int level, + @NotNull final PlayerInteractEvent event) { + double distance = this.getConfig().getDouble(EcoEnchants.CONFIG_LOCATION + "distance"); + + Vector vector = player.getEyeLocation().getDirection().clone(); + vector.normalize(); + vector.multiply(distance); + + Location end = player.getEyeLocation().clone().add(vector); + + if (player.rayTraceBlocks(distance) != null) { + player.sendMessage(this.getPlugin().getLangYml().getPrefix() + this.getConfig().getString("block-in-path")); + return false; + } + + player.teleport(end); + + return true; + } +} diff --git a/eco-extensions/transmission/src/main/java/com/willfp/ecoenchants/transmission/TransmissionMain.java b/eco-extensions/transmission/src/main/java/com/willfp/ecoenchants/transmission/TransmissionMain.java new file mode 100644 index 00000000..bcbaea31 --- /dev/null +++ b/eco-extensions/transmission/src/main/java/com/willfp/ecoenchants/transmission/TransmissionMain.java @@ -0,0 +1,24 @@ +package com.willfp.ecoenchants.transmission; + +import com.willfp.eco.core.EcoPlugin; +import com.willfp.eco.core.extensions.Extension; +import com.willfp.ecoenchants.enchantments.EcoEnchant; +import org.jetbrains.annotations.NotNull; + +public class TransmissionMain extends Extension { + public static final EcoEnchant TRANSMISSION = new Transmission(); + + public TransmissionMain(@NotNull final EcoPlugin plugin) { + super(plugin); + } + + @Override + public void onEnable() { + // Handled by super + } + + @Override + public void onDisable() { + // Handled by super + } +} diff --git a/eco-extensions/transmission/src/main/resources/enchants/spell/transmission.yml b/eco-extensions/transmission/src/main/resources/enchants/spell/transmission.yml new file mode 100644 index 00000000..60858913 --- /dev/null +++ b/eco-extensions/transmission/src/main/resources/enchants/spell/transmission.yml @@ -0,0 +1,28 @@ +# +# Firewand EcoEnchant +# + +name: "Firewand" +description: Teleports you in the direction you are looking +enabled: true + +obtaining: + table: true + villager: true + loot: true + rarity: legendary + +general-config: + flags: [] + targets: + - sword + grindstoneable: true + disabled-in-worlds: [ ] + conflicts: [ ] + maximum-level: 1 + +config: + activation-sound: ENTITY_ENDERMAN_TELEPORT + cooldown: 15 # In seconds + distance: 8 + block-in-path: "&cThere are blocks in the way!" \ No newline at end of file diff --git a/eco-extensions/transmission/src/main/resources/extension.yml b/eco-extensions/transmission/src/main/resources/extension.yml new file mode 100644 index 00000000..0f8e906c --- /dev/null +++ b/eco-extensions/transmission/src/main/resources/extension.yml @@ -0,0 +1,4 @@ +name: Transmission +main: com.willfp.ecoenchants.transmission.TransmissionMain +version: ${projectVersion} +author: Auxilor \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 1f0daf37..a41292ab 100644 --- a/settings.gradle +++ b/settings.gradle @@ -23,4 +23,5 @@ include ':eco-extensions:precision' include ':eco-extensions:rainbow' include ':eco-extensions:sprint-artifacts' include ':eco-extensions:summoning' +include ':eco-extensions:transmission' include ':eco-extensions:xray' \ No newline at end of file