diff --git a/patches/server/0005-Pufferfish-Sentry.patch b/patches/server/0005-Pufferfish-Sentry.patch
index f74800c0e..677266230 100644
--- a/patches/server/0005-Pufferfish-Sentry.patch
+++ b/patches/server/0005-Pufferfish-Sentry.patch
@@ -8,10 +8,10 @@ Original project: https://github.com/pufferfish-gg/Pufferfish
 
 diff --git a/src/main/java/gg/pufferfish/pufferfish/sentry/PufferfishSentryAppender.java b/src/main/java/gg/pufferfish/pufferfish/sentry/PufferfishSentryAppender.java
 new file mode 100644
-index 0000000000000000000000000000000000000000..731ef11c7a025ae95ed8a757b530d834733d0621
+index 0000000000000000000000000000000000000000..dc2d72a3bde95110c6977da995b2d57ca33325a9
 --- /dev/null
 +++ b/src/main/java/gg/pufferfish/pufferfish/sentry/PufferfishSentryAppender.java
-@@ -0,0 +1,135 @@
+@@ -0,0 +1,131 @@
 +package gg.pufferfish.pufferfish.sentry;
 +
 +import com.google.common.reflect.TypeToken;
@@ -22,7 +22,9 @@ index 0000000000000000000000000000000000000000..731ef11c7a025ae95ed8a757b530d834
 +import io.sentry.SentryLevel;
 +import io.sentry.protocol.Message;
 +import io.sentry.protocol.User;
++
 +import java.util.Map;
++
 +import org.apache.logging.log4j.Level;
 +import org.apache.logging.log4j.LogManager;
 +import org.apache.logging.log4j.Marker;
