GithubHelp home page GithubHelp logo

mobarena-refabricated's People

Contributors

ommp avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar

mobarena-refabricated's Issues

Add special abilities to mobs

Apart from health differences and status effects or attribute modifiers, mobs and especially boss mobs lack something that makes them stand out. It is currently harder to beat swarm waves and sometimes even default waves than it is to beat boss waves. Adding special abilities to mobs could make the boss waves more interesting and difficult.

Incompatibility with Backslot

Arenas can't be joined when the Backslot mod is installed as the check for an empty inventory fails even if the inventory is empty.

Increase chances of mobs spawning with armour

Making boss mobs have a higher chance of spawning with armour can further increase the difficulty of the boss waves and make them more unique. Also consider increasing the chance of mobs in normal waves having armour for every wave.

CRUD arena information in database

Arenas can be added to the database but some editing features are missing as well as deleting arenas.

Features

  • Storing and retrieving arenas from database
  • Deleting arenas in database
  • Editing arenas in database

Stop mobs in arena from being set on fire by sunlight

Mobs like zombies and skeletons are set on fire because of sunlight and take damage. The mobs that spawn in the arena shouldn't be set on fire because of sunlight or light level.

  • Disable the feature that sets mobs on fire when exposed to sunlight if they belong to the arena

Mobs don't spawn with default equipment

Mobs like skeletons don't spawn with bows and arrows. This means that skeletons don't shoot arrows and instead just try to hit the player. Pillagers don't have a crossbow.
The spawning system needs to be reworked further to fix this issue.

Cancel block destruction in the arena region

Blocks in the arena can currently be destroyed. A player's gamemode is set to adventure for now because of this, however, it does not solve creeper explosions and outside players destroying the arena. It also comes with side effects like making it impossible to use flint and steel.
Rather than trying to make the blocks themselves indestructible, cancel the destruction of a block if anything tries to destroy it.

Classes don't save special effects of items

The setclass command does not save the special effects of items such as potions and arrows. This means that players get potions and arrows without their effects when loading them in the lobby. Normal enchantments still work on armour and tools.

  • Serialise special effects of items

Restore player's gamemode after leaving arena

Currently, a player's gamemode is set to adventure upon joining a lobby and then set to survival after they have left the arena.
It would be better to restore the gamemode they had before entering the arena than to set it to survival.

Add a countdown for players to join before the game starts.

When the first player selects a class and joins the arena, there should be a countdown (preferably configurable, the default should probably be 1 minute.) say 60 seconds, during which more players can join the arena. After the countdown is over, the game starts, and no more players can join. (But they can go to the spectator warp)

This would also open the possibility for a minimumPlayerCount option in the config (default could be 2), and the countdown starts only after the minimum number of players join, instead of after the 1st player

Mobs don't attack players outside a certain range.

Mobs don't attack players if they are too far away. There are two things that would improve upon this.

  • Make mobs target the closest player when spawning. This NEEDS to be implemented anyways because spiders don't attack players during daytime.
  • Don't spawn mobs at completely arbitrary random spawn points in the arena. Instead spawn them at a spawn point close to a random player.

Add option to enable/disable XP orbs dropping when mobs are killed

The update that made mobs no longer drop items also made them not drop experience point orbs, but some might want to be able to collect experience points after taking down mobs, and keeping those experience points after exiting the arena. If the mixin for drops is reworked a little, the drops for mob loot and experience point orbs can be separated, thereby making a configuration option using the set commands to enable/disable experience orbs available.

Display wave number when a new wave starts

Players currently don't know which wave they are on unless they manually count.
It would be great to have a chat message or ideally some text in the center of the screen that informs the player which wave they're on. Another option would be to use the experience bar to display the current wave.

Improve inventory management

Players keep everything they have in the inventory when they leave the arena. This makes duplicating items possible by simply joining a lobby, selecting a class and then leaving.
They also drop items in the arena upon dying which can cause clutter and also makes it easier every new match they play assuming the items haven't despawned.
Players can drop items in the lobby after selecting a class, this too makes duplication and exploitation possible.

What needs to be implemented:

  • Don't allow players to drop items in the lobby
  • Clear items on the arena ground when it becomes inactive (all players die or leave)
  • Clear player inventories when they die or leave an arena
  • Don't allow spectators to drop or pick up items

Yaw and pitch are incorrect for all warps

