a5h73y / parkour Goto Github PK
View Code? Open in Web Editor NEWThe ultimate Parkour plugin.
Home Page: https://a5h73y.github.io/Parkour/
License: MIT License
The ultimate Parkour plugin.
Home Page: https://a5h73y.github.io/Parkour/
License: MIT License
If a course has been assigned a level, the "/pa stats " command incorrectly displays
"Required level: 0".
If maxDeaths has also been set then the stats command displays the value of maxDeaths as the required level for the course.
Using the latest commit 2d46f7f, I've found the following issues when
"SneakToInteractItems: false" is set in the config:
Conversely when
"SneakToInteractItems: true" is set in the config, everything I've tested works as expected.
It's not really an important problem, but when PlaceholderAPI support will be complete, it may induce some bugs, since it will consider the wrong plugin.yml file.
Compiled as of bc5ff34
The DefaultPrize in the main config is rewarding on parkour course completion in addition to economy payout defined. Would it be possible to only reward in-game currency for the course?
Prize:
Enabled: true
DefaultPrize:
Material: DIAMOND
Amount: 1
XP: 0
Price:
Kit: 0
spawn:
Finish: 25
Setting the following only disables the economy payout, not the diamond reward.
Prize:
Enabled: false
Compiled as of d3cbb66
On exit when playing in courses with a linked lobby, it is taking players to the default lobby location instead of the set linked one.
Edit: It seems custom lounges don't work whatsoever outright. Removing the default lounge location, it just spams that no lounge has been setup despite a custom one existing and being linked to a course. With a default location set in addition to a custom location set / linked, it always uses the default location.
Lobby:
Set: true
World: world
X: -6287.321349023397
Y: 125.0
Z: 2116.5467648669683
Pitch: 2.9999778
Yaw: -90.3022
parkour:
World: world
X: -11380.5
Y: 107.0
Z: 10961.5
Pitch: -0.15001002
Yaw: -90.08281
Courses:
- spawn
- parkour1
- parkour2
- parkour3
- parkour4
- parkour5
- parkour6
- parkour7
- parkour8
- parkour9
- parkour10
- parkour11
- parkour12
- parkour13
- parkour14
- parkour15
- parkour16
- parkour17
- parkour18
- parkour19
- parkour20
- parkour21
- parkour22
- parkour23
- parkour24
- parkour25
spawn:
Creator: player
Views: 1258
Completed: 59
XP: 0
Points: 0
World: world
'0':
X: -6293.703158744823
Y: 126.0
Z: 2115.380310594939
Yaw: 109.047844
Pitch: 6.449876
Finished: true
parkour1:
Creator: player
Views: 3
Completed: 0
XP: 0
Points: 0
World: world
'0':
X: -11428.5
Y: 151.5
Z: 10900.5
Yaw: -90.68261
Pitch: 1.0499918
LinkedLobby: parkour
parkour2:
Creator: player
Views: 0
Completed: 0
XP: 0
Points: 0
World: world
'0':
X: -11428.5
Y: 151.5
Z: 10941.5
Yaw: -90.83276
Pitch: -0.29999185
LinkedLobby: parkour
i.e.
Reward: You earned &b%AMOUNT% &ffor completing &b%COURSE%&f!
The actual in-game output has two spaces after the amount displayed. So instead of just replacing %amount% with a number, it is adding an extra space after the number in addition to it - resulting in two spaces in that language example.
Would it be possible to allow defining an autojoin block location? So if a player walks over a certain block or pressure plate (example) in a specific coordinate location, it automatically puts them in a specific course? That way they don't have to right click a parkour sign or type the join command to start a course.
It seems players are able to join parkour and use some parkour commands without inheriting any user permissions for it beforehand. There are no permissions in the plugin.yml with default: true inheritence, so I am not entirely sure why players are able to type parkour commands right out the gate without permission to do so.
Would it be possible to support data values in material names for block sets? So you can use specific type of dirt or a specific color of wool.
I.e.
Finish:
Material: WOOL:15
Compiled as of 7dea8ea
EnforceParkourCommands:
Enabled: true
Players inside parkour mode can't use /parkour or /pkr commands to leave. Is it only registering /pa as parkour commands? I removed the /pa alias since I have another plugin that uses /pa for PVP arenas.
When enabled it'll count your deaths for sure but when you come out of the parkour by any way it'll be glitched and stand still as your default EXP level.
I originally had this set for my parkour course.
Price:
Kit: 0
spawn:
Finish: 10
I manually changed the value to $25.
Price:
Kit: 0
spawn:
Finish: 25
Then reloaded the parkour plugin with /parkour reload
. Completing the course again, it outputted in chat that I was rewarded $10.
Compiled as of d3cbb66
If you have a sapling as a parkour tool item and try to place the sapling while in parkour mode, it tries to place the sapling (removing it from your inventory) and makes you leave parkour mode (as right clicking should when shift interact is disabled) but as a result, whatever was in that slot of your inventory prior to joining also gets removed.
Thank you ;D
Edit: oh well, I just browse thru the source. My bad :(
If you shift + right click the parkour tools while looking at a block, it occurs twice.
Just like in the title when I restart my server the plugin will be gone and the file and the jar is still in the plugins folder idk how or why did it happen. im only a beginner plss help me Dev. I really like your Plugin
Compiled as of d3cbb66
People can enter parkour mode and then just walk to their house or somewhere in the world that isn't protected if the parkour course is open, such as if in an open course around spawn. Then they could have setup a chest with items in it and use a workbench to craft items with the parkour tools. In my case, using glass and obsidian from a chest and crafting a beacon with my nether star parkour mode item.
Would it be possible to set a range limit for how far someone is able to walk away from that parkour course's lounge before being teleported back? Or alternatively defining a parkour cuboid region for the course that they aren't allowed to leave.
Would it be possible to block all interaction with the parkour items to avoid dropping / crafting? They would not need to be able to interact with chests, enderchests, or really any kind of inventory GUI such as a furnace, workbench, etc.
Hello,
We are currently running Parkour v4.1 using MySQL as our database option and we seem to be receiving an error when executing /pa stats map
.
The error happens regardless of what map we try to check the stats for. Here is the stack trace for the error: https://pastebin.com/raw/EgQBmAii
Looking at the source, it seems to be related to the join fee of a course, is that right?
Thank you!
The one thing im missing in this plugin is the ability to make a checkpoint out of for example a worldedit selection.
So for example instead of a pressure plate. I would select 1 bottom corner and 1 top corner of a area, and i could make a checkpoint if a player enters that area. Instead of when they step on a pressure plate.
This would be very usefull when you are making a map where for example players walk through a cave and you want them to get a checkpoint when enterering a part of the cave.
Because a cave is a bigger area and with different block height. The changes of a player missing a pressure plate here are quite high.
I would like to request if you could consider adding this feature to your plugin.
Array index out of bounds exception running "/pa econ setprize pk4"
https://pastebin.com/QwKs4iTJ
Trying to set a non-integer prize on a valid course, e.g. "/pa econ setprize pk4 0.5" returns "pk4 does not exist".
The join fee set for a course is not being checked or deducted from player's balance on joining.
"/pa stats courseName" should display the course join fee if its been set.
Missing Bounce, NoRun, and NoPotion options when setting a custom block list in-game.
[21:32:49] [Client thread/INFO]: [CHAT] What would you like to name your ParkourBlocks?
[21:32:51] [Client thread/INFO]: [CHAT] parkour
[21:32:51] [Client thread/INFO]: [CHAT] What material do you want for the Death block?
[21:32:51] [Client thread/INFO]: [CHAT] Default: SMOOTH_BRICK
[21:32:53] [Client thread/INFO]: [CHAT] default
[21:32:53] [Client thread/INFO]: [CHAT] What material do you want for the Finish block?
[21:32:53] [Client thread/INFO]: [CHAT] Default: HUGE_MUSHROOM_2
[21:32:54] [Client thread/INFO]: [CHAT] default
[21:32:54] [Client thread/INFO]: [CHAT] What material do you want for the Climb block?
[21:32:54] [Client thread/INFO]: [CHAT] Default: BRICK
[21:32:55] [Client thread/INFO]: [CHAT] default
[21:32:55] [Client thread/INFO]: [CHAT] What material do you want for the Launch block?
[21:32:55] [Client thread/INFO]: [CHAT] Default: EMERALD_BLOCK
[21:33:00] [Client thread/INFO]: [CHAT] PISTON_BASE
[21:33:00] [Client thread/INFO]: [CHAT] What material do you want for the Speed block?
[21:33:00] [Client thread/INFO]: [CHAT] Default: OBSIDIAN
[21:33:02] [Client thread/INFO]: [CHAT] default
[21:33:02] [Client thread/INFO]: [CHAT] What material do you want for the Repulse block?
[21:33:02] [Client thread/INFO]: [CHAT] Default: ENDER_STONE
[21:33:08] [Client thread/INFO]: [CHAT] default
[21:33:08] [Client thread/INFO]: [CHAT] parkour was successfully created!
Non OP players can not use the signs to teleport.
Would it be possible to define a fall height to teleport players back to the starting point of the course? i.e. if a player falls more than 3 blocks in height in a specific course, teleport them back to the start. That way I don't have to outline the course in death blocks at the bottom or have it above void.
There are a couple of small issues with the sync'ing of the live time display:
when joining a course the timer display starts immediatley from 00:00:01 and displays 00:00:02 before the player has had a chance to move;
when finishing the course the timer always displays 1 second more than the actual finish time - see pic
One way to fix both issues is by delaying the timer start by 20 ticks (1 sec).
Maybe you could consider using other ways to send title to player? For example using /title command or ConnorlinFoot's TitleAPI (1.7-1.11 according to my testing)
TitleAPI can be used via static methods, which fits perfectly here imo
Below issues resolved in PR:
Spigot 1.7.10 b1657
Last dev build of Parkour [10-12-2016]
[Server thread/ERROR]: Could not pass event EntityDamageByEntityEvent to Parkour v4.0
org.bukkit.event.EventException
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:302) ~[spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:509) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:494) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callEvent(CraftEventFactory.java:108) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.callEntityDamageEvent(CraftEventFactory.java:554) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.handleEntityDamageEvent(CraftEventFactory.java:467) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at org.bukkit.craftbukkit.v1_7_R4.event.CraftEventFactory.handleLivingEntityDamageEvent(CraftEventFactory.java:586) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.EntityLiving.d(EntityLiving.java:1040) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.EntityHuman.d(EntityHuman.java:824) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.EntityLiving.damageEntity(EntityLiving.java:684) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.EntityHuman.damageEntity(EntityHuman.java:765) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.EntityPlayer.damageEntity(EntityPlayer.java:465) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.EntitySnowball.a(SourceFile:30) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.EntityProjectile.h(EntityProjectile.java:155) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.World.entityJoinedWorld(World.java:1620) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.World.playerJoinedWorld(World.java:1595) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.World.tickEntities(World.java:1460) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.WorldServer.tickEntities(WorldServer.java:516) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.MinecraftServer.v(MinecraftServer.java:706) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.DedicatedServer.v(DedicatedServer.java:289) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.MinecraftServer.u(MinecraftServer.java:584) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.MinecraftServer.run(MinecraftServer.java:490) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
at net.minecraft.server.v1_7_R4.ThreadServerApplication.run(SourceFile:628) [spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
Caused by: java.lang.NoSuchMethodError: org.bukkit.entity.Entity.getName()Ljava/lang/String;
at me.A5H73Y.Parkour.ParkourListener.onEntityDamageEntity(ParkourListener.java:159) ~[?:?]
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_101]
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_101]
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_101]
at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_101]
at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:298) ~[spigot.jar:git-Spigot-1.7.9-R0.2-208-ge0f2e95]
... 23 more
The config.yml maintains a list of whitelisted commands which can be used in-game if "EnforceParkourCommands" is enabled.
Any commands included in whitelist are ignored due to the code referencing node "Other.Commands.Whitelist" instead of "OnCourse.EnforceParkourCommands.Whitelist" in the config.yml.
The permitted range is to display 1 to 20 entries, but 20 is invalid. This is fixed in pull request.
That way you could have an open parkour course at spawn but prevent wandering around, enforcing players to follow a specific path.
Hi,
Regarding version 4.0 [23/090/2016] on MC1.10.
I have some iron doors operated by pressure plates (which are not checkpoints) in the course which no longer work. The checkpoint pressure plates work as expected.
Also is there a way to put more than one death block in the config.yml?
Thanks.
Tried version v4.0 the first time with 2 existing courses already configued and working from v3.7. The server starts ok the first time, although I get "you are in the wrong world" if I try to join a course. If you then stop/start the server, you get this error (like its trying to insert the same course details into the DB again):
[22:57:29 INFO]: [Parkour] Enabling Parkour v4.0
[22:57:29 WARN]: java.sql.SQLException: [SQLITE_CONSTRAINT] Abort due to constraint violation (column name is not unique)
[22:57:29 WARN]: at org.sqlite.DB.newSQLException(DB.java:383)
[22:57:29 WARN]: at org.sqlite.DB.newSQLException(DB.java:387)
[22:57:29 WARN]: at org.sqlite.DB.execute(DB.java:342)
[22:57:29 WARN]: at org.sqlite.DB.executeUpdate(DB.java:363)
[22:57:29 WARN]: at org.sqlite.PrepStmt.executeUpdate(PrepStmt.java:85)
[22:57:29 WARN]: at me.A5H73Y.Parkour.Utilities.DatabaseMethods.insertCourse(DatabaseMethods.java:129)
Full error is here:
http://pastebin.com/46uthxnF
Compiled as of 7dea8ea
Apparently flymode does not turn off when entering parkour mode while you are flying in the air prior to joining. It only disables fly if you are on the floor and had it turned on.
If you whitelist the command /m
, you can use the command /mobarena join
. This is causing people to join parkour for invulnerability, then play in the arena. Shouldn't commands whitelisted be case sensitive to that command only rather than any command that starts with that letter?
Is it not writing the inventory to the inventory.yml?
Would it be possible to implement a way to blacklist commands not allowed while in parkour mode? For example, I'd like to block the command /pa
while players are in parkour because the arena plugin I use (PVPArena) uses that command alias to join arenas.
Despite pa
being removed from the plugin.yml as a registered parkour command alias, because it is allowed in the source as a parkour command here d3cbb66#diff-eb8d94763a93fd55979b0adb3e6bc5eaR394, players are able to join the arenas from within parkour with invincibility.
Hi, it would be much appreciated to see multiple death materials and water being added to the plugin, as many parkour maps people create go through vastly different terrains, and locking the death block to 1 material is somewhat of a map breaker.
Hi Ash,
as per title, the ParkourMode class doesn't appear to be included in the latest src.
Thanks,
Steve
I disable the /pa alias in the plugin.yml since I have another plugin (PVPArena) that uses the /pa command. Would it be possible to allow for changing the language in the parkour help menus? For example, /pkr cmds
and /pkr cmds 1
output everything as /pa
instead of /parkour
or /pkr
. The strings.yml does not have language strings for the help menus.
Hi Ash,
I've found an issue with inventory items being lost when quitting a course.
When a player dies (exceeding max deaths) or quits a course, he gets teleported to the lobby.
If the course is in a different world than the lobby, when the player returns to the world containing the parkour course (but not playing parkour, just /mvtp for example) then the original inventory for that world is lost (being replaced by the 3 parkour objects (arrow,bone,sapling) - as they were the final inventory items he had before being teleported out of parkour.
This happens because the "playerLeave" class calls "loadInventory(player)" after "CourseMethods.joinLobby". You need to load the inventory before returning to the lobby - that way, whatever inventory management plugin is installed (PerWorldInventory for example), will have the correct items.
When a course is successfully completed, loadInventory(player) is called before CourseMethods.joinLobby which works correctly.
I've tested the latest code with the order reversed and it works fine.
Cheers,
Steve
Compiled as of d3cbb66
Players who toggle player visibility are able to see those who were invisible prior to joining, such as staff members who went invisible to watch over another player.
In my case, I use VanishNoPacket (https://dev.bukkit.org/projects/vanish) in conjunction with ProtocolLib to force certain players vanished and for staff members to hide from others. It to my knowledge hides players by removing the player packet directly so hack clients can't see sent nearby player packets. When someone toggles hidden players within parkour, it allows vanished players to be shown to that player. Thus;
Would it be possible to respect current invisible / vanished players not handled by Parkour to not refresh / display them when someone toggles all players visible when they shouldn't have access to seeing those players?
Would it be possible for Parkour to only toggle players invisible / visible who are actually part of parkour mode / of that parkour course instead of everyone globally?
Compiled as of d3cbb66
Related #28
When you double-jump after joining parkour mode while flying in air prior, you get an initial boost from the flying until it then disables the flight state. Would it be possible to force disable flight when joining parkour mode rather than wait until it detects a player is trying to fly? So they don't get an initial double-jump super-jump.
If vault is enabled, would it be possible to have an economy payout as a prize type? Currently limited to material, command, and xp.
Would it be possible to set a limit for how many times someone is able to complete a course that day and receive rewards for it? So you can have an in-game economy payout but limit it to once a day to prevent abuse.
When you have "onDie:ResetTimeWithNoCheckpoint: true" set in config.yml, your time is reset to zero if you die before the first checkpoint. However the live time display doesn't reset to zero, but just carries on counting.
Would it be possible to allow for the parkour tools to just be right click activated instead of requiring shift + right click? Few complaints from some players that it is annoying having to hold shift.
Done a bit of testing on this....the 'delay' itself works fine, the problem is that during the 'delay' the player can/will move across the finish block(s), so the 'onPlayerMove' listener is triggering multiple playerFinish events. This causes multiple 'player finshed course' messages to appear and the prize (e.g.1 diamond) is given to the player multiple times.
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.