Prism (Refracted) is a change-tracking plugin for Bukkit-based servers

Overview

Prism (Refracted) is a change-tracking plugin for Bukkit-based servers. Supports rollbacks, restores, previews, wands, and so much more. Tracking so good, the NSA stole our name.

TL;DR

I, viveleroi, created Prism ten years ago and was amazed by the community response. With the bukkit/mojang project drama in 2014 and my waning interest in Minecraft, I moved to the Sponge project but eventually stopped all development.

In 2016 I turned the project over to another team but long story short, as I saw the game and community mature, and heard from so many long-time Prism users, I've decided to return to Prism.

"Prism Refracted" is my official continuation of Prism. There's a lot of work I want to do

Support

Please be patient as I work to get this project where I want, establish documentation, build servers, etc.

  • Discord - Please visit discord for help before opening issues.

Rough Roadmap

A lot of this code is nearing a decade old. Some things really can be better:

  • Convert command handling to ACF
  • Replace all database crud with a Storage approach like we did in Prism for Sponge. Allow mongoDB.
  • Fix non-standard SQL issues, re-evaluate efficiency stuff.
  • Improve how hikari configs are used.
  • Properly checkstyle and fix formatting to my tastes
  • Bring back Prism WebUI
  • Consider moving ore alerts, etc to a separate plugin

License

Prism is licensed the under the Creative Commons Attribution-NonCommercial-ShareAlike 3.0 Unported. Please see LICENSE or this website for the full license.

Credits

  • Originally made, and made again, for the play.darkhelmet.network server.
  • Recent stewardship by the addstarmc[addstarmc] team.
  • Artwork by LegendarySoldier.