@@ -32,124 +34,118 @@ index 0000000000000000000000000000000000000000..731ef11c7a025ae95ed8a757b530d834
 +import org.apache.logging.log4j.core.filter.AbstractFilter;
 +
 +public class PufferfishSentryAppender extends AbstractAppender {
-+	
-+	private static final org.apache.logging.log4j.Logger logger = LogManager.getLogger(PufferfishSentryAppender.class);
-+	private static final Gson GSON = new Gson();
-+	
-+	public PufferfishSentryAppender() {
-+		super("PufferfishSentryAdapter", new SentryFilter(), null);
-+	}
-+	
-+	@Override
-+	public void append(LogEvent logEvent) {
-+		if (logEvent.getThrown() != null && logEvent.getLevel().isMoreSpecificThan(Level.WARN)) {
-+			try {
-+				logException(logEvent);
-+			} catch (Exception e) {
-+				logger.warn("Failed to log event with sentry", e);
-+			}
-+		} else {
-+			try {
-+				logBreadcrumb(logEvent);
-+			} catch (Exception e) {
-+				logger.warn("Failed to log event with sentry", e);
-+			}
-+		}
-+	}
-+	
-+	private void logException(LogEvent e) {
-+		SentryEvent event = new SentryEvent(e.getThrown());
-+		
-+		Message sentryMessage = new Message();
-+		sentryMessage.setMessage(e.getMessage().getFormattedMessage());
-+		
-+		event.setThrowable(e.getThrown());
-+		event.setLevel(getLevel(e.getLevel()));
-+		event.setLogger(e.getLoggerName());
-+		event.setTransaction(e.getLoggerName());
-+		event.setExtra("thread_name", e.getThreadName());
-+		
-+		boolean hasContext = e.getContextData() != null;
-+		
-+		if (hasContext && e.getContextData().containsKey("pufferfishsentry_playerid")) {
-+			User user = new User();
-+			user.setId(e.getContextData().getValue("pufferfishsentry_playerid"));
-+			user.setUsername(e.getContextData().getValue("pufferfishsentry_playername"));
-+			event.setUser(user);
-+		}
-+		
-+		if (hasContext && e.getContextData().containsKey("pufferfishsentry_pluginname")) {
-+			event.setExtra("plugin.name", e.getContextData().getValue("pufferfishsentry_pluginname"));
-+			event.setExtra("plugin.version", e.getContextData().getValue("pufferfishsentry_pluginversion"));
-+			event.setTransaction(e.getContextData().getValue("pufferfishsentry_pluginname"));
-+		}
-+		
-+		if (hasContext && e.getContextData().containsKey("pufferfishsentry_eventdata")) {
-+			Map<String, String> eventFields = GSON.fromJson((String) e.getContextData().getValue("pufferfishsentry_eventdata"), new TypeToken<Map<String, String>>() {}.getType());
-+			if (eventFields != null) {
-+				event.setExtra("event", eventFields);
-+			}
-+		}
-+		
-+		Sentry.captureEvent(event);
-+	}
-+	
-+	private void logBreadcrumb(LogEvent e) {
-+		Breadcrumb breadcrumb = new Breadcrumb();
-+		
-+		breadcrumb.setLevel(getLevel(e.getLevel()));
-+		breadcrumb.setCategory(e.getLoggerName());
-+		breadcrumb.setType(e.getLoggerName());
-+		breadcrumb.setMessage(e.getMessage().getFormattedMessage());
-+		
-+		Sentry.addBreadcrumb(breadcrumb);
-+	}
-+	
-+	private SentryLevel getLevel(Level level) {
-+		switch (level.getStandardLevel()) {
-+			case TRACE:
-+			case DEBUG:
-+				return SentryLevel.DEBUG;
-+			case WARN:
-+				return SentryLevel.WARNING;
-+			case ERROR:
-+				return SentryLevel.ERROR;
-+			case FATAL:
-+				return SentryLevel.FATAL;
-+			case INFO:
-+			default:
-+				return SentryLevel.INFO;
-+		}
-+	}
-+	
-+	private static class SentryFilter extends AbstractFilter {
-+		
-+		@Override
-+		public Result filter(Logger logger, org.apache.logging.log4j.Level level, Marker marker, String msg,
-+				Object... params) {
-+			return this.filter(logger.getName());
-+		}
-+		
-+		@Override
-+		public Result filter(Logger logger, org.apache.logging.log4j.Level level, Marker marker, Object msg, Throwable t) {
-+			return this.filter(logger.getName());
-+		}
-+		
-+		@Override
-+		public Result filter(LogEvent event) {
-+			return this.filter(event == null ? null : event.getLoggerName());
-+		}
-+		
-+		private Result filter(String loggerName) {
-+			return loggerName != null && loggerName.startsWith("gg.castaway.pufferfish.sentry") ? Result.DENY
-+					: Result.NEUTRAL;
-+		}
-+		
-+	}
++
++    private static final org.apache.logging.log4j.Logger logger = LogManager.getLogger(PufferfishSentryAppender.class);
++    private static final Gson GSON = new Gson();
++
++    public PufferfishSentryAppender() {
++        super("PufferfishSentryAdapter", new SentryFilter(), null);
++    }
++
++    @Override
++    public void append(LogEvent logEvent) {
++        if (logEvent.getThrown() != null && logEvent.getLevel().isMoreSpecificThan(Level.WARN)) {
++            try {
++                logException(logEvent);
++            } catch (Exception e) {
++                logger.warn("Failed to log event with sentry", e);
++            }
++        } else {
++            try {
++                logBreadcrumb(logEvent);
++            } catch (Exception e) {
++                logger.warn("Failed to log event with sentry", e);
++            }
++        }
++    }
++
++    private void logException(LogEvent e) {
++        SentryEvent event = new SentryEvent(e.getThrown());
++
++        Message sentryMessage = new Message();
++        sentryMessage.setMessage(e.getMessage().getFormattedMessage());
++
++        event.setThrowable(e.getThrown());
++        event.setLevel(getLevel(e.getLevel()));
++        event.setLogger(e.getLoggerName());
++        event.setTransaction(e.getLoggerName());
++        event.setExtra("thread_name", e.getThreadName());
++
++        boolean hasContext = e.getContextData() != null;
++
++        if (hasContext && e.getContextData().containsKey("pufferfishsentry_playerid")) {
++            User user = new User();
++            user.setId(e.getContextData().getValue("pufferfishsentry_playerid"));
++            user.setUsername(e.getContextData().getValue("pufferfishsentry_playername"));
++            event.setUser(user);
++        }
++
++        if (hasContext && e.getContextData().containsKey("pufferfishsentry_pluginname")) {
++            event.setExtra("plugin.name", e.getContextData().getValue("pufferfishsentry_pluginname"));
++            event.setExtra("plugin.version", e.getContextData().getValue("pufferfishsentry_pluginversion"));
++            event.setTransaction(e.getContextData().getValue("pufferfishsentry_pluginname"));
++        }
++
++        if (hasContext && e.getContextData().containsKey("pufferfishsentry_eventdata")) {
++            Map<String, String> eventFields = GSON.fromJson((String) e.getContextData().getValue("pufferfishsentry_eventdata"), new TypeToken<Map<String, String>>() {
++            }.getType());
++            if (eventFields != null) {
++                event.setExtra("event", eventFields);
++            }
++        }
++
++        Sentry.captureEvent(event);
++    }
++
++    private void logBreadcrumb(LogEvent e) {
++        Breadcrumb breadcrumb = new Breadcrumb();
++
++        breadcrumb.setLevel(getLevel(e.getLevel()));
++        breadcrumb.setCategory(e.getLoggerName());
++        breadcrumb.setType(e.getLoggerName());
++        breadcrumb.setMessage(e.getMessage().getFormattedMessage());
++
++        Sentry.addBreadcrumb(breadcrumb);
++    }
++
++    private SentryLevel getLevel(Level level) {
++        return switch (level.getStandardLevel()) {
++            case TRACE, DEBUG -> SentryLevel.DEBUG;
++            case WARN -> SentryLevel.WARNING;
++            case ERROR -> SentryLevel.ERROR;
++            case FATAL -> SentryLevel.FATAL;
++            default -> SentryLevel.INFO;
++        };
++    }
++
++    private static class SentryFilter extends AbstractFilter {
++
++        @Override
++        public Result filter(Logger logger, org.apache.logging.log4j.Level level, Marker marker, String msg,
++                             Object... params) {
++            return this.filter(logger.getName());
++        }
++
++        @Override
++        public Result filter(Logger logger, org.apache.logging.log4j.Level level, Marker marker, Object msg, Throwable t) {
++            return this.filter(logger.getName());
++        }
++
++        @Override
++        public Result filter(LogEvent event) {
++            return this.filter(event == null ? null : event.getLoggerName());
++        }
++
++        private Result filter(String loggerName) {
++            return loggerName != null && loggerName.startsWith("gg.castaway.pufferfish.sentry") ? Result.DENY
++                    : Result.NEUTRAL;
++        }
++
++    }
 +}
 diff --git a/src/main/java/gg/pufferfish/pufferfish/sentry/SentryManager.java b/src/main/java/gg/pufferfish/pufferfish/sentry/SentryManager.java
 new file mode 100644