The position is correct when the player uses any warp, but the yaw and pitch are not the same as what they were when using the "set" commands for the various warps.
This might be because of the way the database saves floats or because of some conversion error.
Upon further testing it seems that it doesn't happen if the warp is set whilst looking straight down or up.

Add a feature to allow editing arenas in a GUI

Problems with the current solution

Data in the database can currently only be edited using commands.
Data saved in the .json files can currently only be edited with commands or a text editor (this is the bigger problem)
Whilst it's possible to configure the mod this way, it presents challenges when dealing with validity of data and ease of use:

  • It can be tricky to add custom mobs because of the format "mod_name:mob_name".
  • Custom waves can't be edited with commands at all and have to be manually edited in a .json file.

Editing classes using a text editor is even more difficult because of this messy format for the items:

"data": "{Count:1,id:\"minecraft:stone_sword\",tag:{Damage:0,Enchantments:[{id:\"minecraft:mending\",lvl:1s},{id:\"minecraft:unbreaking\",lvl:3s}]}}"

Solution idea

It would highly increase the ease of use if players could configure arenas using a GUI instead of having to traverse .json files with lots of nested information.
One option is to have a GUI with tabs for different categories such as custom waves, classes, and other settings.
This GUI would then be invoked by using a command like /ma configure arena_name.

Another option would be a configure command for every category instead of using a GUI with tabs, this would show a GUI only for a specific category.

Class armour is not equipped when selecting a class

When a player right clicks a class sign and the class successfully loads, the items are inserted into the player's inventory, but the armour pieces are not equipped.
One solution might be to save the exact slots the items should go into when a class is created, and then load the items into the specific slots when a player selects a class.

Basic player arena events (join, ready, leave)

The arena should store information about players who have joined the lobby and players who are ready/not ready.

  • A specific arena (for example: Arena1, FireArena, etc.) contains list of not ready players
  • A specific arena contains list of ready players
  • All lobby players are teleported from lobby to arena if lobby players list is > 0 and its size is equal to ready lobby players

Later features after any type of mob spawning has been implemented:

  • Player is teleported to exit warp after health reaches 0.

Add custom waves

Custom waves can make arenas feel more unique by allowing players to set up arenas with more variety.
Inspiration for the features will be taken from the original MobArena plugin, but some of them might not be implemented.

Roadmap/Overview of features (may be changed):

  • Single wave configuration

    • Specific wave number
    • Wave type
    • Monsters and their probability
    • Fixed monster amount
  • Recurrent wave configuration

    • Starts being available at specific wave
    • Frequency (determines how often the wave can spawn)
    • Priority (If two recurrent waves clash, the wave with the highest priority will spawn)
    • Wave type
    • Monsters and their probability
    • Fixed monster amount
  • Single always prioritised over recurrent

Ranged kills and damage are not counted

Problem:
The scoreboard shows 0 kills and 0 damage for any player that has only used ranged weapons to kill mobs during an arena session.

Expected behaviour:
Ranged kills and damage are counted on the scoreboard.

Rewards

The arena should be fun to play in on its own (intrinsic motivation), but a reward system is still important as it would add a lot more to the experience.

The reward system will at least need:

  • A counter for how many waves a player survived.
  • An option to configure rewards. For example 1 iron ingot for every 5 waves survived.
  • Compatibility with the system that restores inventories after all players died or left the arena. If a player entered the arena with a full inventory, the way they receive rewards after leaving may need to be handled differently.

Other things that may be considered:

  • Rewards for amount of kills, especially most kills if there are several players
  • A chance system so that rewards for every x wave can be randomised. For example: a 5% chance of getting a netherite chestplate for every x wave.

The implementation for configuring the rewards will most likely be using the database instead of .json files as I am much more familiar with creating databases than configuration files. That way it's less likely to have bugs and is faster for me to implement. The configuration will therefore be through commands. Adding rewards could be done with a command like /ma reward add "wave number" whilst holding an item.
A list of features implemented will be added once it becomes relevant.

Use the two arena points to create a cuboid region

The arena points are not being used for anything because the cuboid region functionality hasn't been implemented yet.

Making a cuboid region out of the two points is important because it will be needed for important cleanup events such as the ones listed below:

  • Clear items on arena ground after an arena is finished
  • Teleport mobs back into the arena if they somehow ended up outside the arena region
  • Handle players who ended up outside the region
  • Protect arena blocks
  • If destruction is implemented and enabled, restore arena blocks after an arena is finished

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.