Comments
  • Investigate reports of Prism missing world loads when using MultiVerse

    Investigate reports of Prism missing world loads when using MultiVerse

    As described here: https://github.com/AddstarMC/Prism-Bukkit/pull/297

    Prism uses the WorldLoadEvent to register worlds and as a multiverse user myself I've never had any issues but if there's any further details, this is where we'll track it.

    opened by viveleroi 4
  • [BUG] Material cannot be null during inspection wand use

    [BUG] Material cannot be null during inspection wand use

    [16:16:17] [Server thread/INFO]: SizzlingBacon5 issued server command: /pr i
    [16:16:29] [Craft Scheduler Thread - 2006 - Prism/WARN]: [Prism] Plugin Prism v3.4.0 generated an exception while executing task 5527828
    java.lang.IllegalArgumentException: Material cannot be null
    	at com.google.common.base.Preconditions.checkArgument(Preconditions.java:145) ~[guava-31.0.1-jre.jar:?]
    	at org.bukkit.inventory.ItemStack.<init>(ItemStack.java:97) ~[purpur-api-1.19-R0.1-SNAPSHOT.jar:?]
    	at org.bukkit.inventory.ItemStack.<init>(ItemStack.java:85) ~[purpur-api-1.19-R0.1-SNAPSHOT.jar:?]
    	at org.bukkit.inventory.ItemStack.<init>(ItemStack.java:72) ~[purpur-api-1.19-R0.1-SNAPSHOT.jar:?]
    	at network.darkhelmet.prism.actions.data.ItemStackActionData.toItem(ItemStackActionData.java:204) ~[Prism-3.4.0-all.jar:?]
    	at network.darkhelmet.prism.actions.ItemStackAction.deserialize(ItemStackAction.java:111) ~[Prism-3.4.0-all.jar:?]
    	at network.darkhelmet.prism.database.sql.SqlSelectQueryBuilder.executeSelect(SqlSelectQueryBuilder.java:626) ~[Prism-3.4.0-all.jar:?]
    	at network.darkhelmet.prism.actionlibs.ActionsQuery.lookup(ActionsQuery.java:66) ~[Prism-3.4.0-all.jar:?]
    	at network.darkhelmet.prism.wands.QueryWandBase.getResult(QueryWandBase.java:75) ~[Prism-3.4.0-all.jar:?]
    	at network.darkhelmet.prism.wands.InspectorWand.lambda$showLocationHistory$0(InspectorWand.java:89) ~[Prism-3.4.0-all.jar:?]
    	at org.bukkit.craftbukkit.v1_19_R1.scheduler.CraftTask.run(CraftTask.java:101) ~[purpur-1.19.jar:git-Purpur-1685]
    	at org.bukkit.craftbukkit.v1_19_R1.scheduler.CraftAsyncTask.run(CraftAsyncTask.java:57) ~[purpur-1.19.jar:git-Purpur-1685]
    	at com.destroystokyo.paper.ServerSchedulerReportingWrapper.run(ServerSchedulerReportingWrapper.java:22) ~[purpur-1.19.jar:?]
    	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136) ~[?:?]
    	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635) ~[?:?]
    	at java.lang.Thread.run(Thread.java:833) ~[?:?]
    
    v3 
    opened by viveleroi 2
  • Fix cache spam in debug

    Fix cache spam in debug

    Here, the PrismPlayer is actually always loaded from cache, I'm not sure why we put it here. It just creates a lots spam, blocking us to check other useful debug messages.

    opened by Rothes 1
  • [BUG] Lingering potions does not log properly

    [BUG] Lingering potions does not log properly

    Describe the bug Lingering potions when thrown and if the mob gets killed, it only logs who killed it but the name shown is "area effect cloud" which infact is normal but doesn't tell who thrown it to cause the entity to be killed. So it means we can't know who did that.

    To Reproduce Steps to reproduce the behavior:

    • Have Prism installed on the server and spawn a random mob enclosed in a room.
    • Give you a lingering potion (Instant Damage) then throw at the floor where the mob is.
    • Wait until it dies
    • Inspect it with /pr i or /pr lookup, you'll notice it will only say "area effect cloud killed (entity)" but nothing else will tell who thrown it for this cause.

    Expected behavior A clear and concise description of what you expected to happen.

    Prism should tell us who thrown it and who killed it (infact its area effect cloud), logging both actions just in case.

    Screenshots

    • If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem** via IMG

    I used an alt to attempt killing the said entity (Pig), even checking at my alt's position nothing tells me who thrown it. Server (please complete the following information):

    • Prism Version: 3.3.0
    • Server Type: [Paper]
    • Server Version: 1.18.2

    Additional context Add any other context about the problem here.

    opened by TNTUP 0
  • Item rollback improvements

    Item rollback improvements

    Better ways to remove the Item Entity when rollback, and many fixes and improvements

    Tested on 18 servers(statistics from bStats). Works fine.

    IMPORTANT: These actions still duplicately rollback or restore. Merge this PR https://github.com/prism/PrismRefracted/pull/27 then we can fix it.

    opened by Rothes 0
  • [BUG] java.lang.StackOverflowError: null in utils.block.Utilities.findConnectedBlocksOfType

    [BUG] java.lang.StackOverflowError: null in utils.block.Utilities.findConnectedBlocksOfType

    [12:50:44] [Server thread/ERROR]: Could not pass event BlockBreakEvent to Prism v3.0.3
    java.lang.StackOverflowError: null
    	at net.minecraft.world.level.Level.getChunk(Level.java:636) ~[?:?]
    	at net.minecraft.world.level.Level.getBlockState(Level.java:975) ~[?:?]
    	at org.bukkit.craftbukkit.v1_18_R2.block.CraftBlock.getType(CraftBlock.java:227) ~[purpur-1.18.2.jar:git-Purpur-1628]
    	at network.darkhelmet.prism.utils.block.Utilities.findConnectedBlocksOfType(Utilities.java:605) ~[Prism-3.0.3-all.jar:?]
    	at network.darkhelmet.prism.utils.block.Utilities.findConnectedBlocksOfType(Utilities.java:607) ~[Prism-3.0.3-all.jar:?]
    	at network.darkhelmet.prism.utils.block.Utilities.findConnectedBlocksOfType(Utilities.java:607) ~[Prism-3.0.3-all.jar:?]
    	at network.darkhelmet.prism.utils.block.Utilities.findConnectedBlocksOfType(Utilities.java:607) ~[Prism-3.0.3-all.jar:?]
    	at network.darkhelmet.prism.utils.block.Utilities.findConnectedBlocksOfType(Utilities.java:607) ~[Prism-3.0.3-all.jar:?]
    	at network.darkhelmet.prism.utils.block.Utilities.findConnectedBlocksOfType(Utilities.java:607) ~[Prism-3.0.3-all.jar:?]
    
    bug v3 
    opened by viveleroi 3
Releases(v4_dev1)
  • v4_dev1(Apr 25, 2022)

    This is the first development preview build of Prism v4. Obviously, do not use this in production.

    This preview includes:

    • new MySQL schema (use a new DB, although updating from v3 should work)
    • lookup commands with argument support (mostly similar to v3, although b is now m etc)
    • rollback and restore commands
    • a robust configuration and localization system. "ignores" have been replaced by the new filter system.
    • basic wand functionality
    • bugs

    What's next:

    • db schema refinements, profiling, and index work. (literally have not touched indices yet)
    • purges, permissions, and previews
    • chat data pagination
    • lots of small pieces and refinements

    Docs: https://prism.readthedocs.io/en/latest/ (we've been granted the prism subdomain so docs will move there soon)

    Source code(tar.gz)
    Source code(zip)
    prism-4.0.0-SNAPSHOT-all.jar(4.40 MB)
Owner
Darkhelmet
Darkhelmet
Spigot plugin featuring a wide variety of features for a server based on modules.

CTSNC, standing for Custom Chat, Tablist, Scoreboard, NameTag & Chat, is a all-round solution based on multiple modules each featuring a dedicated function while CTSNC acts as the core. Here all configuration files are housed for easy management and customization.