-index 0000000000000000000000000000000000000000..ab7a4acec52320c30623023c5fc9423e73f77a3b
+index 0000000000000000000000000000000000000000..e9da86f5c655552ae3453e0c31ab1f1e63eb1ad8
 --- /dev/null
 +++ b/src/main/java/gg/pufferfish/pufferfish/sentry/SentryManager.java
 @@ -0,0 +1,39 @@
@@ -160,37 +156,37 @@ index 0000000000000000000000000000000000000000..ab7a4acec52320c30623023c5fc9423e
 +import org.apache.logging.log4j.Logger;
 +
 +public class SentryManager {
-+	
-+	private static final Logger logger = LogManager.getLogger(SentryManager.class);
-+	
-+	private SentryManager() {
-+	
-+	}
-+	
-+	private static boolean initialized = false;
-+	
-+	public static synchronized void init() {
-+		if (initialized) {
-+			return;
-+		}
-+		try {
-+			initialized = true;
-+			
-+			Sentry.init(options -> {
-+				options.setDsn(org.dreeam.leaf.LeafConfig.sentryDsn);
-+				options.setMaxBreadcrumbs(100);
-+			});
-+			
-+			PufferfishSentryAppender appender = new PufferfishSentryAppender();
-+			appender.start();
-+			((org.apache.logging.log4j.core.Logger) LogManager.getRootLogger()).addAppender(appender);
-+			logger.info("Sentry logging started!");
-+		} catch (Exception e) {
-+			logger.warn("Failed to initialize sentry!", e);
-+			initialized = false;
-+		}
-+	}
-+	
++
++    private static final Logger logger = LogManager.getLogger(SentryManager.class);
++
++    private SentryManager() {
++
++    }
++
++    private static boolean initialized = false;
++
++    public static synchronized void init() {
++        if (initialized) {
++            return;
++        }
++        try {
++            initialized = true;
++
++            Sentry.init(options -> {
++                options.setDsn(org.dreeam.leaf.config.modules.misc.SentryDSN.sentryDsn);
++                options.setMaxBreadcrumbs(100);
++            });
++
++            PufferfishSentryAppender appender = new PufferfishSentryAppender();
++            appender.start();
++            ((org.apache.logging.log4j.core.Logger) LogManager.getRootLogger()).addAppender(appender);
++            logger.info("Sentry logging started!");
++        } catch (Exception e) {
++            logger.warn("Failed to initialize sentry!", e);
++            initialized = false;
++        }
++    }
++
 +}
 diff --git a/src/main/java/org/dreeam/leaf/config/modules/misc/SentryDSN.java b/src/main/java/org/dreeam/leaf/config/modules/misc/SentryDSN.java
 new file mode 100644