A Minecraft plugin that adds magic spells for epic fights!

Overview

EpicSpellsPlugin

EpicSpellsPlugin is a Minecraft Spigot plugin for version 1.18+ that aims to add magic spells to the game for epic pvp and pve fights.

This plugin is still in very early development, which is why there aren't that many spells yet as I'm focused on working on the underlying "framework".

Features

  • cast different spells with unique abilities and visuals
  • triggers for different events, such as when hitting a block, entity or player, getting out of a maximum distance and reaching a maximum lifetime
  • special pre-made effects, such as realistic explosions
  • creativity is pretty much the only limit (apart from technical limitations of Minecraft and the Spigot API of course)

Installation & usage

  • install a Spigot server for 1.18 or higher
  • download the EpicSpellsPlugin.jar from the latest release and put it in your server's plugins folder
  • cast any spell by running /spell cast <spellname> and have fun!

Planned features

  • easy spell casting by using a wand and/or items with special abilities
  • interaction of spells if two spells hit one another, for example to make a defence spell that blocks other spells
  • more pre-made effects to use in spells, such as ice spikes
Comments
  • Requesting to make a datapack

    Requesting to make a datapack

    Hey M0rica can you please make a datapack with same functions or post this plugin on websites like spigot or papermc as some minecraft server hosting websites like aternos do not allow custom plugins .

    opened by phoenix158 2
  • Adding spell pattern points when receiving packets from player instead of every tick

    Adding spell pattern points when receiving packets from player instead of every tick

    Is your feature request related to a problem? Please describe.

    Yes, incase of a player having packet loss some packets may arrive out of order making the server have to wait for the packets which should have arrived, during the waiting the player's head position will not be updated and when the packets in the middle finally arrive to the server the server will update player's head position to the latest one in less than a tick causing the player's head to jerk which can affect the player's ability to draw spell patterns.

    an oversimplified example:

    1. Player tells the server that its head is looking at (0, 0).
    2. Server receives player's head position and sets it to (0, 0).
    1. The pattern recording code records position (0, 0)
    1. Player tells the server that its head is looking at (0.5, 1).
    2. The packet with player's position is lost.
    3. The server does not get player's head position.
    1. Player tells the server that its head is looking at (1, 0).
    2. The server's computer gets player's position (1, 0).
    3. The server's computer realises that it did not receive a packet which was in the middle so it does not pass the packet to the Minecraft server yet.
    1. Player understands that the server did not get the packet.
    2. Player resends the packet where its head position is (0.5, 1).
    1. Server's computer gets the packet where players position is (0.5, 1)
    2. Server's computer sends both packets in the order (0.5, 1), (1, 0) to the Minecraft server.
    1. Server receives packet where player's head position is (0.5, 1)
    2. the server sets player's position to (0.5, 1)
    3. In less than a tick after that the server receives packet where player's head position is (1, 0)
    4. the server sets player's position to (1, 0)
    1. The pattern recording code records position (1, 0)
    1. The player instead of getting a triangle [(0, 0), (0.5, 1), (1, 0)] gets a line [(0, 0), (1, 0)]
    2. The player which was unable to cast its spell dies to a zombie which the its spell was supposed to kill.

    Describe the solution you'd like

    Instead of recording player's position on tick record it when the Minecraft server receives player look packet

    Describe alternatives you've considered

    Ignore this problem because it requires NMS to solve it.

    opened by nullTheCoder 1
  • Suggestion about changing the id system used for active spells.

    Suggestion about changing the id system used for active spells.

    In the code it generates an int from 0 to 9999 as the active spell id which would mean that there could only be 9999 at a time and if all of the 9999 spells were to be taken the server would just crush.

    Even with let's say 9995 active spell ids taken the server might still crush or at least get performance of spell spawning severally dropped because of it trying to generate a random number which is not taken over and over again.

    I would recommend changing from int id to UUID, or making the int id not random but instead increased by one every time a spell is spawned and when reaching the int limit just reset to 0. (Even tho reaching the int limit is very unlikely unless the server is running for years without restarting (if a spell were to be cast every second it would take 68 years to run out of ids or if at the rate of 1000 spells per second, it would still take 24 days))

    Thank you for reading this short suggestion.

    opened by nullTheCoder 1
  • Request for version

    Request for version

    Hello! currently I'm running a 1.17.1 minecraft server, my players really like the server, but at the moment i have been looking through some magic plugins and haven't found ones that have caught my eyes, until i ran into this one, I found the video pretty amazing, and how the system works, and i would like for there to be a 1.17.1 version thank you.

    opened by Play12mmmmm 0
  • Add spell casting system

    Add spell casting system

    This PR adds a spell casting system to let a player cast spells without needing to type in a command. How it works:

    • Cast a spell:

      When a player is holding a stick with the custom name "Magic Wand" in the main hand while sneaking, the system records a point where the player is looking at. Now the player moves his head to draw a pattern in front of him. Once the player stopps sneaking, the system analyses the pattern and tries to map it to a known pattern which will cast a spell. A pattern consists of an infinte sequence of lines with each line being one of 8 types: up, down, left, right, up-left, up-right, down-left or down-right.
    • Bind a spell to a custom pattern:

      To bind a spell to a custom pattern, the player needs to typ in the command /spell bind <SpellName>. Now the player just needs to draw the pattern he wants to bind the spell to and after that, the custom pattern will trigger the spell. It is possible to bind the same spell to multiple patterns, however binding a spell to a pattern bound to another spell will override which spell is bound to the pattern.
    opened by M0rica 0
  • add testing/op commands

    add testing/op commands

    This PR adds commands for testing purposes/server operators to manipulate varoius variables.

    Commands/subcommands added:

    • /spell terminate <id>: terminates the spell with given ID
    • /spell kill <id>: kills the spell with given ID (skips terminate event)
    • /mage <player> <mana/manaMaximum/manaRegeneration> <set/get/add/remove> <amount>: change the according value by the given amount or get the current value
    • /removemage <player>: remove the player executing this command or the given player (requires op) from being a mage
    • /addmage <player>: add the player executing this command or the given player (requires op) as a mage In addition to that, /spell cast now displays a message in chat with the id of the spell cast to use with the new terminate and kill options.
    opened by M0rica 0
  • Add commands for testing purposes/server operators

    Add commands for testing purposes/server operators

    Is your feature request related to a problem? Please describe. There are no commands that allow to test various aspects of the plugin, such as how much Mana a player can have. These variables are hard-coded right now.

    Describe the solution you'd like Add commands that allow for manipulation of different aspects, such as a player's maximum Mana amount, add&remove Mana from/to a player, changing how much Mana a player regenerates per tick, disabling/enabling a player as a Mage, etc.

    enhancement 
    opened by M0rica 0