null 2 Dec 30, 2022
A theoretically-infinitely-scalable Skyblock plugin.

hyperblock A theoretically-infinitely-scalable Skyblock plugin. wat Worlds are persisted in S3 buckets, write-through cached in Redis.

amy null 16 Aug 10, 2022
A lightweight staff chat plugin for BungeeCord and Spigot.

A lightweight staff chat plugin for BungeeCord and Spigot with 2-way Discord chat support and many other great features.

null 4 Mar 30, 2022
Cordova plugin for Android Serial USB communication (easily connect an Arduino board to an Android device).

PR-DC cordova-plugin-serialusb Cordova plugin for Android Serial USB communication. This plugin makes a connection to the external board trivial, for

PR-DC 3 May 8, 2022
A simple ping plugin for amazing people.

SimplisticPing Download: https://github.com/LoJoSho/SimplisticPing/releases Paper Forum Post: https://forums.papermc.io/threads/simplisticping-a-ping-

null 3 Jan 9, 2022
A plugin for the ja-netfilter, it can delete expired log files

A plugin for the ja-netfilter, it can delete expired log files

EFL 3 Feb 14, 2022
A Nexus Repository 3 plugin that allows usage of Terraform repositories

Nexus Repository Terraform Format Table Of Contents Developing Requirements Download Building Using Terraform with Nexus Repository Manager 3 Compatib

null 8 Dec 5, 2022
BitBase is a Client-Server based Crypto trading platform which offers live pricing, dynamic charts, user portfolio, account settings... and much more!

BitBase-Crypto-Trading-Platform BitBase is a Client-Server based Crypto trading platform which offers live pricing, dynamic charts, user portfolio, ac

null 4 Feb 11, 2022
Apache OpenNLP library is a machine learning based toolkit for the processing of natural language text

Welcome to Apache OpenNLP! The Apache OpenNLP library is a machine learning based toolkit for the processing of natural language text. This toolkit is

The Apache Software Foundation 1.2k Dec 29, 2022
Automatically discover and tag PII data across BigQuery tables and apply column-level access controls based on confidentiality level.

Automatically discover and tag PII data across BigQuery tables and apply column-level access controls based on confidentiality level.

Google Cloud Platform 18 Dec 29, 2022
Minecraft Spigot 1.16 - plugin for compass tracking other players. MVP contains tracking closest player available.

Compass Tracker Overview Minecraft Spigot 1.16 Plugin. Plugin sets compass target to closest player in the overworld. Created to use with my friends t

INNIX 3 Nov 15, 2021
PluginHooker is a Bukkit plugin that aims to provide an ultimately simple and better method to hook Bukkit events.

PluginHooker PluginHooker is a Bukkit plugin that aims to provide an ultimately simple and better method to hook Bukkit events. Localization 简体中文 Feat

null 12 Nov 23, 2022
This is plugin for 1.17 Spigot/Bukkit Minecraft's servers.

This is plugin for 1.17 Spigot/Bukkit Minecraft's servers. This plugin fixes BowExploit(BowBomb) that found recently. Meteor Client developers released their fix, but the problem is that it fixes vanills arrow mechanics. Together I with https://github.com/l1tecorejz we made a plugin that fixes the exploit and doesn't

CRystalCLient 10 Jan 3, 2023
DnD Plugin submission using Atlas. Plugin inspired on the TrollGUI bukkit plugin

?? PunishGUI DnD Plugin submission using Atlas. Plugin inspired on the TrollGUI bukkit plugin ?? Dependencies ?? Paper 1.18 ?? Atlas ?? Commands /hell

null 1 Jan 19, 2022
The best plugin to protect anarchy servers and mc servers in general against op attacks.

AdminSecure The best plugin to protect anarchy servers and mc servers in general against op attacks How does it work? When the server detects a player

PK2_Stimpy 3 Sep 2, 2021
A silent, spreading backdoor for Minecraft Bukkit/Spigot/Paper servers

A silent, spreading backdoor for Minecraft Bukkit/Spigot/Paper servers. Using the injector is recommended, should you choose to manually backdoor a plugin, you're on your own if you run into problems.

INZO_Technologies 5 Oct 28, 2022
A simple Plugin to allow server admins and user with Permissions to change fast and easy thier own Gamemode

A simple Plugin to allow server admins and user with Permissions to change fast and easy thier own Gamemode

Qubik Studios 1 Jan 17, 2022
Fast computer vision library for SFM, calibration, fiducials, tracking, image processing, and more.

Table of Contents Introduction Cloning Repository Quick Start Gradle and Maven Building from Source Dependencies Help/Contact Introduction BoofCV is a

Peter Abeles 916 Jan 6, 2023
Tools for tracking down memory / JVM problems & generating predictable-as-possible VM behaviour

Hawkshaw Tools for tracking down memory / JVM problems & generating predictable-as-possible VM behaviour You can Use Hawkshaw to mimic application obj

Martijn Verburg 40 Jan 9, 2021