ommp / mobarena-refabricated Goto Github PK
View Code? Open in Web Editor NEWMobArena for Minecraft Fabric
License: GNU General Public License v3.0
MobArena for Minecraft Fabric
License: GNU General Public License v3.0
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.
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.
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.
Arenas can be added to the database but some editing features are missing as well as deleting arenas.
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.
Arena blocks should be restored after an arena is finished if protection is disabled.
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.
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.
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.
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.
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 if they are too far away. There are two things that would improve upon this.
Minimum players is currently set to 1 by default, maximum players defaults to 5. These should be configurable.
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.
Add an option in the config to make selecting a class compulsory for players before they join the arena.
Add reinforcements config example to wiki
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.
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:
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.
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:
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}]}}"
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.
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.
The arena should store information about players who have joined the lobby and players who are ready/not ready.
Later features after any type of mob spawning has been implemented:
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
Recurrent wave configuration
Single always prioritised over recurrent
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.
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:
Other things that may be considered:
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.
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:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.