Releases(v0.1-dev.3)
  • v0.1-dev.3(Jul 31, 2022)

    Changelog

    • implement a spell casting system that doesn't require using a command to cast a spell How it works:
      • Cast a spell: If you're holding a stick with the custom name "Magic Wand" in the main hand while sneaking, the system records a point where you're looking at. Now you move your head to draw a pattern in front of you. Once you stop sneaking, the system analyses the pattern and tries to map it to a known pattern which will cast a spell. A pattern consists of an infinte sequence of lines with each line being one of 8 types: up, down, left, right, up-left, up-right, down-left or down-right.
      • Bind a spell to a custom pattern: To bind a spell to a custom pattern, you need to type in the command /spell bind . Now you just need to draw the pattern you want to bind the spell to and after that, the custom pattern will trigger the spell. It's possible to bind the same spell to multiple patterns, however binding a spell to a pattern bound to another spell will override the old spell.
    • fix iterating over active spells and concurrently adding a new spell throwing a ConcurrentModificationException in SpellManager::tick
    Source code(tar.gz)
    Source code(zip)
    EpicSpellsPlugin-0.1-dev.3.jar(50.88 KB)
  • v0.1-dev.2(May 13, 2022)

    Changelog

    • fully implement the previously partially implemented Mana system
    • add a small actionbar UI showing your current Mana
    • add commands for testing/server operators that allow to manipulate Mana of a player
    • add commands for adding/removing player from being a Mage
    • add subcommands to the /spell command for terminating/killing spells with an id
    • /spell cast <spellname> now shows a chat message with the cast spell's id
    Source code(tar.gz)
    Source code(zip)
    EpicSpellsPlugin-0.1-dev.2.jar(42.41 KB)
  • v0.1-dev.1(Apr 29, 2022)

Owner
null
A Minecraft plugin that adds Hacker News to your server

HNMC A Minecraft plugin that adds Hacker News to your server. Features Let your players waste their time responsibly by providing an in-game UI for Ha

Kaden Scott 2 Jan 30, 2022
This plugin adds subways/trams to Minecraft

Subways A Spigot plugin that adds subways/trams to Minecraft. Info I wanted to make a subway first, but it turned out to look more like a tram, whoops

