diff --git a/pom.xml b/pom.xml
index 8b1aaca03..0c1a7c3eb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -44,6 +44,17 @@
${project.name} v${project.version}
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+ 3.8.1
+
+
+ **/package-info.java
+
+
+
+
org.apache.maven.plugins
maven-source-plugin
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/api/events/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/api/events/package-info.java
new file mode 100644
index 000000000..cb36d7d8c
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/api/events/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * This package contains all extensions of {@link org.bukkit.event.Event} that Slimefun provides
+ * and allows you to listen to.
+ */
+package io.github.thebusybiscuit.slimefun4.api.events;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/api/exceptions/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/api/exceptions/package-info.java
new file mode 100644
index 000000000..da014fff2
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/api/exceptions/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * This package contains all different extensions of {@link java.lang.Exception} that Slimefun
+ * uses internally.
+ */
+package io.github.thebusybiscuit.slimefun4.api.exceptions;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/api/network/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/api/network/package-info.java
new file mode 100644
index 000000000..b2232cf17
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/api/network/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * This package provides the API infrastructure for networks, such as the Cargo- or Energy net.
+ */
+package io.github.thebusybiscuit.slimefun4.api.network;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/api/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/api/package-info.java
new file mode 100644
index 000000000..7929e334c
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/api/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * This package contains a bunch of classes and sub-packages related to the interaction
+ * with Slimefun via an API.
+ */
+package io.github.thebusybiscuit.slimefun4.api;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/attributes/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/attributes/package-info.java
new file mode 100644
index 000000000..4913fcf00
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/attributes/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * This package contains all variations of {@link io.github.thebusybiscuit.slimefun4.core.attributes.ItemAttribute} that
+ * can be assigned to a {@link me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem}
+ */
+package io.github.thebusybiscuit.slimefun4.core.attributes;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/package-info.java
new file mode 100644
index 000000000..f3736695a
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/commands/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * This package contains everything related to slimefun's ingame command.
+ */
+package io.github.thebusybiscuit.slimefun4.core.commands;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/package-info.java
new file mode 100644
index 000000000..0d47912f0
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/guide/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * This package contains the core system for the {@link io.github.thebusybiscuit.slimefun4.core.guide.SlimefunGuide}.
+ * Note that you can find the individual implementations of the guide, in the implementation package
+ */
+package io.github.thebusybiscuit.slimefun4.core.guide;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/github/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/github/package-info.java
new file mode 100644
index 000000000..ce0997021
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/github/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * This package contains everything related to GitHub and contributors.
+ */
+package io.github.thebusybiscuit.slimefun4.core.services.github;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/metrics/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/metrics/package-info.java
new file mode 100644
index 000000000..3528603ca
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/metrics/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * This package contains everything related to bStats Metrics
+ */
+package io.github.thebusybiscuit.slimefun4.core.services.metrics;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/package-info.java
new file mode 100644
index 000000000..10a6bb004
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/package-info.java
@@ -0,0 +1,6 @@
+/**
+ * This package provides a few "Services" that Slimefun uses.
+ * These services can be considered like a black box, you put stuff in or just let them run,
+ * they work independently.
+ */
+package io.github.thebusybiscuit.slimefun4.core.services;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/plugins/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/plugins/package-info.java
new file mode 100644
index 000000000..572feaade
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/core/services/plugins/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * This package contains all hooks to external plugins
+ */
+package io.github.thebusybiscuit.slimefun4.core.services.plugins;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/package-info.java
new file mode 100644
index 000000000..231751cda
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/guide/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * This package provides the different implementations of our
+ * {@link io.github.thebusybiscuit.slimefun4.core.guide.SlimefunGuide}
+ */
+package io.github.thebusybiscuit.slimefun4.implementation.guide;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/package-info.java
new file mode 100644
index 000000000..db5d253e2
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/items/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * This package contains the different classes for each
+ * {@link me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem}
+ */
+package io.github.thebusybiscuit.slimefun4.implementation.items;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/package-info.java
new file mode 100644
index 000000000..bb235157a
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/listeners/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * This package contains all implementations of {@link org.bukkit.event.Listener} that Slimefun uses.
+ */
+package io.github.thebusybiscuit.slimefun4.implementation.listeners;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/package-info.java
new file mode 100644
index 000000000..ad5bd0fb4
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/setup/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * In this package we initialize our items, researches and stuff.
+ */
+package io.github.thebusybiscuit.slimefun4.implementation.setup;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/package-info.java
new file mode 100644
index 000000000..2935ec8cb
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/implementation/tasks/package-info.java
@@ -0,0 +1,4 @@
+/**
+ * This package contains several tasks that Slimefun runs regularly.
+ */
+package io.github.thebusybiscuit.slimefun4.implementation.tasks;
\ No newline at end of file
diff --git a/src/main/java/io/github/thebusybiscuit/slimefun4/utils/package-info.java b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/package-info.java
new file mode 100644
index 000000000..2aee49f53
--- /dev/null
+++ b/src/main/java/io/github/thebusybiscuit/slimefun4/utils/package-info.java
@@ -0,0 +1,5 @@
+/**
+ * This package contains some utility classes that offer handy ways to do stuff.
+ * They are often not directly related to Slimefun.
+ */
+package io.github.thebusybiscuit.slimefun4.utils;
\ No newline at end of file