Skip to content

Commit

Permalink
Merge branch 'master' into chore/1.21
Browse files Browse the repository at this point in the history
  • Loading branch information
Oribuin committed Sep 7, 2024
2 parents 8489904 + 949beee commit 1a2b4fd
Show file tree
Hide file tree
Showing 35 changed files with 839 additions and 556 deletions.
165 changes: 1 addition & 164 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,165 +1,2 @@
# Slimefun 4
*Looking for the download link? [**Click here**](https://github.com/Slimefun/Slimefun4/blob/master/README.md#floppy_disk-download-slimefun-4)*
# This is our modification of Slimefun4 to be optimised for large servers. No support will be given by us or Slimefun for issues with this.

Slimefun is a plugin which aims to turn your Spigot Server into a modpack without ever installing a single mod. It offers everything you could possibly imagine. From Backpacks to Jetpacks! Slimefun lets every player decide on their own how much they want to dive into Magic or Tech.<br>
We got everything from magical wands to nuclear reactors.<br>
We feature a magical altar, an electric power grid and even item transport systems.

This project originally started back **in 2013** and has grown ever since.<br>
From one single person working on this plugin back then, we grew to a community of thousands of players and hundreds of contributors to this project.<br>
It currently adds over **500 new items and recipes** to Minecraft ([Read more about the history of this project](https://github.com/Slimefun/Slimefun4/wiki/Slimefun-in-a-nutshell)).

But it also comes with a lot of addons! Check out our [addons](https://github.com/Slimefun/Slimefun4/wiki/Addons), you may find exactly what you were looking for.

### Quick navigation
* **[:floppy_disk: Download Slimefun4](#floppy_disk-download-slimefun-4)**
* **[:framed_picture: Screenshots](#framed_picture-screenshots)**
* **[:headphones: Discord Support Server](#headphones-discord)**
* **[:beetle: Bug Tracker](https://github.com/Slimefun/Slimefun4/issues)**
* **[:open_book: Wiki](https://github.com/Slimefun/Slimefun4/wiki)**
* **[:interrobang: FAQ](https://github.com/Slimefun/Slimefun4/wiki/FAQ)**
* **[:handshake: How to contribute](https://github.com/Slimefun/Slimefun4/blob/master/CONTRIBUTING.md)**

## :floppy_disk: Download Slimefun 4
Slimefun requires your Minecraft Server to be running on [Spigot](https://spigotmc.org/), [Paper](https://papermc.io/) or on any fork of these.<br>
(See also: [How to install Slimefun](https://github.com/Slimefun/Slimefun4/wiki/Installing-Slimefun))

Slimefun 4 can be downloaded **for free** on our builds page.<br>
We currently provide two distinct versions of Slimefun, development builds and "stable" builds.<br>
Here is a full summary of the differences between the two different versions of Slimefun.

| | development (latest) | "stable" |
| ------------------ | -------- | -------- |
| **Minecraft version(s)** | :video_game: **1.16.\* - 1.20.\*** | :video_game: **1.16.\* - 1.20.\*** |
| **Java version** | :computer: **Java 16 (or higher)** | :computer: **Java 16 (or higher)** |
| **automatic updates** | :heavy_check_mark: | :heavy_check_mark: |
| **frequent updates** | :heavy_check_mark: | :x: |
| **latest content** | :heavy_check_mark: | :x: |
| **Discord support** | :heavy_check_mark: | :x: |
| **Bug Reports** | :heavy_check_mark: | :x: |
| **testing before release** | :x: | :heavy_check_mark: |
| **change logs** | :x: | :memo: **[change log](https://github.com/Slimefun/Slimefun4/blob/master/CHANGELOG.md)** |
| **Download links** | :floppy_disk: **[download latest](https://blob.build/project/Slimefun4/Dev)** | :floppy_disk: **[download "stable"](https://blob.build/project/Slimefun4/RC)** |

**:exclamation: We wholeheartedly recommend you to use _development builds_, they are the most recent version of Slimefun and also receive the most frequent updates! In fact, "stable" builds are so outdated that we won't accept bug reports from them at all.**
<details>
<summary>Here's why...</summary>

"Stable" builds do not receive frequent updates or fast patches. As time goes on, bugs are fixed but it will take some time until these fixes make it into a "stable" build. We will also not accept or review any bug reports from "stable" builds. They are in fact just old development builds that seemed to run fine without any __major__ issues.

**:question: Why use a "stable" build then?**<br>
While "stable" builds most definitely contain more bugs than development builds due to their very slow update schedule. you can be sure that they will not include __game-breaking__ issues, but rest assured that development builds almost never contain such issues either. If your server or business however heavily depends on a version of Slimefun that does not change/update a lot, you are forgiven if you choose the "stable" branch. But development builds will bring you the best experience, both in terms of features and bug fixes.

**:question: What exactly are these "stable" builds then and why do you put them in quotes?**<br>
"Stable" builds are literally just outdated development builds that seemed to run fine without any __major__ issues. But they are far from bug-free hence why actually calling them stable would be hypocritical. However these builds can only really stay "stable" if there are enough people using development builds and report any bugs they come across. Otherwise potential issues may go unnoticed and slip into a "stable" build. Again, we really recommend you to choose the development builds. But since a few people really wanted "stable" builds, they are now an option too.

</details>

## :framed_picture: Screenshots
So what does Slimefun look like?<br>
Well, we asked some users on our [Discord server](#headphones-discord) to send us some screenshots, so see for yourself:
| Reactors and electricity | Awesome factories | Magic and Altars |
| :-------------------------------------------: | :--------------------------------------: | :----------------------------------------: |
| ![](https://raw.githubusercontent.com/Slimefun/Slimefun-Wiki/master/images/showcase1.png) | ![](https://raw.githubusercontent.com/Slimefun/Slimefun-Wiki/master/images/showcase6.png) | ![](https://raw.githubusercontent.com/Slimefun/Slimefun-Wiki/master/images/showcase5.png) |
| *Screenshot provided by HamtaBot#0001* | *Screenshot provided by Piͭxͪeͤl (mnb)#5049* | *Screenshot provided by Kilaruna#4981* |
| ![](https://raw.githubusercontent.com/Slimefun/Slimefun-Wiki/master/images/showcase4.png) | ![](https://raw.githubusercontent.com/Slimefun/Slimefun-Wiki/master/images/showcase3.png) | ![](https://raw.githubusercontent.com/Slimefun/Slimefun-Wiki/master/images/showcase2.png) |
| *Screenshot provided by GalaxyKat11#3816* | *Screenshot provided by TamThan#7987* | *Screenshot provided by Kilaruna#4981* |

## :headphones: Discord
You can find Slimefun's community on Discord and connect with **over 7000** users of this plugin from all over the world.<br>
Click the badge down below to join the server for suggestions/questions or other discussions about this plugin.<br>
We are also hosting a community event every so often, join us to find out more.<br>
**Important: We don't accept bug reports on discord, please use our [Issue Tracker](https://github.com/Slimefun/Slimefun4/issues) to submit bug reports!**

Due to the sheer size of this discord server, we need to enforce some [important rules](https://github.com/Slimefun/Slimefun4/wiki/Discord-Rules).<br>
Not following these rules can lead to a kick or even a ban from the server.

<p align="center">
<a href="https://discord.gg/slimefun">
<img src="https://discordapp.com/api/guilds/565557184348422174/widget.png?style=banner3" alt="Discord Invite"/>
</a>
</p>

## :open_book: Wiki
Slimefun has a (detailed and well-maintained - *cough*) Wiki for new players, maybe also consider
expanding the wiki to help grow our community and help out new users of this plugin.
https://github.com/Slimefun/Slimefun4/wiki

#### :star: Highlighted Articles
* [What is Slimefun?](https://github.com/Slimefun/Slimefun4/wiki/Slimefun-in-a-nutshell)
* [How to install Slimefun](https://github.com/Slimefun/Slimefun4/wiki/Installing-Slimefun)
* [Addons for Slimefun 4](https://github.com/Slimefun/Slimefun4/wiki/Addons)
* [How to create an Addon for Slimefun 4](https://github.com/Slimefun/Slimefun4/wiki/Developer-Guide)
* [Getting Started](https://github.com/Slimefun/Slimefun4/wiki/Getting-Started)
* [Frequently Asked Questions](https://github.com/Slimefun/Slimefun4/wiki/FAQ)
* [Common issues](https://github.com/Slimefun/Slimefun4/wiki/Common-Issues)
* [Help us expand the Wiki!](https://github.com/Slimefun/Slimefun4/wiki/Expanding-the-Wiki)
* [Help us translate Slimefun!](https://github.com/Slimefun/Slimefun4/wiki/Translating-Slimefun)

The wiki is entirely community-run, so if you find an article missing, feel free to write one and share it with others.

## :handshake: Contributing to this project
Slimefun 4 is an Open-Source project and licensed under
[GNU GPLv3](https://github.com/Slimefun/Slimefun4/blob/master/LICENSE).<br>
**Over 200 people have already contributed to this amazing project. You guys are awesome! :heart:**<br>
Please consider helping us maintain this project too, your engagement keeps the project alive!

You can find more info on how to contribute to this project in our [CONTRIBUTING.md](https://github.com/Slimefun/Slimefun4/blob/master/CONTRIBUTING.md).

## :exclamation: Disclaimers
Slimefun4 uses various systems that collect usage information or download automatic updates as well as the latest information about the project.
We do not collect any personal information from you but there are some services that may gather or download some form of data.

You can opt-out of the Auto-Updater and stats collection at any time!

<details>
<summary>Automatic updates</summary>

Slimefun4 uses an Auto-Updater which connects to https://thebusybiscuit.github.io/builds/ to check for and download updates.<br>
This behaviour is enabled by default but can be turned off under `/plugins/Slimefun/config.yml`.<br>
We highly recommend you to keep this on at any time though, as you could be missing out on important patches.
</details>

<details>
<summary>Metrics and Statistics</summary>

Slimefun4 uses [bStats](https://bstats.org/plugin/bukkit/Slimefun/4574) to collect anonymous information about the usage of this plugin.<br>
This is solely for statistical purposes, as we are interested in how Servers/Players use this plugin.<br>
All available data is anonymous and aggregated, at no point can we see individual server or player information.<br>
All of the collected data is publicly accessible: https://bstats.org/plugin/bukkit/Slimefun/4574

You can also disable this behaviour under `/plugins/bStats/config.yml`.<br>
For more info see [bStats' Privacy Policy](https://bstats.org/privacy-policy)

Our [bStats Module](https://github.com/Slimefun/MetricsModule) is downloaded automatically when installing this Plugin, this module will automatically update on server starts independently from the main plugin. This way we can automatically roll out updates to the bStats module, in cases of severe performance issues for example where live data and insight into what is impacting performance can be crucial.
These updates can of course be disabled under `/plugins/Slimefun/config.yml`. To disable metrics collection as a whole, see the paragraph above.

---

Slimefun also uses its own analytics system to collect anonymous information about the performance of this plugin.<br>
This is solely for statistical purposes, as we are interested in how it's performing for all servers.<br>
All available data is anonymous and aggregated, at no point can we see individual server information.<br>

You can also disable this behaviour under `/plugins/Slimefun/config.yml`.<br>

</details>

<details>
<summary>GitHub Integration</summary>

Lastly, Slimefun4 connects to https://api.github.com/ to gather information about this open-source project.<br>
No information about you or your Minecraft Server is sent to GitHub.

This information includes (but is not limited to)
* list of contributors, their username and profile link (from the repositories `Slimefun/Slimefun4`, `Slimefun/Slimefun-Wiki` and `Slimefun/Resourcepack`)
* amount of open issues in this repository
* amount of pending pull requests in this repository
* amount of stars in this repository
* amount of forks of this repository
* amount of code-bytes in this repository
* date of the last commit to this repository
</details>

Additionally the plugin connects to [textures.minecraft.net](https://www.minecraft.net/en-us) to retrieve the Minecraft skins of our contributors (if possible).<br>

*Note that Slimefun is not associated with `Mojang Studios` or `Minecraft`.*
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

<!-- Our default version will be UNOFFICIAL, this will prevent auto updates -->
<!-- from overriding our local test file -->
<version>4.9-UNOFFICIAL</version>
<version>4.9-CYT</version>
<inceptionYear>2013</inceptionYear>
<packaging>jar</packaging>

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
package io.github.thebusybiscuit.slimefun4.api.events;

import javax.annotation.Nonnull;

import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;

/**
* The {@link RadiationDamageEvent} is called when a player takes radiation damage.
*
* @author HoosierTransfer
*/
public class RadiationDamageEvent extends Event implements Cancellable {
private static final HandlerList handlers = new HandlerList();

private final Player player;
private final int exposure;
private boolean cancelled;

/**
* This constructs a new {@link RadiationDamageEvent}.
*
* @param player The {@link Player} who took radiation damage
* @param exposure The amount of radiation exposure
*/
public RadiationDamageEvent(@Nonnull Player player, int exposure) {
this.player = player;
this.exposure = exposure;
}

/**
* This returns the {@link Player} who took radiation damage.
*
* @return The {@link Player} who took radiation damage
*/
public @Nonnull Player getPlayer() {
return player;
}

/**
* This returns the amount of radiation exposure.
*
* @return The amount of radiation exposure
*/
public int getExposure() {
return exposure;
}

@Override
public boolean isCancelled() {
return cancelled;
}

@Override
public void setCancelled(boolean cancelled) {
this.cancelled = cancelled;
}

public static @Nonnull HandlerList getHandlerList() {
return handlers;
}

@Override
public @Nonnull HandlerList getHandlers() {
return getHandlerList();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -106,21 +106,8 @@ public void update(@Nonnull T newValue) {
*/
public @Nonnull T getValue() {
if (value != null) {
/**
* If the value has been initialized, return it immediately.
*/
return value;
} else if (Slimefun.instance().isUnitTest()) {
/*
* In Unit Tests, we want the test to fail. So we know there is
* something that needs to be fixed.
*/
throw new IllegalStateException("ItemSetting '" + key + "' was invoked but was not initialized yet.");
} else {
/*
* In a normal environment, we can mitigate the issue
* easily and just print a warning instead.
*/
item.warn("ItemSetting '" + key + "' was invoked but was not initialized yet.");
return defaultValue;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -165,7 +165,6 @@ public void setResearched(@Nonnull Research research, boolean unlock) {
*
* @param research
* The {@link Research} that is being queried
*
* @return Whether this {@link Research} has been unlocked
*/
public boolean hasUnlocked(@Nullable Research research) {
Expand All @@ -177,23 +176,6 @@ public boolean hasUnlocked(@Nullable Research research) {
return !research.isEnabled() || data.getResearches().contains(research);
}

/**
* This method returns whether this {@link Player} has unlocked all {@link Research Researches}.
*
* @return Whether they unlocked every {@link Research}
*/
public boolean hasUnlockedEverything() {
for (Research research : Slimefun.getRegistry().getResearches()) {
// If there is a single Research not unlocked: They haven't unlocked everything.
if (!hasUnlocked(research)) {
return false;
}
}

// Player has everything unlocked - Hooray!
return true;
}

/**
* This Method will return all Researches that this {@link Player} has unlocked
*
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
package io.github.thebusybiscuit.slimefun4.core.attributes;

import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem;
import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItemStack;
import io.github.thebusybiscuit.slimefun4.utils.SlimefunUtils;
import org.bukkit.inventory.meta.ItemMeta;

import io.github.thebusybiscuit.slimefun4.api.items.SlimefunItem;

import javax.annotation.Nonnull;

/**
Expand All @@ -22,10 +21,8 @@ public interface DistinctiveItem extends ItemAttribute {
* IDs match on a DistinctiveItem and should return if the two items can stack
* with one another.
*
* @param itemMetaOne
* The {@link ItemMeta} of the first stack being compared.
* @param itemMetaTwo
* The {@link ItemMeta} of the second stack being compared.
* @param itemMetaOne The {@link ItemMeta} of the first stack being compared.
* @param itemMetaTwo The {@link ItemMeta} of the second stack being compared.
*
* @return Whether the two {@link ItemMeta}s are stackable
*/
Expand Down
Loading

0 comments on commit 1a2b4fd

Please sign in to comment.