Prism-v2.0
Details
-
Filenameprism-2.0.jar
-
Uploaded by
-
UploadedMay 21, 2014
-
Size570.23 KB
-
Downloads1,221
-
MD54d1f3f0727f2db9488cee3027f1e99b8
Supported Bukkit Versions
- CB 1.7.9-R0.1
Changelog
Which file do I need?
Are you running bukkit/spigot/etc for latest vanilla minecraft?
Look for the Prism-(version).jar file here on BukkitDev.
Are you using MCPC+ for FTB?
Please check our IRC topic (or ask us) for the latest builds (or find them directly on our dev build website)
Prism-v2.0
*For those waiting until it was out of beta, please be sure you run the upgrade script
- Added permission nodes for each parameter (used in lookups/rollbacks/etc)
prism.parameters.*
includes them all. - Added mysql table prefix support. Use
prism.mysql.prefix
in the configuration. -
Added new namespaced-variants of commands to the illegal command list: e.g.
/bukkit:op
. You need to manually add this to your config if you use this feature -
Changed factory method names for creating new action instances.
-
Fixed NPE caused by recent change block event changes.
- Fixed enderman place/remove tracking.
- Fixed player name exclusion not working properly (broken in recent betas)
- Fixed NPE on tab completion of certain parameters
- Fixed two items missing from the items alias list (in elixr)
- Fixed color code stripping missing dual ampersands (in elixr)
Prism-v2.0-Beta8
IMPORTANT: This update adds support for UUIDs and requires Bukkit/Spigot for 1.7.6+. Prism2 doesn't yet have an auto-updater for our database (it's coming, we have bigger db work to announce soon) so you need to run the following query before installing:
ALTER TABLE prism_players ADD player_uuid BINARY( 16 ) NOT NULL;
Changes:
New: Converting internal player tracking for the new UUID format for 1.7.6+ (see below)
New: Pass ore, command, use alerts to other plugins via commands. Add the commands to `prism.alerts.ores.log-commands`
New: Early work adding tab completion of commands
Fixed: Extra data table join was missing for purges
Fixed: Mods using villagers with empty professions were throwing NPE errors
Fixed: Ore alerts skip is player/gamemode is null (for fakeplayers)
Fixed: Standardized/fixed logic for determining if recorder is running
Fixed: Missing code that launches internal affairs
Fixed: Exclusion logic (ie a:!playername) moved so we can't have both exclusions/inclusions
Code/repo cleanup and formatting fixes
About UUIDs
Mojang is now tracking all players by a unique ID - so Mojang can eventually allow you to change your actual in-game name.
Prism 2 (Beta 8) is the first logging plugin with UUID support.
Here's how it works:
When players join we'll automatically insert their UUID into the database as well as their current username.
If we know their pre-UUID username already, we'll update our records with their UUID.
If a user with a known UUID joins with a different username, we'll change their username in the database.
Fake players like "environment" (and those for FTB servers) will get a fake UUID.
Lookups and in-game display will NOT change.
This way, you'll interact with their "last known username" when using prism.
Prism-v2.0-Beta7
This is the final "beta" for v2. Next release will be a release candidate
PSTE.me Support
You can now export a page of lookup results to the PSTE.me paste bin/snippet site. If you don't already have a free account, signup and then click your account to generate your API key.
Add your pste.me username and API key to the Prism config under prism.paste
, and mark prism.paste.enabled
to true
to enable support.
Use the -paste
flag to export the results. Example: /pr l p:viveleroi r:5 -paste
. Your results will be posted as a public paste expiring in thirty days and the URL will be presented to you in-game.
Please contact us in IRC (irc.esper.net #prism) if you have any difficulty.
Additions
- New system named "InternalAffairs" - responsible for checking on the state of the queue and data recorders. Currently, it will check the health of the recorder and if it's stopped due to database errors, and the database connection is now available, it will restart the recorder.
- Block/Action summary reports now accept parameters! For example you can contain the report to a location:
/pr rp sum blocks p:viveleroi r:30
- Added recorder schedule status to
/pr rp db
- Added:
/pr recorder cancel
Stops recorder from writing queue data to the database. Use with caution. - Added:
/pr recorder start
Verifies we have a valid database connection and starts recorder again. - Added: New permission node
prism.recorder
for the above commands. Defaults to OP. - Added:
/pr purge queue
to clear the live queue of data. Use with caution. - Added: config
prism.alerts.alert-player-about-self
which is enabled by default. Will allow staff to see alerts they generate. - Added: config
prism.database.force-write-queue-on-shutdown
to disable force writing the queue on server stop.
Fixes
- Fixed: Natural mob deaths were missing an ignore check for
entity-kill
- Fixed: Checking entity
instanceof
instead of type, to avoid issues with plugins that set the wrong type for custom entities - Fixed: Recorder task will not try to reschedule itself if server is already shutting down
- Fixed: Recently added report and new commands now properly listed in
/pr ?
- Fixed: Min and max vector would be overridden if the player location wasn't set in the query
- Fixed: Reloading the config would not clear previous alerted ores.
- Fixed: Re-caching certain settings after config reloaded
- Fixed: Updated
elixr
to latest bukkit, fixing incorrect sign_post/whitestainedglasspane alias ids - Fixed: We ignore grow actions that have no valid
TreeSpecies
(some mcpc mods cause spammy errors) - Fixed: Player cache insert queries were not printing sql errors to console
- Fixed: Player cache lookup query had an sql error when no players were on
Internal Stuff
- Additional parameter handler code cleanup
- Various code cleanup across plugin
- We now build against the official tomcat jdbc pool library maven repo, not SpringSource's copy. Upgraded to 7.0.52.
- Removing log message when queue is empty. This should never happen anymore anyway with recorders not overlapping
- Modified how we force write queue actions on shutdown due to recent insert scheduler changes
Prism-v2.0-Beta6
Important: We spent a lot of time profiling the remaining Prism 1.0 database indexes and have come up with a new set that performs extremely well for prism 2. You do not have to apply these changes but they're recommended for database performance.
All new Prism 2 database installs will use them automatically. Otherwise you may find the changes here: http://pste.me/prism-2.0-beta-6-sql-index-migration
Additional Database Improvements
- Changed SQL for world name join/matching so that mysql can optimize it properly. This gives us a major performance improvement especially for massive tables.
- Eliminating unnecessary table joins: Lookup queries no longer join world and action tables. We read the names from the cache prism already uses.
- Better db connection handling by the insert recorder... removed outdated code so we pull a new connection each cycle.
- Adding null/closed connection checks to a few more delete/prism process queries
- Checking if resultset closed before logging ID of record throwing an error.
New Commands
- Added
pr report db
for current (basic) database status information - Added
pr (delete|purge) cancel
to cancel running purge tasks
Bug Fixes
- Fixed: Multiple flags would override each other, using only the last (broke in Beta 4 dev)
- Fixed: Entity conditions were not being used properly (broke in Beta 4 dev)
- Fixed: Radius parameter properly supports negative coordinates (broke in Beta 4 dev)
- Fixed: Purge system chunking no longer exists early if first cycle had no deletions. Note:
purge.records-per-batch
now refers to how many rows we check for records that match purge conditions. You'll likely wish to increase this value. Please read here for more information: http://discover-prism.com/wiki/view/purging/ - Fixed: Purge system scheduler was incorrectly creating simultaneous threads for differen purge rules (was another likely cause of db lock errors)
- Fixed: Join/Quit events no longer show an extra space in the lookup messages
Other
- Added: Certain servers have unique plugins/projects that fire BlockPhysicsEvents at extreme rates. Even if
block-fall
is turned off, Prism still listens to the event to detect blocks detaching from others (i.e. torches). If you wish to override this and tell Prism to never listen to the event for TPS reasons, you may setprism.bukkit.listeners.blockphysicsevent
to false. - Prism will only register a listener for the InventoryMoveItem event if
track-hopper-item-events
is true anditem-insert
tracking is enabled.
Prism-v2.0-Beta5
Requires bukkit build #2999 or later
-
IMPORTANT: Adding configuration node
prism.ignore.enable-perm-nodes
which is false by default. The permission nodes that allow you to ignore players will NOT be used unless this is set to true. Too many people are usingprism.*
and accidentally granting themselves ignore perms. -
Fixed: Book content was not being tracked for unsigned books
- Fixed: Logic for detecting chests will now include trapped chests
- Fixed: Critical bug that could purge the entire database if
r:world w:worldnName
was used inpr delete
command from console - Fixed: World edit regions used as radius will not continue if it exceeds max allowed radius
-
Fixed: World edit region will check if user has radius override permissions
-
Updates for bukkit API change determining potion shooter
-
Internal rewrite of how we register/handle our default parameters
- Register custom parameters via API: http://discover-prism.com/wiki/view/api/#custom-parameters
- Lookup/recorder queries will check for closed database connections inside query-building loops
- Force write of remaining queue items on shutdown, unless there's a known db connection failure
Purge system overhaul
- Queries are now "chunked" using primary keys instead of a LIMIT clause. Up to 30% performance improvments and helps address locking errors for some users.
- Added
/pr purge
which is an alias for/pr delete
- Queries run every 12 hours after server start
- Query no longer uses joins for action name matching, but rather the existing ID cache since it's always loaded.
Prism-v2.0-Beta4
Celebrating one year of Prism! The first commit was made December 31, 2012.
- ItemStack lore text is now tracked and will rollback/restore properly.
- Allowing use of action family names in parameters - i.e. 'a:block' will match all block-* actions
- Added
item-rotate
to track players turning items inside item frames (was waiting for BUKKIT-3402) - Added tracking for players placing/removing items directly into item frames (was waiting for BUKKIT-3402)
- Using a wand on an item frame with an item inside will no longer remove the item
- Using a wand on a hanging entity (item frame, painting) will no longer break the hanging item.
- Fixed
item-remove
s from broken item frames recording the wrong location - Fixed container-open/close missing from ignore perm list.
- Fixing how we set the top half of double-tall plants
- Catching/skipping invalid data coming from the DB
- New db setup code adding cascade delete to extra data table
Prism-2.0Beta3
- Rollbacks/restores properly handle 1.7 double-tall flowers (works for existing data)
- Updated elixr - Prism now has aliases for all 1.7 (and some missing 1.6) items
- Action recorder now reschedules itself. Prevents insert queries from overlapping. Reduces db connection spamming.
- Fixed how we handle checking and waiting for dead db connections. Several changes should make this much less annoying, more useful
- The above fixes plus some code improvements avoid extra data table inserts rarely having the wrong foreign key - causing JSON errors on lookup/rollback
- Code improvements resolve preview index error, that stalled and crashed some previews
- Fixed worlds loaded after server reboot being re-registered in the db
- Adding some basic validation that an inventory slot exists before we use it
Prism 2 for MCPC+ Legacy
This edition of Prism 2 beta comes with custom support for MCPC+ Legacy. Running a recent FTB modpack? This is for you
Prism 2
On the surface, Prism 2 is just as feature-rich and easy to use as Prism 1.
Under the hood, Prism 2 offers a massive database rewrite that addresses all of the problems Prism 1 has endured.
Please note: This is a beta release. Prism itself is very stable and has been trusted by thousands of servers in our first ten months. However, this database overhaul needs to be well tested by the community before we consider that portion production-ready.
Database Overhaul
We've revamped the underlying database, which is why we bumped the version number so much. If you want
to convert all Prism 1 data, please use the script linked in the following section.
This work has the following benefits:
- Dramatically faster query performance (up tp 77% faster based on 18 million record test db)
- 25%+ reduction in database file size (based on 18 million record test db)
- Prism doesn't rely on MySQL server for timestamps. Never deal with time differences again
- Proper tracking for enchantment plugins that overload items
- We can finally track and rollback book content (by the way, we now track and rollback book content)
- Longer player names (from modded servers) won't cause database errors
Migration Script
During beta we recommend you wait before migration a production server unless you're comfortable wiping prism data if 2.0 final has any database changes
If you're ready to convert from Prism 1 to Prism 2, please follow these steps:
- Copy migration script (or run each query by itself): pste.me/#/prism-2.0-db-migration-script
- Shut down your minecraft server. Prism should not be writing/reading from the database.
- We highly recommend you backup your current database
- Execute the SQL in MySQL (directly is best, control panels like phpMyAdmin may time out for longer queries)
- Install Prism 2 jar.
- Start the server
or, you can keep it simple and wipe your existing data and start over - if that's your cup of tea.
Web UI 2
We also fixed up the web UI to work with prism 2. Not only that but we rewrote parts of it so that it's easier to manage, faster, and we fixed a few bugs.
http://botsko.s3.amazonaws.com/Prism/Prism-WebUI-v2.0.zip
Only minor config changes, you may keep your existing config.php
You can find all future builds of the Web UI here:
http://discover-prism.com/dev/builds/
Modded Server (FTB,etc) Container/Inventory/TileEntity Support via MCPC+
We've been working with the MCPC+ team to bring a new level of tracking to modded servers. Thanks to bloodmc
, MCPC+ and MCPC+-Legacy have been updated to allow Prism to track and rollback the contents of modded container blocks.
Be sure to grab the latest builds of MCPC+ or MCPC+-Legacy for your FTB (or other) server.
NOTE: Please look for custom Prism JAR files with "MCPC" in the filename. If you're on FTB Unleashed, which is currently Minecraft 1.5-based, please use the Prism MCPC MC1.5-Compat jars.
In-Game Reports
Now that we sport a brand new database schema, we can finally implement some helpful reports (a frequent request from former LogBlock users).
There's already a report subcommand which we intended to expand for this purpose. The first two new reports are:
/pr rp sum blocks (player)
- Gives a count of placed/broken blocks (sorted by total, descending) for a specific player./pr rp sum actions (player)
- See the actions this player has caused the most of. If you seelighter
in the list, it's worth looking into!
We'll expand with new reports and improve functionality over time. If you're using a resource pack with a non-monospace font, the columns won't look amazing. Oh well.
Other Changes
- Renaming
container-access
tocontainer-open
- Adding new event
container-close
that tracks when the player closes the container. - Adding new event
block-dispense
for when a dispenser/droppers drop or place items. Cannot currently be rolled back. - Previews now show all block changes, rather than only the first 1000.
- Fixed internal debug timing class to properly flush timings after each query, was leading to highly inaccurate timings and timer events piling up.
sqlite Support & Future DBs
We didn't want to delay 2.0, so once 2.0 is stable and out there we're going to continue work with replacing our query generation with a real database abstraction layer. We've spent time trying/reviewing jOOQ and a few others but we're not decided yet. jOOQ would be perfect and solves a few problems we have, but adds 1.2MB of weight to Prism even when stripped-down. Despite that not being a big deal, I don't want Prism to seem bloated.
Once this query work is done, we'll be able to support sqlite, Postgres, and a few others. However, sqlite support has officially been removed until this work is complete. sqlite itself is not at all a high-performance database that we need. I'm happy to have inspired others to move to it.
My time is limited so I'd rather spend it supporting the 92% of you using MySQL, 100% of the time.
Anyway, look for dev work on the DBA coming soon. Hopefully for 2.1. Input and PR work always accepted.
Maven Repo
We've finally moved Prism to our nexus server so that you include it in your projects. We're no longer serving development builds from our S3 servers, so be sure to look in the nexus repo for them.
<repository>
<id>dhmc-repo</id>
<url>http://dhmc.us:8081/nexus/content/repositories/public/</url>
</repository>
<dependency>
<groupId>me.botsko</groupId>
<artifactId>prism</artifactId>
<version>2.0-Beta2</version>
</dependency>
Prism API
FYI, the API is A-OK.
No changes from v1 to v2.
Oracle
Many have asked about detailed playtime tracking. I want to remind everyone that another plugin of ours, Oracle offers extremely detailed playtime tracking, plus cross-server bans, warnings, guide books, and much more. Despite being a beta, it's stable. We've used it without issue for months (and its predecessor for a year before that).
Feedback
Docs and help at http://discover-prism.com
As always, hit us up on IRC or our bugtracker.
Feel free to use http://pste.me to paste-bin prism errors to us. Shameless self-promotion.
+++++++++++++++++
Older changelogs available at: http://discover-prism.com/blog/