Jens de Ruiter 8 Jun 28, 2022
A plugin that adds a player to the whitelist by entering the nickname on a specified channel.

DiscordWhitelist A plugin that adds the player to the whitelist by entering the nickname on a specified channel. Requirements Discord Bot (Make sure t

Zielino 3 Jun 21, 2022
A plugin that adds Qualities to Items, along with the ability for the user to create their own.

ItemQualities ItemQualities is a Minecraft Plugin for 1.18+ Servers that adds a special functionality to Damagable items. Inspired by the Quality Tool

Abraxas 7 Jul 1, 2022
This plugin adds cfn-nag linting support to CloudFormation yaml and json files.

cfn-nag-intellij-plugin This plugin adds cfn-nag linting support to CloudFormation yaml and json files. Cfn-nag must be installed separately. Installa

MMT Digital 6 Jun 23, 2022
Literally just adds milk, to act as a bridge for any other mods that want to do the same.

Milk lib Literally just adds milk, to act as a bridge for any other mods that want to do the same. See the Milk class for customisation; It allows for

null 5 Oct 17, 2022
A mod that adds a /btellraw command which provides several enhancement over vanilla's tellraw.

Better Tellraw A mod that adds a /btellraw command which provides several enhancement over vanilla's tellraw. This mod only affects the server-side en

LX862 3 Jun 8, 2022
Adds support for using InputStream/OutputStream from Spring's web clients

Spring stream interoperability This project offers three integrations: A WebClientHttpRequestFactory that redirects the RestTemplate API calls to a We

Rafael Winterhalter 5 Dec 18, 2022
trying to create a plugin using the spigot api! this plugin will be responsible for delivering the products according to the settings!

KettraShop "simples plugin de ativação de produtos da loja, dentro do Minecraft" ⚙️ Configurações caso você não tenha uma loja virtual para seu servid

SEBASTIAN JN ฅ^•ﻌ•^ฅ 4 Nov 2, 2022
An open source Minecraft plugin that allows operators to control who has access to the nether.

Nether Access Controller Description Nether Access Controller is a Minecraft plugin that allows operators to control access to the nether. It is essen

Daniel Stephenson 2 Feb 12, 2022
Minecraft Hug Plugin

Hug Sometimes virtual hugs are better than IRL hugs because you don't actually have to touch anyone. Hug makes it possible to hug another player on th

Stuart Duncan 5 Sep 7, 2022
This is a plugin for Minecraft Server (Spigot API) introduces a sector system which connects a single world across multiple servers.

OpenSourceSectors ?? ??️ This is a plugin for Minecraft Server (Spigot API) introduces a sector system which connects a single world across multiple s

null 20 Dec 28, 2022
Minecraft configurable plugin , which sends messages the first time a player logs into the server or the next time they log in.

JoinMessages Minecraft configurable plugin , which sends messages the first time a player logs into the server or the next time they log in or leave.

ᴠᴀʟᴇɴᴛɪɴ ᴢʜᴇʟᴇᴠ 6 Aug 30, 2022
A Velocity proxy plugin for Minecraft server discovery in k8s. All discovered servers are automatically added to the Velocity proxy.

kryo-server-discovery This plugin connects minecraft servers to a velocity proxy within Kubernetes. The service account in the namespace which the pro

Kryonite 9 Sep 13, 2022
A guild plugin for Minecraft Servers that supports 1.13 and above

OasisGuild Description A guild plugin for Minecraft Servers that supports 1.13 and above Languages zh_cn(简体中文) en_us(English) Placeholders %oasisguild

ChiyodaXiaoYi 2 Apr 6, 2022
This plugin integrate your minecraft server with discord webhook

B_DiscordIntegration This plugin integrate your minecraft server with discord webhook PLUGIN FEATURES: Join / Quit message Chat preview Death message

Black_ 1 Feb 11, 2022
A minecraft plugin to automatically use a totem of undying from your inventory

AutoTotem Spigot Download https://www.spigotmc.org/resources/autototem.99443/ Automatically use totems of undying from your inventory without needing

null 2 May 5, 2022
A minecraft plugin that let's you suicide in game

Suicide A minecraft plugin that let's you suicide in game Command /suicide - Let's you suicide Permission me.suicide - You can edit this in config.yml

Krumpez 1 Feb 16, 2022
r/place replica in Minecraft (Bukkit/Spigot plugin)

MinePlace offers a completely new gaming experience in Minecraft. As a parody of r/place, a world-renowned reddit community project, this project offe

Northernside 4 Aug 19, 2022