mdsimmo / bomberman Goto Github PK
View Code? Open in Web Editor NEWA Minecraft Bukkit plugin recreating Bomberman
Home Page: https://www.spigotmc.org/resources/bomberman.77616/
License: The Unlicense
A Minecraft Bukkit plugin recreating Bomberman
Home Page: https://www.spigotmc.org/resources/bomberman.77616/
License: The Unlicense
Describe the bug
Chained TNT explosions can break multiple blocks at once
To Reproduce
Steps to reproduce the behavior:
Expected behavior
Chained TNT explosions should stop at the wall
Version infomation
Typing e.g. /bm stop -?
will show "Incorrect command usage".
It will also show the help as asked, but it shouldn't tell me that I typed it wrong.
No response
v0.8.3
any
No response
No response
Describe the solution you'd like
Add {list|map|function}
and {list|join|seperator}
These would replace {list|foreach}
and {list|get}
. No idea why I added {list|get}
in the first place
Describe alternatives you've considered
no
Additional context
none
What problem does the feature solve
The current wiki is ugly, doesn't support permalinks and sidebar is disorganized, and no good spot to upload images.
Describe the solution you'd like
Build a website (using github pages) that is nice.
Describe alternatives you've considered
Patch the wiki. But most problems cannot be fixed by patching.
Additional context
Inspired by lucky-perms wiki.
What problem does the feature solve
Describe the solution you'd like
Add lobbies.
Lobbies have a list of possible games (configured by server admins)
Players join the lobby, then, when a game becomes available, players will automatically jump into the game and start playing
Describe alternatives you've considered
Use command blocks to build complex circuits which sense players in games and select the appropriate game. But this complex for server admins, inefficient, cannot be executed by players from a command. It also is highly inflexible once built.
Use the code execution ability of the messaging system to execute code when a player joins a game or attempts to join a game. For instance, create a game called "lobby" with zero spawns. Then alter the "no spawns remaining" message to choose a random game and send the player there. This is an ugly though.
Additional information
Some questions:
When I start the Bomberman game the glass that surrounds the player to make sure he can't do anything till the game starts (which usually disappears when it does start) is not disappearing. I've tried going into the configs, everything. I have the spawn points set using the sign and it's a custom schematic but the glass won't disappear.
Please help.
What problem does the feature solve
The console is not able to create new games since the /bm create
command is required to be run by a player to get a position. It could be useful for the console to create new games to automatically generate a queue of games.
Describe the solution you'd like
Add a -p
argument that lets the console specify the position. Then dynamic creation of games will be possible.
Describe alternatives you've considered
-t
target selector that the console can target a player/entity. This would only mean that in most cases an entity will need to be spawned so it's position can be selected. It may seem to have the advantage that multiple games can be built at once, but ultimately I cannot see how multiple games could be built at once due to what would the games' name must be unique?/exec
, which allows the position to be set.Additional context
I dint know how to setup in latest version can u teach me
What problem does the feature solve
It is not possible to set game data from the console
Describe the solution you'd like
Bring "/bm set" back with full game data support
Describe alternatives you've considered
None
Additional context
It can be done by players and by editing config files. Maybe that's enough?
Describe the bug
Somehow the player can not build in the Radius of 3 blocks arround an Owner/admin
Version information
What problem does the feature solve
In messages.yml
, every time e.g. a command is written, it is (inconsistently) wrapped in e.g. {gray|{italics|/bm ...}}
.
Describe the solution you'd like
Have all commands pass to a custom format like items are. Likewise for names, etc.
Describe alternatives you've considered
None
Additional context
None
What code needs changing
In io.github.mdsimmo.bomberman.game.GamePlayer.kt
, you have the following code which adds a permission attachment to a player:
// Add a permission group for WorldGuard compatibility (must be done before teleporting)
// Wrap in try loop because it is quite dodgy how other plugins implement
try {
val playerPermissions = BukkitUtils.getPermissibleBase(player)
playerPermissions?.addAttachment(plugin, "group.bomberman", true)
} catch (e: Exception) {
plugin.logger.log(Level.WARNING, "Unable to add permissions", e)
}
This calls io.github.mdsimmo.bomberman.utils.BukkitUtils.kt
's getPermissibleBase()
function which calls HUMAN_ENTITY_PERMISSIBLE_FIELD
which uses reflection. This does not abide by normal plugin coding standards (plugins should not be accessing OBC!), and thus breaks an interaction with one of the plugin APIs that I am maintaining.
What solution would you like
The Player
object inherits from Permissible
(as shown here at the top under "All Superinterfaces"), meaning you can simply use the following:
player.addAttachment(plugin, "group.bomberman", true)
This avoids the need of:
perm
from CraftHumanEntity
CraftHumanEntity
directlyperm
's access modifiers to be accessible, which is a Java security issueThanks in advance!
What problem does the feature solve
A clear and concise description of what the problem is. Ex. "It is difficult for players to ..."
Describe the solution you'd like
one idea is to have support for worldguard / worldguard flags so default players can get access/permission to use the plugin in a spawn area that is used worldguard on the place. when it is in a worldguard area no one can place tnt on it as it using in the game
Describe alternatives you've considered
If any, a clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.
What problem does the feature solve
To test if a string matches a regex, currently have to replace on its inverse
Describe the solution you'd like
See title
Describe alternatives you've considered
None
Additional context
None
What problem does the feature solve
Add ability to damage players through, e.g. mobs, command blocks, falling, swords, etc
Describe the solution you'd like
Currently everything except PLUGIN damage is ignored. Add configuration to so different damage sources are not ignored. Each source should still only cause 1 damage (except command blocks which should be able to do any amount of damage)
Describe alternatives you've considered
none
Describe the bug
If a player is removed from a game (either by leaving the area, or disconnecting) during the countdown, the countdown will continue even if no players are left.
To Reproduce
Steps to reproduce the behavior:
Expected behavior
If no (or one?) players are left, the game should stop.
Version infomation
Additional/Screenshots
none
Hi there, your discord link is not working anymore on spigot.
What problem does the feature solve
When something happens in Bomberman, it is difficult for server owners to notice the event, so it is hard to implement custom behavior.
Describe the solution you'd like
Describe alternatives you've considered
Use {#exce|...}
in messages. But using #exec is rather insecure and should be disabled.
What code needs changing
The dev
command is currently enabled/disabled by toggling line comments in BaseCommand.init
.
This requires frequent changes to the file, and I am frequently forgetting to uncomment the line before committing code or releasing a new version.
What solution would you like
Have an option in the config file (e.g. dev.enable-command
), that enables the command
What problem does the feature solve
The localisation system is becoming increasingly more and more complex.
While it is possible to do many cool things with it - we are ultimately just reinventing the wheel (and doing a worse job)
The current syntax for "lambda" functions is ugly and confusing. Ugly example:
command.group.help: |-
{#|heading|Help: {command|name}}
{command|children|sort|{!it|name}|filter|{!sender|haspermission|{it|permission}}|map|{!#|map|{it|name}|{#switch|{=|{#len|{it|description}}>40}|1|{#sub|{it|description}|0|40}...|{it|description}}}|join|
}
Describe the solution you'd like
Allow message to run scheme code.
Be able to replace the above with something like:
command.group.help: |-
{#scheme|(heading (get command 'name))}
{#scheme|(??? I need to learn scheme...))}
Describe alternatives you've considered
Add more and more custom functions, until a horrid language is written.
I have noticed that the macro expansion system I've created does look scheme-ish, but with braces instead of parenthesise. Possibly, the all braces could be interpreted as scheme?
Things to think about
What problem does the feature solve
It is not easily possible to get data about a game from command blocks to display, e.g. custom signs/holograms
Describe the solution you'd like
Every game should be have a configurable scoreboard that stores data about a game.
The score board should show data like:
Describe alternatives you've considered
Allow "/bm info" to select individual data, thus, allowing to be used in other commands. However, it will not work well with minecraft command blocks which largely revolve around /scoreboard and /execute for data manipulation.
{#switch|{#green|}||Nothing|Something}
will output Something
.
No response
v0.8.3
any
any
No response
What problem does the feature solve
Let players break specific blocks if they have the correct tool
Describe the solution you'd like
Describe alternatives you've considered
Allow all breaking with a tool, but I don't think this gives enough control to map makers
What problem does the feature solve
If an arena is created that requires a specific config (e.g starting kit, loot drops), then two files are needed to be shipped to distribute the game (both config and schematic). This extra file adds unwanted complexity.
Describe the solution you'd like
Make I to possible to ship config and schematic in a single zip file.
Describe alternatives you've considered
Questions still to answer
Tasks
/bm create
to copy an existing configWe should add the hacktoberfest tag to the repository to increase amount of contributions to the project.
What problem does the feature solve
It is not possible to cause another player to join a game with /bm join <game>
. This is an important feature for command signs, {#exec|....}
, command blocks and console control.
Describe the solution you'd like
Don't know what I want yet. Some possible solutions:
-t=<target>
to specify which player to affect\minecraft:exec
\minecraft:exec
works (is this possible?)More things to consider
Describe the bug
{#exec|...}
is executed as the console. {#exec|...}
is also exposed to the PlaceholderAPI. Thus, anyone with access to permissions API is full administrator.
To Reproduce
Steps to reproduce the behavior:
%bomberman_msg_{#exec|op mdsimmo}%
Expected behavior
PlaceholderAPI should not have access to {#exec|...}. It should only be accessible by editing the messages.yml
Really, exec
should exist at all and command-events (#18) is a much better solution. But for time being, probably good to restrict usage.
Version infomation
Additional/Screenshots
What problem does the feature solve
Documentation on the following features is lacking:
bm configure
bmplayer
nbt tagDescribe the solution you'd like
Document it!
Describe alternatives you've considered
Ignore the problem and let users be confused
What problem does the feature solve
no undo when the bomberman building is placed wrong place
Describe the solution you'd like
undo place of the bomberman part when it is placed fail
Describe alternatives you've considered
Additional context
Add any other context or screenshots about the feature request here.
Hello
From default_messages.yml
:
format:
# How a basic message looks
# TODO remove need for empty message check
# {message}: the message being sent
message: '{#switch|{message}|||{#green|[Bomberman]} {message}}'
No response
v0.8.3
No response
Describe the bug
Having a game with no players means the game will continue on forever, until it is manually stopped. This is not good if players have access to /bm start
but not /bm stop
.
To Reproduce
Steps to reproduce the behaviour:
/bm start <name>
Expected behaviour
/bm start
should return an error if the game has no players.
Version information
Additional/Screenshots
What problem does the feature solve
Consider this expression:
{list|filter|{!context|{it}}|...}
For each element in list
, I want to pass the element to some object context
.
Currently this is not possible
Describe the solution you'd like
Let context arguments be passed through lazy expanded arguments (or maybe just lists?)
Describe alternatives you've considered
Chuck this messaging system out and write a better language
Additional context
Needed for Issue #32
Describe the bug
Requesting help for a group command will show all commands, regardless if the receiver is able to run those commands.
To Reproduce
Steps to reproduce the behaviour:
/bm -?
/bm create
will be shownExpected behaviour
Commands that the player does not have permission for should not be shown
Version information
Additional
The help for target select flags on /bm join
and /bm leave
are also always displayed
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.