mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35:51 +00:00
Merge branch 'master' into qol/sf-version
This commit is contained in:
commit
80094b4f1b
27
.github/workflows/issues.yml
vendored
Normal file
27
.github/workflows/issues.yml
vendored
Normal file
@ -0,0 +1,27 @@
|
|||||||
|
name: Issue Response
|
||||||
|
on:
|
||||||
|
issues:
|
||||||
|
types: [closed]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
comment:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: rytswd/respost@v0.1.0
|
||||||
|
with:
|
||||||
|
title: Your issue has been closed!
|
||||||
|
body: |-
|
||||||
|
If your issue was closed **and not resolved** by one of our developers it may fall under one or more of these categories:
|
||||||
|
|
||||||
|
* You did not follow our template. Please follow the Issue template to help us identify your issue more quickly.
|
||||||
|
* You did not provide any information about your versions (We absolutely need your exact versions, \"latest\" is not helpful)
|
||||||
|
* Your issue was already reported, it is a duplicate. Check the other open issues first before posting!
|
||||||
|
* Your issue has already been fixed in a later version of Slimefun or CS-CoreLib, you should update.
|
||||||
|
* You are using an outdated version of Slimefun / CS-CoreLib, again, you should update.
|
||||||
|
* You are using an unsupported version of Minecraft. We only provide support for the latest version of Minecraft, old versions are not supported anymore.
|
||||||
|
* You are using a \"stable\" version of Slimefun (prefixed with \"RC - \"), your issue may have been fixed in a development build, so we only accept bug reports from those.
|
||||||
|
* You are on the wrong issue tracker. We would like to remind you that this Issue Tracker is **only for Slimefun**, to report bugs on any addons, head to the corresponding issue tracker.
|
||||||
|
|
||||||
|
Make sure to check out our article on [How to report bugs](https://github.com/TheBusyBiscuit/Slimefun4/wiki/How-to-report-bugs) for even more information.
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.ACCESS_TOKEN }}
|
@ -15,8 +15,9 @@ Slimefun 4 is licensed under
|
|||||||
[GNU GPLv3](https://github.com/TheBusyBiscuit/Slimefun4/blob/master/LICENSE)
|
[GNU GPLv3](https://github.com/TheBusyBiscuit/Slimefun4/blob/master/LICENSE)
|
||||||
|
|
||||||
## Download Slimefun 4
|
## Download Slimefun 4
|
||||||
Use the stable builds, if your Server is heavily reliant on Slimefun.
|
Use the stable builds, if your Server is heavily reliant on Slimefun not breaking.
|
||||||
But please also consider using development build. If plenty of people use the development builds, then we can quickly work together on solutions for issues that arise.
|
But please also consider using development builds. If plenty of people use the development builds, then we can quickly work together on solutions for issues that arise.
|
||||||
|
**We will NOT accept bug reports from "stable" versions, as they are basically just old development builds**
|
||||||
|
|
||||||
[Stable Builds](https://thebusybiscuit.github.io/builds/TheBusyBiscuit/Slimefun4/stable/)<br>
|
[Stable Builds](https://thebusybiscuit.github.io/builds/TheBusyBiscuit/Slimefun4/stable/)<br>
|
||||||
[Development Builds](https://thebusybiscuit.github.io/builds/TheBusyBiscuit/Slimefun4/master/)
|
[Development Builds](https://thebusybiscuit.github.io/builds/TheBusyBiscuit/Slimefun4/master/)
|
||||||
|
14
pom.xml
14
pom.xml
@ -3,7 +3,7 @@
|
|||||||
<modelVersion>4.0.0</modelVersion>
|
<modelVersion>4.0.0</modelVersion>
|
||||||
<groupId>me.mrCookieSlime</groupId>
|
<groupId>me.mrCookieSlime</groupId>
|
||||||
<artifactId>Slimefun</artifactId>
|
<artifactId>Slimefun</artifactId>
|
||||||
<version>4.2</version>
|
<version>UNOFFICIAL</version>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<maven.compiler.source>1.8</maven.compiler.source>
|
<maven.compiler.source>1.8</maven.compiler.source>
|
||||||
@ -28,10 +28,6 @@
|
|||||||
<id>worldedit-worldguard-repo</id>
|
<id>worldedit-worldguard-repo</id>
|
||||||
<url>https://maven.sk89q.com/repo/</url>
|
<url>https://maven.sk89q.com/repo/</url>
|
||||||
</repository>
|
</repository>
|
||||||
<repository>
|
|
||||||
<id>coreprotect-repo</id>
|
|
||||||
<url>https://maven.playpro.com/</url>
|
|
||||||
</repository>
|
|
||||||
<repository>
|
<repository>
|
||||||
<id>CodeMC</id>
|
<id>CodeMC</id>
|
||||||
<url>https://repo.codemc.org/repository/maven-public</url>
|
<url>https://repo.codemc.org/repository/maven-public</url>
|
||||||
@ -114,7 +110,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>com.github.thebusybiscuit</groupId>
|
<groupId>com.github.thebusybiscuit</groupId>
|
||||||
<artifactId>CS-CoreLib2</artifactId>
|
<artifactId>CS-CoreLib2</artifactId>
|
||||||
<version>0.6.1</version>
|
<version>0.7.3</version>
|
||||||
<scope>compile</scope>
|
<scope>compile</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
@ -142,12 +138,6 @@
|
|||||||
<scope>system</scope>
|
<scope>system</scope>
|
||||||
<systemPath>${project.basedir}/lib/Clearlag.jar</systemPath>
|
<systemPath>${project.basedir}/lib/Clearlag.jar</systemPath>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>net.coreprotect</groupId>
|
|
||||||
<artifactId>coreprotect</artifactId>
|
|
||||||
<version>2.16.3</version>
|
|
||||||
<scope>provided</scope>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>me.mrCookieSlime</groupId>
|
<groupId>me.mrCookieSlime</groupId>
|
||||||
<artifactId>EmeraldEnchants</artifactId>
|
<artifactId>EmeraldEnchants</artifactId>
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Events;
|
||||||
|
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
public class AutoDisenchantEvent extends Event implements Cancellable {
|
||||||
|
|
||||||
|
private static final HandlerList handlers = new HandlerList();
|
||||||
|
|
||||||
|
private final ItemStack item;
|
||||||
|
private boolean cancelled;
|
||||||
|
|
||||||
|
public AutoDisenchantEvent(ItemStack item) {
|
||||||
|
super(true);
|
||||||
|
this.item = item;
|
||||||
|
}
|
||||||
|
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return handlers;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ItemStack getItem() {
|
||||||
|
return this.item;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return this.cancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancel) {
|
||||||
|
this.cancelled = cancel;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -66,8 +66,9 @@ public final class OreGenSystem {
|
|||||||
public static int getSupplies(OreGenResource resource, Chunk chunk, boolean generate) {
|
public static int getSupplies(OreGenResource resource, Chunk chunk, boolean generate) {
|
||||||
if (resource == null) return 0;
|
if (resource == null) return 0;
|
||||||
|
|
||||||
if (BlockStorage.hasChunkInfo(chunk, "resources_" + resource.getName().toUpperCase())) {
|
String supply = BlockStorage.getChunkInfo(chunk, "resources_" + resource.getName().toUpperCase());
|
||||||
return Integer.parseInt(BlockStorage.getChunkInfo(chunk, "resources_" + resource.getName().toUpperCase()));
|
if (supply != null) {
|
||||||
|
return Integer.parseInt(supply);
|
||||||
}
|
}
|
||||||
else if (!generate) {
|
else if (!generate) {
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -24,23 +24,29 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu;
|
|||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.gps.GPSTransmitter;
|
||||||
|
|
||||||
public class GPSNetwork {
|
public class GPSNetwork {
|
||||||
|
|
||||||
private Map<UUID, Set<Location>> transmitters = new HashMap<>();
|
private static final String DIRECTORY = "data-storage/Slimefun/waypoints/";
|
||||||
private static final int[] border = new int[] {0, 1, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
|
private final Map<UUID, Set<Location>> transmitters = new HashMap<>();
|
||||||
private static final int[] inventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43};
|
|
||||||
|
|
||||||
private static final int[] teleporter_border = new int[] {0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
|
private final int[] border = new int[] {0, 1, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
|
||||||
private static final int[] teleporter_inventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43};
|
private final int[] inventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43};
|
||||||
|
|
||||||
|
private final int[] teleporterBorder = new int[] {0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
|
||||||
|
private final int[] teleporterInventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43};
|
||||||
|
|
||||||
public void updateTransmitter(Location l, UUID uuid, NetworkStatus status) {
|
public void updateTransmitter(Location l, UUID uuid, NetworkStatus status) {
|
||||||
Set<Location> set = transmitters.getOrDefault(uuid, new HashSet<>());
|
Set<Location> set = transmitters.getOrDefault(uuid, new HashSet<>());
|
||||||
|
|
||||||
if (status == NetworkStatus.ONLINE) {
|
if (status == NetworkStatus.ONLINE) {
|
||||||
if (set.add(l))
|
if (set.add(l)) {
|
||||||
transmitters.put(uuid, set);
|
transmitters.put(uuid, set);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
set.remove(l);
|
set.remove(l);
|
||||||
@ -49,11 +55,17 @@ public class GPSNetwork {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public int getNetworkComplexity(UUID uuid) {
|
public int getNetworkComplexity(UUID uuid) {
|
||||||
if (!transmitters.containsKey(uuid)) return 0;
|
if (!transmitters.containsKey(uuid)) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
int level = 0;
|
int level = 0;
|
||||||
for (Location l : transmitters.get(uuid)) {
|
for (Location l : transmitters.get(uuid)) {
|
||||||
level = level + l.getBlockY();
|
SlimefunItem sfi = BlockStorage.check(l);
|
||||||
|
if (sfi instanceof GPSTransmitter)
|
||||||
|
level += ((GPSTransmitter) sfi).getMultiplier(l.getBlockY());
|
||||||
}
|
}
|
||||||
|
|
||||||
return level;
|
return level;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -76,8 +88,9 @@ public class GPSNetwork {
|
|||||||
menu.addMenuClickHandler(2,
|
menu.addMenuClickHandler(2,
|
||||||
(pl, slot, item, action) -> false
|
(pl, slot, item, action) -> false
|
||||||
);
|
);
|
||||||
|
|
||||||
menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGRjZmJhNThmYWYxZjY0ODQ3ODg0MTExODIyYjY0YWZhMjFkN2ZjNjJkNDQ4MWYxNGYzZjNiY2I2MzMwIn19fQ=="), "&7Network Info", "", "&8\u21E8 &7Status: " + (getNetworkComplexity(p.getUniqueId()) > 0 ? "&2&lONLINE": "&4&lOFFLINE"), "&8\u21E8 &7Complexity: &r" + getNetworkComplexity(p.getUniqueId())));
|
int complexity = getNetworkComplexity(p.getUniqueId());
|
||||||
|
menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGRjZmJhNThmYWYxZjY0ODQ3ODg0MTExODIyYjY0YWZhMjFkN2ZjNjJkNDQ4MWYxNGYzZjNiY2I2MzMwIn19fQ=="), "&7Network Info", "", "&8\u21E8 &7Status: " + (complexity > 0 ? "&2&lONLINE": "&4&lOFFLINE"), "&8\u21E8 &7Complexity: &r" + complexity));
|
||||||
menu.addMenuClickHandler(4,
|
menu.addMenuClickHandler(4,
|
||||||
(pl, slot, item, action) -> false
|
(pl, slot, item, action) -> false
|
||||||
);
|
);
|
||||||
@ -91,9 +104,13 @@ public class GPSNetwork {
|
|||||||
int index = 0;
|
int index = 0;
|
||||||
for (Location l : getTransmitters(p.getUniqueId())) {
|
for (Location l : getTransmitters(p.getUniqueId())) {
|
||||||
if (index >= inventory.length) break;
|
if (index >= inventory.length) break;
|
||||||
|
|
||||||
|
SlimefunItem sfi = BlockStorage.check(l);
|
||||||
|
if (!(sfi instanceof GPSTransmitter)) continue;
|
||||||
|
|
||||||
int slot = inventory[index];
|
int slot = inventory[index];
|
||||||
|
|
||||||
menu.addItem(slot, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS Transmitter", "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &7Signal Strength: &r" + l.getBlockY(), "&8\u21E8 &7Ping: &r" + DoubleHandler.fixDouble(1000D / l.getY()) + "ms"));
|
menu.addItem(slot, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&bGPS Transmitter", "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &7Signal Strength: &r" + ((GPSTransmitter) sfi).getMultiplier(l.getBlockY()), "&8\u21E8 &7Ping: &r" + DoubleHandler.fixDouble(1000D / l.getY()) + "ms"));
|
||||||
menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> false);
|
menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> false);
|
||||||
|
|
||||||
index++;
|
index++;
|
||||||
@ -135,8 +152,9 @@ public class GPSNetwork {
|
|||||||
openTransmitterControlPanel(pl);
|
openTransmitterControlPanel(pl);
|
||||||
return false;
|
return false;
|
||||||
});
|
});
|
||||||
|
|
||||||
menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGRjZmJhNThmYWYxZjY0ODQ3ODg0MTExODIyYjY0YWZhMjFkN2ZjNjJkNDQ4MWYxNGYzZjNiY2I2MzMwIn19fQ=="), "&7Network Info", "", "&8\u21E8 &7Status: " + (getNetworkComplexity(p.getUniqueId()) > 0 ? "&2&lONLINE": "&4&lOFFLINE"), "&8\u21E8 &7Complexity: &r" + getNetworkComplexity(p.getUniqueId())));
|
int complexity = getNetworkComplexity(p.getUniqueId());
|
||||||
|
menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGRjZmJhNThmYWYxZjY0ODQ3ODg0MTExODIyYjY0YWZhMjFkN2ZjNjJkNDQ4MWYxNGYzZjNiY2I2MzMwIn19fQ=="), "&7Network Info", "", "&8\u21E8 &7Status: " + (complexity > 0 ? "&2&lONLINE": "&4&lOFFLINE"), "&8\u21E8 &7Complexity: &r" + complexity));
|
||||||
menu.addMenuClickHandler(4, (pl, slot, item, action) -> false);
|
menu.addMenuClickHandler(4, (pl, slot, item, action) -> false);
|
||||||
|
|
||||||
menu.addItem(6, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &e(Selected)"));
|
menu.addItem(6, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &e(Selected)"));
|
||||||
@ -153,7 +171,7 @@ public class GPSNetwork {
|
|||||||
menu.addItem(slot, new CustomItem(globe, entry.getKey(), "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &cClick to delete"));
|
menu.addItem(slot, new CustomItem(globe, entry.getKey(), "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &cClick to delete"));
|
||||||
menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> {
|
menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> {
|
||||||
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', entry.getKey())).toUpperCase().replace(' ', '_');
|
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', entry.getKey())).toUpperCase().replace(' ', '_');
|
||||||
Config cfg = new Config("data-storage/Slimefun/waypoints/" + pl.getUniqueId().toString() + ".yml");
|
Config cfg = new Config(DIRECTORY + pl.getUniqueId().toString() + ".yml");
|
||||||
cfg.setValue(id, null);
|
cfg.setValue(id, null);
|
||||||
cfg.save();
|
cfg.save();
|
||||||
pl.playSound(pl.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F);
|
pl.playSound(pl.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F);
|
||||||
@ -174,12 +192,14 @@ public class GPSNetwork {
|
|||||||
|
|
||||||
public Map<String, Location> getWaypoints(UUID uuid) {
|
public Map<String, Location> getWaypoints(UUID uuid) {
|
||||||
Map<String, Location> map = new HashMap<>();
|
Map<String, Location> map = new HashMap<>();
|
||||||
Config cfg = new Config("data-storage/Slimefun/waypoints/" + uuid.toString() + ".yml");
|
Config cfg = new Config(DIRECTORY + uuid.toString() + ".yml");
|
||||||
for (String key: cfg.getKeys()) {
|
|
||||||
|
for (String key : cfg.getKeys()) {
|
||||||
if (cfg.contains(key + ".world") && Bukkit.getWorld(cfg.getString(key + ".world")) != null) {
|
if (cfg.contains(key + ".world") && Bukkit.getWorld(cfg.getString(key + ".world")) != null) {
|
||||||
map.put(cfg.getString(key + ".name"), cfg.getLocation(key));
|
map.put(cfg.getString(key + ".name"), cfg.getLocation(key));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return map;
|
return map;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,6 +208,7 @@ public class GPSNetwork {
|
|||||||
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.max", true);
|
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.max", true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.new", true);
|
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.new", true);
|
||||||
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 0.5F, 1F);
|
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 0.5F, 1F);
|
||||||
|
|
||||||
@ -201,12 +222,14 @@ public class GPSNetwork {
|
|||||||
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.max", true);
|
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.max", true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
Config cfg = new Config("data-storage/Slimefun/waypoints/" + p.getUniqueId().toString() + ".yml");
|
|
||||||
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', name)).toUpperCase()
|
Config cfg = new Config(DIRECTORY + p.getUniqueId().toString() + ".yml");
|
||||||
.replace(' ', '_');
|
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', name)).toUpperCase().replace(' ', '_');
|
||||||
|
|
||||||
cfg.setValue(id, l);
|
cfg.setValue(id, l);
|
||||||
cfg.setValue(id + ".name", name);
|
cfg.setValue(id + ".name", name);
|
||||||
cfg.save();
|
cfg.save();
|
||||||
|
|
||||||
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1F, 1F);
|
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 1F, 1F);
|
||||||
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.added", true);
|
SlimefunPlugin.getLocal().sendMessage(p, "gps.waypoint.added", true);
|
||||||
}
|
}
|
||||||
@ -215,17 +238,18 @@ public class GPSNetwork {
|
|||||||
return transmitters.getOrDefault(uuid, new HashSet<>());
|
return transmitters.getOrDefault(uuid, new HashSet<>());
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void openTeleporterGUI(Player p, UUID uuid, Block b, final int complexity) {
|
public void openTeleporterGUI(Player p, UUID uuid, Block b, final int complexity) {
|
||||||
if (SlimefunPlugin.getUtilities().teleporterUsers.contains(p.getUniqueId())) return;
|
if (SlimefunPlugin.getUtilities().teleporterUsers.contains(p.getUniqueId())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
p.playSound(p.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F);
|
p.playSound(p.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F);
|
||||||
SlimefunPlugin.getUtilities().teleporterUsers.add(p.getUniqueId());
|
SlimefunPlugin.getUtilities().teleporterUsers.add(p.getUniqueId());
|
||||||
|
|
||||||
ChestMenu menu = new ChestMenu("&3Teleporter");
|
ChestMenu menu = new ChestMenu("&3Teleporter");
|
||||||
|
|
||||||
menu.addMenuCloseHandler(pl -> SlimefunPlugin.getUtilities().teleporterUsers.remove(pl.getUniqueId()));
|
menu.addMenuCloseHandler(pl -> SlimefunPlugin.getUtilities().teleporterUsers.remove(pl.getUniqueId()));
|
||||||
|
|
||||||
for (int slot : teleporter_border) {
|
for (int slot : teleporterBorder) {
|
||||||
menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
|
menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
|
||||||
(pl, slotn, item, action) -> false
|
(pl, slotn, item, action) -> false
|
||||||
);
|
);
|
||||||
@ -237,9 +261,10 @@ public class GPSNetwork {
|
|||||||
|
|
||||||
final Location source = new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + 2D, b.getZ() + 0.5D);
|
final Location source = new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + 2D, b.getZ() + 0.5D);
|
||||||
int index = 0;
|
int index = 0;
|
||||||
for (final Map.Entry<String, Location> entry: Slimefun.getGPSNetwork().getWaypoints(uuid).entrySet()) {
|
|
||||||
if (index >= teleporter_inventory.length) break;
|
for (final Map.Entry<String, Location> entry : Slimefun.getGPSNetwork().getWaypoints(uuid).entrySet()) {
|
||||||
int slot = teleporter_inventory[index];
|
if (index >= teleporterInventory.length) break;
|
||||||
|
int slot = teleporterInventory[index];
|
||||||
|
|
||||||
final Location l = entry.getValue();
|
final Location l = entry.getValue();
|
||||||
ItemStack globe = getPlanet(entry);
|
ItemStack globe = getPlanet(entry);
|
||||||
|
@ -3,52 +3,61 @@ package me.mrCookieSlime.Slimefun.Lists;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.recipes.MinecraftRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunGadget;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunRecipes;
|
import me.mrCookieSlime.Slimefun.api.SlimefunRecipes;
|
||||||
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
public class RecipeType {
|
public class RecipeType {
|
||||||
|
|
||||||
public static final RecipeType MULTIBLOCK = new RecipeType(new CustomItem(Material.BRICKS, "&bMultiBlock", "", "&a&oBuild it in the World"));
|
public static final RecipeType MULTIBLOCK = new RecipeType(new CustomItem(Material.BRICKS, "&bMultiBlock", "", "&a&oBuild it in the World"));
|
||||||
public static final RecipeType ARMOR_FORGE = new RecipeType(new CustomItem(Material.ANVIL, "&bArmor Forge", "", "&a&oCraft it in an Armor Forge"), "ARMOR_FORGE");
|
public static final RecipeType ARMOR_FORGE = new RecipeType((SlimefunItemStack) SlimefunItems.ARMOR_FORGE, "", "&a&oCraft it in an Armor Forge");
|
||||||
public static final RecipeType GRIND_STONE = new RecipeType(new CustomItem(Material.DISPENSER, "&bGrind Stone", "", "&a&oGrind it using the Grind Stone"), "GRIND_STONE");
|
public static final RecipeType GRIND_STONE = new RecipeType((SlimefunItemStack) SlimefunItems.GRIND_STONE, "", "&a&oGrind it using the Grind Stone");
|
||||||
public static final RecipeType MOB_DROP = new RecipeType(new CustomItem(Material.IRON_SWORD, "&bMob Drop", "", "&a&oKill the specified Mob to obtain this Item"));
|
public static final RecipeType MOB_DROP = new RecipeType(new CustomItem(Material.IRON_SWORD, "&bMob Drop", "", "&a&oKill the specified Mob to obtain this Item"));
|
||||||
public static final RecipeType SMELTERY = new RecipeType(new CustomItem(Material.FURNACE, "&6Smeltery", "", "&a&oSmelt it using a Smeltery"), "SMELTERY");
|
public static final RecipeType SMELTERY = new RecipeType((SlimefunItemStack) SlimefunItems.SMELTERY, "", "&a&oSmelt it using a Smeltery");
|
||||||
public static final RecipeType ORE_CRUSHER = new RecipeType(new CustomItem(Material.DISPENSER, "&bOre Crusher", "", "&a&oCrush it using the Ore Crusher"), "ORE_CRUSHER");
|
public static final RecipeType ORE_CRUSHER = new RecipeType((SlimefunItemStack) SlimefunItems.ORE_CRUSHER, "", "&a&oCrush it using the Ore Crusher");
|
||||||
public static final RecipeType GOLD_PAN = new RecipeType(new CustomItem(Material.BOWL, "&bGold Pan", "", "&a&oUse a Gold Pan on Gravel to obtain this Item"));
|
public static final RecipeType GOLD_PAN = new RecipeType((SlimefunItemStack) SlimefunItems.GOLD_PAN, "", "&a&oUse a Gold Pan on Gravel to obtain this Item");
|
||||||
public static final RecipeType COMPRESSOR = new RecipeType(new CustomItem(Material.PISTON, "&bCompressor", "", "&a&oCompress it using the Compressor"), "COMPRESSOR");
|
public static final RecipeType COMPRESSOR = new RecipeType((SlimefunItemStack) SlimefunItems.COMPRESSOR, "", "&a&oCompress it using the Compressor");
|
||||||
public static final RecipeType PRESSURE_CHAMBER = new RecipeType(new CustomItem(Material.GLASS, "&bPressure Chamber", "", "&a&oCompress it using the Pressure Chamber"), "PRESSURE_CHAMBER");
|
public static final RecipeType PRESSURE_CHAMBER = new RecipeType((SlimefunItemStack) SlimefunItems.PRESSURE_CHAMBER, "", "&a&oCompress it using the Pressure Chamber");
|
||||||
public static final RecipeType OVEN = new RecipeType(new CustomItem(Material.FURNACE, "&bOven", "", "&a&oSmelt it in an Oven"), "OVEN");
|
public static final RecipeType MAGIC_WORKBENCH = new RecipeType((SlimefunItemStack) SlimefunItems.MAGIC_WORKBENCH, "", "&a&oCraft it in a Magic Workbench");
|
||||||
public static final RecipeType MAGIC_WORKBENCH = new RecipeType(new CustomItem(Material.BOOKSHELF, "&6Magic Workbench", "", "&a&oCraft it in a Magic Workbench"), "MAGIC_WORKBENCH");
|
public static final RecipeType ORE_WASHER = new RecipeType((SlimefunItemStack) SlimefunItems.ORE_WASHER, "", "&a&oWash it in an Ore Washer");
|
||||||
public static final RecipeType ORE_WASHER = new RecipeType(new CustomItem(Material.CAULDRON, "&6Ore Washer", "", "&a&oWash it in an Ore Washer"), "ORE_WASHER");
|
public static final RecipeType ENHANCED_CRAFTING_TABLE = new RecipeType((SlimefunItemStack) SlimefunItems.ENHANCED_CRAFTING_TABLE, "", "&a&oA regular Crafting Table cannot", "&a&ohold this massive Amount of Power...");
|
||||||
public static final RecipeType ENHANCED_CRAFTING_TABLE = new RecipeType(new CustomItem(Material.CRAFTING_TABLE, "&eEnhanced Crafting Table", "", "&a&oA regular Crafting Table cannot", "&a&ohold this massive Amount of Power..."), "ENHANCED_CRAFTING_TABLE");
|
public static final RecipeType JUICER = new RecipeType((SlimefunItemStack) SlimefunItems.JUICER, "", "&a&oUsed for Juice Creation");
|
||||||
public static final RecipeType JUICER = new RecipeType(new CustomItem(Material.GLASS_BOTTLE, "&eJuicer", "", "&a&oUsed for Juice Creation"), "JUICER");
|
public static final RecipeType ANCIENT_ALTAR = new RecipeType((SlimefunItemStack) SlimefunItems.ANCIENT_ALTAR, "", "&dYou will need to craft this Item", "&dby performing an Ancient Altar Ritual");
|
||||||
public static final RecipeType ANCIENT_ALTAR = new RecipeType(new CustomItem(Material.ENCHANTING_TABLE, "&4Ancient Altar", "", "&dYou will need to craft this Item", "&dby performing an Ancient Altar Ritual"));
|
public static final RecipeType HEATED_PRESSURE_CHAMBER = new RecipeType((SlimefunItemStack) SlimefunItems.HEATED_PRESSURE_CHAMBER, "", "&a&oCraft this Item in a", "&a&oHeated Pressure Chamber");
|
||||||
public static final RecipeType HEATED_PRESSURE_CHAMBER = new RecipeType(new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS), "&cHeated Pressure Chamber", "", "&a&oCraft this Item in a", "&a&oHeated Pressure Chamber"), "HEATED_PRESSURE_CHAMBER");
|
|
||||||
|
|
||||||
public static final RecipeType SHAPED_RECIPE = new RecipeType(new CustomItem(Material.CRAFTING_TABLE, "&eShaped Recipe", "", "&a&oJust a standard Recipe in the Workbench..."));
|
public static final RecipeType SHAPED_RECIPE = new RecipeType(new CustomItem(Material.CRAFTING_TABLE, "&eShaped Recipe", "", "&a&oJust a standard Recipe in the Workbench..."));
|
||||||
public static final RecipeType SHAPELESS_RECIPE = new RecipeType(new CustomItem(Material.CRAFTING_TABLE, "&eShapeless Recipe", "", "&a&oJust a standard Recipe in the Workbench..."));
|
public static final RecipeType SHAPELESS_RECIPE = new RecipeType(new CustomItem(Material.CRAFTING_TABLE, "&eShapeless Recipe", "", "&a&oJust a standard Recipe in the Workbench..."));
|
||||||
public static final RecipeType FURNACE = new RecipeType(new CustomItem(Material.FURNACE, "&eFurnace Recipe", "", "&a&oJust smelt it in a regular Furnace"));
|
public static final RecipeType FURNACE = new RecipeType(new CustomItem(Material.FURNACE, "&eFurnace Recipe", "", "&a&oJust smelt it in a regular Furnace"));
|
||||||
public static final RecipeType NULL = new RecipeType(null);
|
public static final RecipeType NULL = new RecipeType((ItemStack) null);
|
||||||
|
|
||||||
private ItemStack item;
|
private final ItemStack item;
|
||||||
private String machine;
|
private final String machine;
|
||||||
|
|
||||||
public RecipeType(ItemStack item) {
|
|
||||||
this.item = item;
|
|
||||||
this.machine = "";
|
|
||||||
}
|
|
||||||
|
|
||||||
public RecipeType(ItemStack item, String machine) {
|
public RecipeType(ItemStack item, String machine) {
|
||||||
this.item = item;
|
this.item = item;
|
||||||
this.machine = machine;
|
this.machine = machine;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public RecipeType(SlimefunItemStack slimefunItem, String... lore) {
|
||||||
|
this.item = new CustomItem(slimefunItem, null, lore);
|
||||||
|
this.machine = slimefunItem.getItemID();
|
||||||
|
}
|
||||||
|
|
||||||
|
public RecipeType(ItemStack item) {
|
||||||
|
this(item, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
public RecipeType(MinecraftRecipe<?> recipe) {
|
||||||
|
this(new ItemStack(recipe.getMachine()));
|
||||||
|
}
|
||||||
|
|
||||||
public RecipeType(String machine, int seconds, ItemStack[] input, ItemStack[] output) {
|
public RecipeType(String machine, int seconds, ItemStack[] input, ItemStack[] output) {
|
||||||
this.machine = machine;
|
this.machine = machine;
|
||||||
this.item = getMachine().getItem();
|
this.item = getMachine().getItem();
|
||||||
|
@ -43,6 +43,7 @@ public final class SlimefunItems {
|
|||||||
|
|
||||||
/* Gadgets */
|
/* Gadgets */
|
||||||
public static final ItemStack GOLD_PAN = new SlimefunItemStack("GOLD_PAN", Material.BOWL, "&6Gold Pan", "&a&oCan get you all kinds of Goodies...", "", "&7&eRight Click&7 to pan various Stuff out of Gravel");
|
public static final ItemStack GOLD_PAN = new SlimefunItemStack("GOLD_PAN", Material.BOWL, "&6Gold Pan", "&a&oCan get you all kinds of Goodies...", "", "&7&eRight Click&7 to pan various Stuff out of Gravel");
|
||||||
|
public static final ItemStack NETHER_GOLD_PAN = new SlimefunItemStack("NETHER_GOLD_PAN", Material.BOWL, "&4Nether Gold Pan", "", "&7&eRight Click&7 to pan various stuff out of Soul Sand");
|
||||||
public static final ItemStack PARACHUTE = new SlimefunItemStack("PARACHUTE", Material.LEATHER_CHESTPLATE, Color.WHITE, "&r&lParachute", "", "&7Hold &eShift&7 to use");
|
public static final ItemStack PARACHUTE = new SlimefunItemStack("PARACHUTE", Material.LEATHER_CHESTPLATE, Color.WHITE, "&r&lParachute", "", "&7Hold &eShift&7 to use");
|
||||||
public static final ItemStack GRAPPLING_HOOK = new SlimefunItemStack("GRAPPLING_HOOK", Material.LEAD, "&6Grappling Hook", "", "&7&eRight Click&7 to use");
|
public static final ItemStack GRAPPLING_HOOK = new SlimefunItemStack("GRAPPLING_HOOK", Material.LEAD, "&6Grappling Hook", "", "&7&eRight Click&7 to use");
|
||||||
public static final ItemStack SOLAR_HELMET = new SlimefunItemStack("SOLAR_HELMET", Material.IRON_HELMET, "&bSolar Helmet", "", "&a&oCharges held Items and Armor");
|
public static final ItemStack SOLAR_HELMET = new SlimefunItemStack("SOLAR_HELMET", Material.IRON_HELMET, "&bSolar Helmet", "", "&a&oCharges held Items and Armor");
|
||||||
@ -130,7 +131,6 @@ public final class SlimefunItems {
|
|||||||
/* Food */
|
/* Food */
|
||||||
public static final ItemStack FORTUNE_COOKIE = new SlimefunItemStack("FORTUNE_COOKIE", Material.COOKIE, "&6Fortune Cookie", "", "&a&oTells you stuff about your Future :o");
|
public static final ItemStack FORTUNE_COOKIE = new SlimefunItemStack("FORTUNE_COOKIE", Material.COOKIE, "&6Fortune Cookie", "", "&a&oTells you stuff about your Future :o");
|
||||||
public static final ItemStack DIET_COOKIE = new SlimefunItemStack("DIET_COOKIE", Material.COOKIE, "&6Diet Cookie", "", "&aA very &olightweight &r&acookie.");
|
public static final ItemStack DIET_COOKIE = new SlimefunItemStack("DIET_COOKIE", Material.COOKIE, "&6Diet Cookie", "", "&aA very &olightweight &r&acookie.");
|
||||||
public static final ItemStack BEEF_JERKY = new SlimefunItemStack("BEEF_JERKY", Material.COOKED_BEEF, "&6Beef Jerky", "", "&a&oSaturating");
|
|
||||||
public static final ItemStack MAGIC_SUGAR = new SlimefunItemStack("MAGIC_SUGAR", Material.SUGAR, "&6Magic Sugar", "", "&a&oFeel the Power of Hermes!");
|
public static final ItemStack MAGIC_SUGAR = new SlimefunItemStack("MAGIC_SUGAR", Material.SUGAR, "&6Magic Sugar", "", "&a&oFeel the Power of Hermes!");
|
||||||
public static final ItemStack MONSTER_JERKY = new SlimefunItemStack("MONSTER_JERKY", Material.ROTTEN_FLESH, "&6Monster Jerky", "", "&a&oNo longer hungry");
|
public static final ItemStack MONSTER_JERKY = new SlimefunItemStack("MONSTER_JERKY", Material.ROTTEN_FLESH, "&6Monster Jerky", "", "&a&oNo longer hungry");
|
||||||
public static final ItemStack APPLE_JUICE = new SlimefunItemStack("APPLE_JUICE", new CustomPotion("&cApple Juice", Color.RED, new PotionEffect(PotionEffectType.SATURATION, 6, 0), "", "&7&oRestores &b&o" + "3.0" + " &7&oHunger"));
|
public static final ItemStack APPLE_JUICE = new SlimefunItemStack("APPLE_JUICE", new CustomPotion("&cApple Juice", Color.RED, new PotionEffect(PotionEffectType.SATURATION, 6, 0), "", "&7&oRestores &b&o" + "3.0" + " &7&oHunger"));
|
||||||
@ -140,6 +140,13 @@ public final class SlimefunItems {
|
|||||||
public static final ItemStack SWEET_BERRY_JUICE = new SlimefunItemStack("SWEET_BERRY_JUICE", new CustomPotion("&cSweet Berry Juice", Color.RED, new PotionEffect(PotionEffectType.SATURATION, 6, 0), "", "&7&oRestores &b&o" + "3.0" + " &7&oHunger"));
|
public static final ItemStack SWEET_BERRY_JUICE = new SlimefunItemStack("SWEET_BERRY_JUICE", new CustomPotion("&cSweet Berry Juice", Color.RED, new PotionEffect(PotionEffectType.SATURATION, 6, 0), "", "&7&oRestores &b&o" + "3.0" + " &7&oHunger"));
|
||||||
public static final ItemStack GOLDEN_APPLE_JUICE = new SlimefunItemStack("GOLDEN_APPLE_JUICE", new CustomPotion("&bGolden Apple Juice", Color.YELLOW, new PotionEffect(PotionEffectType.ABSORPTION, 20 * 20, 0)));
|
public static final ItemStack GOLDEN_APPLE_JUICE = new SlimefunItemStack("GOLDEN_APPLE_JUICE", new CustomPotion("&bGolden Apple Juice", Color.YELLOW, new PotionEffect(PotionEffectType.ABSORPTION, 20 * 20, 0)));
|
||||||
|
|
||||||
|
public static final ItemStack BEEF_JERKY = new SlimefunItemStack("BEEF_JERKY", Material.COOKED_BEEF, "&6Beef Jerky", "", "&rExtra saturating!");
|
||||||
|
public static final ItemStack PORK_JERKY = new SlimefunItemStack("PORK_JERKY", Material.COOKED_PORKCHOP, "&6Pork Jerky", "", "&rExtra saturating!");
|
||||||
|
public static final ItemStack CHICKEN_JERKY = new SlimefunItemStack("CHICKEN_JERKY", Material.COOKED_CHICKEN, "&6Chicken Jerky", "", "&rExtra saturating!");
|
||||||
|
public static final ItemStack MUTTON_JERKY = new SlimefunItemStack("MUTTON_JERKY", Material.COOKED_MUTTON, "&6Mutton Jerky", "", "&rExtra saturating!");
|
||||||
|
public static final ItemStack RABBIT_JERKY = new SlimefunItemStack("RABBIT_JERKY", Material.COOKED_RABBIT, "&6Rabbit Jerky", "", "&rExtra saturating!");
|
||||||
|
public static final ItemStack FISH_JERKY = new SlimefunItemStack("FISH_JERKY", Material.COOKED_COD, "&6Fish Jerky", "", "&rExtra saturating!");
|
||||||
|
|
||||||
/* Christmas */
|
/* Christmas */
|
||||||
public static final ItemStack CHRISTMAS_MILK = new CustomPotion("&6Glass of Milk", Color.WHITE, new PotionEffect(PotionEffectType.SATURATION, 5, 0), "", "&7&oRestores &b&o" + "2.5" + " &7&oHunger");
|
public static final ItemStack CHRISTMAS_MILK = new CustomPotion("&6Glass of Milk", Color.WHITE, new PotionEffect(PotionEffectType.SATURATION, 5, 0), "", "&7&oRestores &b&o" + "2.5" + " &7&oHunger");
|
||||||
public static final ItemStack CHRISTMAS_CHOCOLATE_MILK = new CustomPotion("&6Chocolate Milk", Color.MAROON, new PotionEffect(PotionEffectType.SATURATION, 12, 0), "", "&7&oRestores &b&o" + "6.0" + " &7&oHunger");
|
public static final ItemStack CHRISTMAS_CHOCOLATE_MILK = new CustomPotion("&6Chocolate Milk", Color.MAROON, new PotionEffect(PotionEffectType.SATURATION, 12, 0), "", "&7&oRestores &b&o" + "6.0" + " &7&oHunger");
|
||||||
@ -508,7 +515,7 @@ public final class SlimefunItems {
|
|||||||
@Deprecated
|
@Deprecated
|
||||||
public static final ItemStack ADVANCED_DIGITAL_MINER = new CustomItem(Material.DIAMOND_PICKAXE, "&6Advanced Digital Miner", "", "&4DEPRECATED", "&cThis machine will soon be removed!");
|
public static final ItemStack ADVANCED_DIGITAL_MINER = new CustomItem(Material.DIAMOND_PICKAXE, "&6Advanced Digital Miner", "", "&4DEPRECATED", "&cThis machine will soon be removed!");
|
||||||
|
|
||||||
public static final ItemStack AUTOMATED_PANNING_MACHINE = new SlimefunItemStack("AUTOMATED_PANNING_MACHINE", Material.BOWL, "&aAutomated Panning Machine", "", "&aA MultiBlock Version of the Gold Pan");
|
public static final ItemStack AUTOMATED_PANNING_MACHINE = new SlimefunItemStack("AUTOMATED_PANNING_MACHINE", Material.BOWL, "&eAutomated Panning Machine", "", "&rA MultiBlock Version of the Gold Pan", "&rand Nether Gold Pan combined in one machine.");
|
||||||
public static final ItemStack OUTPUT_CHEST = new SlimefunItemStack("OUTPUT_CHEST", Material.CHEST, "&4Output Chest", "", "&c&oA basic machine will try to put", "&c&oitems in this chest if it's placed", "&c&oadjacent to the dispenser.");
|
public static final ItemStack OUTPUT_CHEST = new SlimefunItemStack("OUTPUT_CHEST", Material.CHEST, "&4Output Chest", "", "&c&oA basic machine will try to put", "&c&oitems in this chest if it's placed", "&c&oadjacent to the dispenser.");
|
||||||
public static final ItemStack HOLOGRAM_PROJECTOR = new SlimefunItemStack("HOLOGRAM_PROJECTOR", Material.QUARTZ_SLAB, "&bHologram Projector", "", "&rProjects an Editable Hologram");
|
public static final ItemStack HOLOGRAM_PROJECTOR = new SlimefunItemStack("HOLOGRAM_PROJECTOR", Material.QUARTZ_SLAB, "&bHologram Projector", "", "&rProjects an Editable Hologram");
|
||||||
|
|
||||||
@ -601,7 +608,7 @@ public final class SlimefunItems {
|
|||||||
imR.setEffect(FireworkEffect.builder().with(Type.BURST).withColor(Color.FUCHSIA).build());
|
imR.setEffect(FireworkEffect.builder().with(Type.BURST).withColor(Color.FUCHSIA).build());
|
||||||
imR.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&7Ancient Rune &8&l[&d&lRainbow&8&l]"));
|
imR.setDisplayName(ChatColor.translateAlternateColorCodes('&', "&7Ancient Rune &8&l[&d&lRainbow&8&l]"));
|
||||||
itemR.setItemMeta(imR);
|
itemR.setItemMeta(imR);
|
||||||
RUNE_RAINBOW = itemR;
|
RUNE_RAINBOW = new SlimefunItemStack("ANCIENT_RUNE_RAINBOW", itemR);
|
||||||
|
|
||||||
ItemStack itemL = new ItemStack(Material.FIREWORK_STAR);
|
ItemStack itemL = new ItemStack(Material.FIREWORK_STAR);
|
||||||
FireworkEffectMeta imL = (FireworkEffectMeta) itemL.getItemMeta();
|
FireworkEffectMeta imL = (FireworkEffectMeta) itemL.getItemMeta();
|
||||||
@ -742,76 +749,78 @@ public final class SlimefunItems {
|
|||||||
public static final ItemStack NETHER_DRILL = new CustomItem(Material.RED_TERRACOTTA, "&4Nether Drill", "", "&rAllows you to mine Nether Ice", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7102 J/s", "", "&c&l! &cCan only be used in the Nether!", "&c&l! &cMake sure to Geo-Scan the Chunk first");
|
public static final ItemStack NETHER_DRILL = new CustomItem(Material.RED_TERRACOTTA, "&4Nether Drill", "", "&rAllows you to mine Nether Ice", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7102 J/s", "", "&c&l! &cCan only be used in the Nether!", "&c&l! &cMake sure to Geo-Scan the Chunk first");
|
||||||
|
|
||||||
// Cargo
|
// Cargo
|
||||||
public static final ItemStack CARGO_MANAGER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0="), "&6Cargo Manager", "", "&rCore Component of an Item Transport Network");
|
public static final ItemStack CARGO_MANAGER = new SlimefunItemStack("CARGO_MANAGER", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTUxMGJjODUzNjJhMTMwYTZmZjlkOTFmZjExZDZmYTQ2ZDdkMTkxMmEzNDMxZjc1MTU1OGVmM2M0ZDljMiJ9fX0=", "&6Cargo Manager", "", "&rCore Component of an Item Transport Network");
|
||||||
public static final ItemStack CARGO_NODE = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMDdiN2VmNmZkNzg2NDg2NWMzMWMxZGM4N2JlZDI0YWI1OTczNTc5ZjVjNjYzOGZlY2I4ZGVkZWI0NDNmZjAifX19"), "&7Cargo Node &c(Connector)", "", "&rCargo Connector Pipe");
|
public static final ItemStack CARGO_NODE = new SlimefunItemStack("CARGO_NODE", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMDdiN2VmNmZkNzg2NDg2NWMzMWMxZGM4N2JlZDI0YWI1OTczNTc5ZjVjNjYzOGZlY2I4ZGVkZWI0NDNmZjAifX19", "&7Cargo Node &c(Connector)", "", "&rCargo Connector Pipe");
|
||||||
public static final ItemStack CARGO_INPUT = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTZkMWMxYTY5YTNkZTlmZWM5NjJhNzdiZjNiMmUzNzZkZDI1Yzg3M2EzZDhmMTRmMWRkMzQ1ZGFlNGM0In19fQ=="), "&7Cargo Node &c(Input)", "", "&rCargo Input Pipe");
|
public static final ItemStack CARGO_INPUT = new SlimefunItemStack("CARGO_NODE_INPUT", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTZkMWMxYTY5YTNkZTlmZWM5NjJhNzdiZjNiMmUzNzZkZDI1Yzg3M2EzZDhmMTRmMWRkMzQ1ZGFlNGM0In19fQ==", "&7Cargo Node &c(Input)", "", "&rCargo Input Pipe");
|
||||||
public static final ItemStack CARGO_OUTPUT = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTViMjFmZDQ4MGMxYzQzYmYzYjlmODQyYzg2OWJkYzNiYzVhY2MyNTk5YmYyZWI2YjhhMWM5NWRjZTk3OGYifX19"), "&7Cargo Node &c(Output)", "", "&rCargo Output Pipe");
|
public static final ItemStack CARGO_OUTPUT = new SlimefunItemStack("CARGO_NODE_OUTPUT", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTViMjFmZDQ4MGMxYzQzYmYzYjlmODQyYzg2OWJkYzNiYzVhY2MyNTk5YmYyZWI2YjhhMWM5NWRjZTk3OGYifX19", "&7Cargo Node &c(Output)", "", "&rCargo Output Pipe");
|
||||||
public static final ItemStack CARGO_OUTPUT_ADVANCED = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTViMjFmZDQ4MGMxYzQzYmYzYjlmODQyYzg2OWJkYzNiYzVhY2MyNTk5YmYyZWI2YjhhMWM5NWRjZTk3OGYifX19"), "&6Advanced Cargo Node &c(Output)", "", "&rCargo Output Pipe");
|
public static final ItemStack CARGO_OUTPUT_ADVANCED = new SlimefunItemStack("CARGO_NODE_OUTPUT_ADVANCED", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTViMjFmZDQ4MGMxYzQzYmYzYjlmODQyYzg2OWJkYzNiYzVhY2MyNTk5YmYyZWI2YjhhMWM5NWRjZTk3OGYifX19", "&6Advanced Cargo Node &c(Output)", "", "&rCargo Output Pipe");
|
||||||
|
|
||||||
public static final ItemStack AUTO_BREEDER = new CustomItem(Material.HAY_BLOCK, "&eAuto-Breeder", "", "&rRuns on &aOrganic Food", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &760 J/Animal");
|
public static final ItemStack AUTO_BREEDER = new SlimefunItemStack("AUTO_BREEDER", Material.HAY_BLOCK, "&eAuto-Breeder", "", "&rRuns on &aOrganic Food", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &760 J/Animal");
|
||||||
|
|
||||||
public static final ItemStack ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9X");
|
public static final ItemStack ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9X");
|
||||||
public static final ItemStack WHEAT_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Wheat");
|
public static final ItemStack WHEAT_ORGANIC_FOOD = new SlimefunItemStack("ORGANIC_FOOD_WHEAT", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Food", "&7Content: &9Wheat");
|
||||||
public static final ItemStack CARROT_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Carrots");
|
public static final ItemStack CARROT_ORGANIC_FOOD = new SlimefunItemStack("ORGANIC_FOOD_CARROT", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Food", "&7Content: &9Carrots");
|
||||||
public static final ItemStack POTATO_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Potatoes");
|
public static final ItemStack POTATO_ORGANIC_FOOD = new SlimefunItemStack("ORGANIC_FOOD_POTATO", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Food", "&7Content: &9Potatoes");
|
||||||
public static final ItemStack SEEDS_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Seeds");
|
public static final ItemStack SEEDS_ORGANIC_FOOD = new SlimefunItemStack("ORGANIC_FOOD_SEEDS", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Food", "&7Content: &9Seeds");
|
||||||
public static final ItemStack BEETROOT_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Beetroot");
|
public static final ItemStack BEETROOT_ORGANIC_FOOD = new SlimefunItemStack("ORGANIC_FOOD_BEETROOT", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Food", "&7Content: &9Beetroot");
|
||||||
public static final ItemStack MELON_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Melon");
|
public static final ItemStack MELON_ORGANIC_FOOD = new SlimefunItemStack("ORGANIC_FOOD_MELON", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Food", "&7Content: &9Melon");
|
||||||
public static final ItemStack APPLE_ORGANIC_FOOD = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Food", "&7Content: &9Apple");
|
public static final ItemStack APPLE_ORGANIC_FOOD = new SlimefunItemStack("ORGANIC_FOOD_APPLE", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Food", "&7Content: &9Apple");
|
||||||
|
public static final ItemStack SWEET_BERRIES_ORGANIC_FOOD = new SlimefunItemStack("ORGANIC_FOOD_SWEET_BERRIES", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Food", "&7Content: &9Sweet Berries");
|
||||||
|
|
||||||
public static final ItemStack FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9X");
|
public static final ItemStack FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9X");
|
||||||
public static final ItemStack WHEAT_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Wheat");
|
public static final ItemStack WHEAT_FERTILIZER = new SlimefunItemStack("FERTILIZER_WHEAT", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Fertilizer", "&7Content: &9Wheat");
|
||||||
public static final ItemStack CARROT_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Carrots");
|
public static final ItemStack CARROT_FERTILIZER = new SlimefunItemStack("FERTILIZER_CARROT", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Fertilizer", "&7Content: &9Carrots");
|
||||||
public static final ItemStack POTATO_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Potatoes");
|
public static final ItemStack POTATO_FERTILIZER = new SlimefunItemStack("FERTILIZER_POTATO", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Fertilizer", "&7Content: &9Potatoes");
|
||||||
public static final ItemStack SEEDS_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Seeds");
|
public static final ItemStack SEEDS_FERTILIZER = new SlimefunItemStack("FERTILIZER_SEEDS", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Fertilizer", "&7Content: &9Seeds");
|
||||||
public static final ItemStack BEETROOT_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Beetroot");
|
public static final ItemStack BEETROOT_FERTILIZER = new SlimefunItemStack("FERTILIZER_BEETROOT", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Fertilizer", "&7Content: &9Beetroot");
|
||||||
public static final ItemStack MELON_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Melon");
|
public static final ItemStack MELON_FERTILIZER = new SlimefunItemStack("FERTILIZER_MELON", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Fertilizer", "&7Content: &9Melon");
|
||||||
public static final ItemStack APPLE_FERTILIZER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ=="), "&aOrganic Fertilizer", "&7Content: &9Apple");
|
public static final ItemStack APPLE_FERTILIZER = new SlimefunItemStack("FERTILIZER_APPLE", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Fertilizer", "&7Content: &9Apple");
|
||||||
|
public static final ItemStack SWEET_BERRIES_FERTILIZER = new SlimefunItemStack("FERTILIZER_SWEET_BERRIES", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzOWUzZjVhY2JlZTliZTRjNDI1OTI4OWQ2ZDlmMzVjNjM1ZmZhNjYxMTE0Njg3YjNlYTZkZGE4Yzc5In19fQ==", "&aOrganic Fertilizer", "&7Content: &9Sweet Berries");
|
||||||
|
|
||||||
public static final ItemStack ANIMAL_GROWTH_ACCELERATOR = new CustomItem(Material.HAY_BLOCK, "&bAnimal Growth Accelerator", "", "&rRuns on &aOrganic Food", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &728 J/s");
|
public static final ItemStack ANIMAL_GROWTH_ACCELERATOR = new SlimefunItemStack("ANIMAL_GROWTH_ACCELERATOR", Material.HAY_BLOCK, "&bAnimal Growth Accelerator", "", "&rRuns on &aOrganic Food", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &728 J/s");
|
||||||
public static final ItemStack CROP_GROWTH_ACCELERATOR = new CustomItem(Material.LIME_TERRACOTTA, "&aCrop Growth Accelerator", "", "&rRuns on &aOrganic Fertilizer", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Radius: 7x7", "&8\u21E8 &7Speed: &a3/time", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &750 J/s");
|
public static final ItemStack CROP_GROWTH_ACCELERATOR = new SlimefunItemStack("CROP_GROWTH_ACCELERATOR", Material.LIME_TERRACOTTA, "&aCrop Growth Accelerator", "", "&rRuns on &aOrganic Fertilizer", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Radius: 7x7", "&8\u21E8 &7Speed: &a3/time", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &750 J/s");
|
||||||
public static final ItemStack CROP_GROWTH_ACCELERATOR_2 = new CustomItem(Material.LIME_TERRACOTTA, "&aCrop Growth Accelerator &7(&eII&7)", "", "&rRuns on &aOrganic Fertilizer", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Radius: 9x9", "&8\u21E8 &7Speed: &a4/time", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &760 J/s");
|
public static final ItemStack CROP_GROWTH_ACCELERATOR_2 = new SlimefunItemStack("CROP_GROWTH_ACCELERATOR_2", Material.LIME_TERRACOTTA, "&aCrop Growth Accelerator &7(&eII&7)", "", "&rRuns on &aOrganic Fertilizer", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Radius: 9x9", "&8\u21E8 &7Speed: &a4/time", "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &760 J/s");
|
||||||
|
|
||||||
public static final ItemStack FOOD_FABRICATOR = new CustomItem(Material.GREEN_STAINED_GLASS, "&cFood Fabricator", "", "&rProduces &aOrganic Food", "", MachineTier.ADVANCED.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &714 J/s");
|
public static final ItemStack FOOD_FABRICATOR = new SlimefunItemStack("FOOD_FABRICATOR", Material.GREEN_STAINED_GLASS, "&cFood Fabricator", "", "&rProduces &aOrganic Food", "", MachineTier.ADVANCED.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &714 J/s");
|
||||||
public static final ItemStack FOOD_FABRICATOR_2 = new CustomItem(Material.GREEN_STAINED_GLASS, "&cFood Fabricator &7(&eII&7)", "", "&rProduces &aOrganic Food", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 6x", "&8\u21E8 &e\u26A1 &7512 J Buffer", "&8\u21E8 &e\u26A1 &748 J/s");
|
public static final ItemStack FOOD_FABRICATOR_2 = new SlimefunItemStack("FOOD_FABRICATOR_2", Material.GREEN_STAINED_GLASS, "&cFood Fabricator &7(&eII&7)", "", "&rProduces &aOrganic Food", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 6x", "&8\u21E8 &e\u26A1 &7512 J Buffer", "&8\u21E8 &e\u26A1 &748 J/s");
|
||||||
|
|
||||||
public static final ItemStack FOOD_COMPOSTER = new CustomItem(Material.GREEN_TERRACOTTA, "&cFood Composter", "", "&rProduces &aOrganic Fertilizer", "", MachineTier.ADVANCED.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &716 J/s");
|
public static final ItemStack FOOD_COMPOSTER = new SlimefunItemStack("FOOD_COMPOSTER", Material.GREEN_TERRACOTTA, "&cFood Composter", "", "&rProduces &aOrganic Fertilizer", "", MachineTier.ADVANCED.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &716 J/s");
|
||||||
public static final ItemStack FOOD_COMPOSTER_2 = new CustomItem(Material.GREEN_TERRACOTTA, "&cFood Composter &7(&eII&7)", "", "&rProduces &aOrganic Fertilizer", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 10x", "&8\u21E8 &e\u26A1 &7512 J Buffer", "&8\u21E8 &e\u26A1 &752 J/s");
|
public static final ItemStack FOOD_COMPOSTER_2 = new SlimefunItemStack("FOOD_COMPOSTER_2", Material.GREEN_TERRACOTTA, "&cFood Composter &7(&eII&7)", "", "&rProduces &aOrganic Fertilizer", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 10x", "&8\u21E8 &e\u26A1 &7512 J Buffer", "&8\u21E8 &e\u26A1 &752 J/s");
|
||||||
|
|
||||||
public static final ItemStack XP_COLLECTOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTc2MmExNWIwNDY5MmEyZTRiM2ZiMzY2M2JkNGI3ODQzNGRjZTE3MzJiOGViMWM3YTlmN2MwZmJmNmYifX19"), "&aEXP Collector", "", "&rCollects nearby Exp and stores it", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &720 J/s");
|
public static final ItemStack XP_COLLECTOR = new SlimefunItemStack("XP_COLLECTOR", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTc2MmExNWIwNDY5MmEyZTRiM2ZiMzY2M2JkNGI3ODQzNGRjZTE3MzJiOGViMWM3YTlmN2MwZmJmNmYifX19", "&aEXP Collector", "", "&rCollects nearby Exp and stores it", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &e\u26A1 &71024 J Buffer", "&8\u21E8 &e\u26A1 &720 J/s");
|
||||||
public static final ItemStack REACTOR_COOLANT_CELL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGU0MDczYmU0MGNiM2RlYjMxMGEwYmU5NTliNGNhYzY4ZTgyNTM3MjcyOGZhZmI2YzI5NzNlNGU3YzMzIn19fQ=="), "&bReactor Coolant Cell");
|
public static final ItemStack REACTOR_COOLANT_CELL = new SlimefunItemStack("REACTOR_COLLANT_CELL", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZGU0MDczYmU0MGNiM2RlYjMxMGEwYmU5NTliNGNhYzY4ZTgyNTM3MjcyOGZhZmI2YzI5NzNlNGU3YzMzIn19fQ==", "&bReactor Coolant Cell");
|
||||||
|
|
||||||
public static final ItemStack NUCLEAR_REACTOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&2Nuclear Reactor", "", "&rRequires Cooling!", "&8\u21E8 &bMust be surrounded by Water", "&8\u21E8 &bMust be supplied with Reactor Coolant Cells", "", MachineTier.END_GAME.and(MachineType.GENERATOR), "&8\u21E8 &e\u26A1 &716384 J Buffer", "&8\u21E8 &e\u26A1 &7500 J/s");
|
public static final ItemStack NUCLEAR_REACTOR = new SlimefunItemStack("NUCLEAR_REACTOR", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ==", "&2Nuclear Reactor", "", "&rRequires Cooling!", "&8\u21E8 &bMust be surrounded by Water", "&8\u21E8 &bMust be supplied with Reactor Coolant Cells", "", MachineTier.END_GAME.and(MachineType.GENERATOR), "&8\u21E8 &e\u26A1 &716384 J Buffer", "&8\u21E8 &e\u26A1 &7500 J/s");
|
||||||
public static final ItemStack NETHERSTAR_REACTOR = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&fNether Star Reactor", "", "&fRuns on Nether Stars", "&8\u21E8 &bMust be surrounded by Water", "&8\u21E8 &bMust be supplied with Nether Ice Coolant Cells", "", MachineTier.END_GAME.and(MachineType.GENERATOR), "&8\u21E8 &e\u26A1 &732768 J Buffer", "&8\u21E8 &e\u26A1 &71024 J/s", "&8\u21E8 &4Causes nearby Entities to get Withered");
|
public static final ItemStack NETHERSTAR_REACTOR = new SlimefunItemStack("NETHERSTAR_REACTOR", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ==", "&fNether Star Reactor", "", "&fRuns on Nether Stars", "&8\u21E8 &bMust be surrounded by Water", "&8\u21E8 &bMust be supplied with Nether Ice Coolant Cells", "", MachineTier.END_GAME.and(MachineType.GENERATOR), "&8\u21E8 &e\u26A1 &732768 J Buffer", "&8\u21E8 &e\u26A1 &71024 J/s", "&8\u21E8 &4Causes nearby Entities to get Withered");
|
||||||
public static final ItemStack REACTOR_ACCESS_PORT = new CustomItem(Material.CYAN_TERRACOTTA, "&2Reactor Access Port", "", "&rAllows you to interact with a Reactor", "&rvia Cargo Nodes, can also be used", "&ras a Buffer", "", "&8\u21E8 &eMust be placed &a3 Blocks &eabove the Reactor");
|
public static final ItemStack REACTOR_ACCESS_PORT = new SlimefunItemStack("REACTOR_ACCESS_PORT", Material.CYAN_TERRACOTTA, "&2Reactor Access Port", "", "&rAllows you to interact with a Reactor", "&rvia Cargo Nodes, can also be used", "&ras a Buffer", "", "&8\u21E8 &eMust be placed &a3 Blocks &eabove the Reactor");
|
||||||
|
|
||||||
public static final ItemStack FREEZER = new CustomItem(Material.LIGHT_BLUE_STAINED_GLASS, "&bFreezer", "", MachineTier.ADVANCED.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &718 J/s");
|
public static final ItemStack FREEZER = new SlimefunItemStack("FREEZER", Material.LIGHT_BLUE_STAINED_GLASS, "&bFreezer", "", MachineTier.ADVANCED.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &718 J/s");
|
||||||
public static final ItemStack FREEZER_2 = new CustomItem(Material.LIGHT_BLUE_STAINED_GLASS, "&bFreezer &7(&eII&7)", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &730 J/s");
|
public static final ItemStack FREEZER_2 = new SlimefunItemStack("FREEZER_2", Material.LIGHT_BLUE_STAINED_GLASS, "&bFreezer &7(&eII&7)", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &7256 J Buffer", "&8\u21E8 &e\u26A1 &730 J/s");
|
||||||
|
|
||||||
public static final ItemStack ELECTRIC_GOLD_PAN = new CustomItem(Material.BROWN_TERRACOTTA, "&6Electric Gold Pan", "", MachineTier.BASIC.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &72 J/s");
|
public static final ItemStack ELECTRIC_GOLD_PAN = new SlimefunItemStack("ELECTRIC_GOLD_PAN", Material.BROWN_TERRACOTTA, "&6Electric Gold Pan", "", MachineTier.BASIC.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &72 J/s");
|
||||||
public static final ItemStack ELECTRIC_GOLD_PAN_2 = new CustomItem(Material.BROWN_TERRACOTTA, "&6Electric Gold Pan &7(&eII&7)", "", MachineTier.BASIC.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 3x", "&8\u21E8 &e\u26A1 &74 J/s");
|
public static final ItemStack ELECTRIC_GOLD_PAN_2 = new SlimefunItemStack("ELECTRIC_GOLD_PAN_2", Material.BROWN_TERRACOTTA, "&6Electric Gold Pan &7(&eII&7)", "", MachineTier.BASIC.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 3x", "&8\u21E8 &e\u26A1 &74 J/s");
|
||||||
public static final ItemStack ELECTRIC_GOLD_PAN_3 = new CustomItem(Material.BROWN_TERRACOTTA, "&6Electric Gold Pan &7(&eIII&7)", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 10x", "&8\u21E8 &e\u26A1 &714 J/s");
|
public static final ItemStack ELECTRIC_GOLD_PAN_3 = new SlimefunItemStack("ELECTRIC_GOLD_PAN_3", Material.BROWN_TERRACOTTA, "&6Electric Gold Pan &7(&eIII&7)", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 10x", "&8\u21E8 &e\u26A1 &714 J/s");
|
||||||
|
|
||||||
public static final ItemStack ELECTRIC_DUST_WASHER = new CustomItem(Material.BLUE_STAINED_GLASS, "&3Electric Dust Washer", "", MachineTier.BASIC.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &76 J/s");
|
public static final ItemStack ELECTRIC_DUST_WASHER = new SlimefunItemStack("ELECTRIC_DUST_WASHER", Material.BLUE_STAINED_GLASS, "&3Electric Dust Washer", "", MachineTier.BASIC.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &76 J/s");
|
||||||
public static final ItemStack ELECTRIC_DUST_WASHER_2 = new CustomItem(Material.BLUE_STAINED_GLASS, "&3Electric Dust Washer &7(&eII&7)", "", MachineTier.BASIC.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &710 J/s");
|
public static final ItemStack ELECTRIC_DUST_WASHER_2 = new SlimefunItemStack("ELECTRIC_DUST_WASHER_2", Material.BLUE_STAINED_GLASS, "&3Electric Dust Washer &7(&eII&7)", "", MachineTier.BASIC.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &710 J/s");
|
||||||
public static final ItemStack ELECTRIC_DUST_WASHER_3 = new CustomItem(Material.BLUE_STAINED_GLASS, "&3Electric Dust Washer &7(&eIII&7)", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 10x", "&8\u21E8 &e\u26A1 &730 J/s");
|
public static final ItemStack ELECTRIC_DUST_WASHER_3 = new SlimefunItemStack("ELECTRIC_DUST_WASHER_3", Material.BLUE_STAINED_GLASS, "&3Electric Dust Washer &7(&eIII&7)", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 10x", "&8\u21E8 &e\u26A1 &730 J/s");
|
||||||
|
|
||||||
public static final ItemStack ELECTRIC_INGOT_FACTORY = new CustomItem(Material.RED_TERRACOTTA, "&cElectric Ingot Factory", "", MachineTier.BASIC.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &78 J/s");
|
public static final ItemStack ELECTRIC_INGOT_FACTORY = new SlimefunItemStack("ELECTRIC_INGOT_FACTORY", Material.RED_TERRACOTTA, "&cElectric Ingot Factory", "", MachineTier.BASIC.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 1x", "&8\u21E8 &e\u26A1 &78 J/s");
|
||||||
public static final ItemStack ELECTRIC_INGOT_FACTORY_2 = new CustomItem(Material.RED_TERRACOTTA, "&cElectric Ingot Factory &7(&eII&7)", "", MachineTier.BASIC.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &714 J/s");
|
public static final ItemStack ELECTRIC_INGOT_FACTORY_2 = new SlimefunItemStack("ELECTRIC_INGOT_FACTORY_2", Material.RED_TERRACOTTA, "&cElectric Ingot Factory &7(&eII&7)", "", MachineTier.BASIC.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 2x", "&8\u21E8 &e\u26A1 &714 J/s");
|
||||||
public static final ItemStack ELECTRIC_INGOT_FACTORY_3 = new CustomItem(Material.RED_TERRACOTTA, "&cElectric Ingot Factory &7(&eIII&7)", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 8x", "&8\u21E8 &e\u26A1 &740 J/s");
|
public static final ItemStack ELECTRIC_INGOT_FACTORY_3 = new SlimefunItemStack("ELECTRIC_INGOT_FACTORY_3", Material.RED_TERRACOTTA, "&cElectric Ingot Factory &7(&eIII&7)", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Speed: 8x", "&8\u21E8 &e\u26A1 &740 J/s");
|
||||||
|
|
||||||
public static final ItemStack AUTOMATED_CRAFTING_CHAMBER = new CustomItem(Material.CRAFTING_TABLE, "&6Automated Crafting Chamber", "", MachineTier.ADVANCED.and(MachineType.MACHINE), "&8\u21E8 &e\u26A1 &710 J/Item");
|
public static final ItemStack AUTOMATED_CRAFTING_CHAMBER = new SlimefunItemStack("AUTOMATED_CRAFTING_CHAMBER", Material.CRAFTING_TABLE, "&6Automated Crafting Chamber", "", MachineTier.ADVANCED.and(MachineType.MACHINE), "&8\u21E8 &e\u26A1 &710 J/Item");
|
||||||
public static final ItemStack FLUID_PUMP = new CustomItem(Material.BLUE_TERRACOTTA, "&9Fluid Pump", "", MachineTier.ADVANCED.and(MachineType.MACHINE), "&8\u21E8 &e\u26A1 &732 J/Block");
|
public static final ItemStack FLUID_PUMP = new SlimefunItemStack("FLUID_PUMP", Material.BLUE_TERRACOTTA, "&9Fluid Pump", "", MachineTier.ADVANCED.and(MachineType.MACHINE), "&8\u21E8 &e\u26A1 &732 J/Block");
|
||||||
public static final ItemStack CHARGING_BENCH = new CustomItem(Material.CRAFTING_TABLE, "&6Charging Bench", "", "&rCharges Items such as Jetpacks", "", MachineTier.BASIC.and(MachineType.MACHINE), "&8\u21E8 &e\u26A1 &7128 J Buffer", "&8\u21E8 &e\u26A1 &7Energy Loss: &c50%");
|
public static final ItemStack CHARGING_BENCH = new SlimefunItemStack("CHARGING_BENCH", Material.CRAFTING_TABLE, "&6Charging Bench", "", "&rCharges Items such as Jetpacks", "", MachineTier.BASIC.and(MachineType.MACHINE), "&8\u21E8 &e\u26A1 &7128 J Buffer", "&8\u21E8 &e\u26A1 &7Energy Loss: &c50%");
|
||||||
|
|
||||||
public static final ItemStack WITHER_ASSEMBLER = new CustomItem(Material.OBSIDIAN, "&5Wither Assembler", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Cooldown: &b30 Seconds", "&8\u21E8 &e\u26A1 &74096 J Buffer", "&8\u21E8 &e\u26A1 &74096 J/Wither");
|
public static final ItemStack WITHER_ASSEMBLER = new SlimefunItemStack("WITHER_ASSEMBLER", Material.OBSIDIAN, "&5Wither Assembler", "", MachineTier.END_GAME.and(MachineType.MACHINE), "&8\u21E8 &7Cooldown: &b30 Seconds", "&8\u21E8 &e\u26A1 &74096 J Buffer", "&8\u21E8 &e\u26A1 &74096 J/Wither");
|
||||||
|
|
||||||
public static final ItemStack TRASH_CAN = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzJkNDEwNDJjZTk5MTQ3Y2MzOGNhYzllNDY3NDE1NzZlN2VlNzkxMjgzZTZmYWM4ZDMyOTJjYWUyOTM1ZjFmIn19fQ=="), "&3Trash Can", "", "&rWill destroy all Items put into it");
|
public static final ItemStack TRASH_CAN = new SlimefunItemStack("TRASH_CAN_BLOCK", "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzJkNDEwNDJjZTk5MTQ3Y2MzOGNhYzllNDY3NDE1NzZlN2VlNzkxMjgzZTZmYWM4ZDMyOTJjYWUyOTM1ZjFmIn19fQ==", "&3Trash Can", "", "&rWill destroy all Items put into it");
|
||||||
|
|
||||||
public static final ItemStack ELYTRA = new ItemStack(Material.ELYTRA);
|
public static final ItemStack ELYTRA = new ItemStack(Material.ELYTRA);
|
||||||
public static final ItemStack ELYTRA_SCALE = new CustomItem(Material.FEATHER, "&bElytra Scale");
|
public static final ItemStack ELYTRA_SCALE = new SlimefunItemStack("ELYTRA_SCALE", Material.FEATHER, "&bElytra Scale");
|
||||||
public static final ItemStack INFUSED_ELYTRA = new CustomItem(ELYTRA, "&5Infused Elytra");
|
public static final ItemStack INFUSED_ELYTRA = new SlimefunItemStack("INFUSED_ELYTRA", ELYTRA, "&5Infused Elytra");
|
||||||
public static final ItemStack SOULBOUND_ELYTRA = new CustomItem(ELYTRA, "&cSoulbound Elytra");
|
public static final ItemStack SOULBOUND_ELYTRA = new SlimefunItemStack("SOULBOUND_ELYTRA", ELYTRA, "&cSoulbound Elytra");
|
||||||
|
|
||||||
public static final ItemStack TOTEM_OF_UNDYING = new ItemStack(Material.TOTEM_OF_UNDYING);
|
public static final ItemStack TOTEM_OF_UNDYING = new ItemStack(Material.TOTEM_OF_UNDYING);
|
||||||
|
|
||||||
|
@ -158,5 +158,10 @@ public class Category {
|
|||||||
public int getTier() {
|
public int getTier() {
|
||||||
return tier;
|
return tier;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String toString() {
|
||||||
|
return "Slimefun Category {" + item.getItemMeta().getDisplayName() + ",tier=" + tier + "}";
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -3,14 +3,13 @@ package me.mrCookieSlime.Slimefun.Objects;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.inventory.ItemStack;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Represents a {@link Category} that cannot be opened until the parent category/categories
|
* Represents a {@link Category} that cannot be opened until the parent category/categories
|
||||||
* are fully unlocked.
|
* are fully unlocked.
|
||||||
@ -112,10 +111,9 @@ public class LockedCategory extends Category {
|
|||||||
*
|
*
|
||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
|
@SuppressWarnings("deprecation")
|
||||||
public boolean hasUnlocked(Player p) {
|
public boolean hasUnlocked(Player p) {
|
||||||
PlayerProfile profile = PlayerProfile.get(p);
|
return hasUnlocked(p, PlayerProfile.get(p));
|
||||||
|
|
||||||
return hasUnlocked(p, profile);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean hasUnlocked(Player p, PlayerProfile profile) {
|
public boolean hasUnlocked(Player p, PlayerProfile profile) {
|
||||||
|
@ -86,6 +86,10 @@ public class MultiBlock {
|
|||||||
return Tag.WOODEN_SLABS.isTagged(a);
|
return Tag.WOODEN_SLABS.isTagged(a);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (Tag.WOODEN_TRAPDOORS.isTagged(b)) {
|
||||||
|
return Tag.WOODEN_TRAPDOORS.isTagged(a);
|
||||||
|
}
|
||||||
|
|
||||||
if (b != a) {
|
if (b != a) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -228,41 +228,50 @@ public class Research {
|
|||||||
* @since 4.0
|
* @since 4.0
|
||||||
*/
|
*/
|
||||||
public void unlock(final Player p, boolean instant) {
|
public void unlock(final Player p, boolean instant) {
|
||||||
if (!hasUnlocked(p)) {
|
Slimefun.runSync(() -> {
|
||||||
ResearchUnlockEvent event = new ResearchUnlockEvent(p, this);
|
p.playSound(p.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 1F);
|
||||||
Bukkit.getPluginManager().callEvent(event);
|
SlimefunPlugin.getLocal().sendMessage(p, "messages.research.progress", true, msg -> msg.replace("%research%", getName()).replace("%progress%", "0%"));
|
||||||
|
}, 10L);
|
||||||
Runnable runnable = () -> {
|
|
||||||
PlayerProfile.get(p).setResearched(this, true);
|
PlayerProfile.get(p, profile -> {
|
||||||
SlimefunPlugin.getLocal().sendMessage(p, "messages.unlocked", true, msg -> msg.replace("%research%", getName()));
|
if (!profile.hasUnlocked(this)) {
|
||||||
|
ResearchUnlockEvent event = new ResearchUnlockEvent(p, this);
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
|
||||||
if (SlimefunPlugin.getCfg().getBoolean("options.research-unlock-fireworks")) {
|
Runnable runnable = () -> {
|
||||||
FireworkShow.launchRandom(p, 1);
|
profile.setResearched(this, true);
|
||||||
}
|
SlimefunPlugin.getLocal().sendMessage(p, "messages.unlocked", true, msg -> msg.replace("%research%", getName()));
|
||||||
};
|
|
||||||
|
|
||||||
if (!event.isCancelled()) {
|
|
||||||
if (instant) runnable.run();
|
|
||||||
else if (!SlimefunPlugin.getUtilities().researching.contains(p.getUniqueId())){
|
|
||||||
SlimefunPlugin.getUtilities().researching.add(p.getUniqueId());
|
|
||||||
SlimefunPlugin.getLocal().sendMessage(p, "messages.research.start", true, msg -> msg.replace("%research%", getName()));
|
|
||||||
|
|
||||||
for (int i = 1; i < research_progress.length + 1; i++) {
|
if (SlimefunPlugin.getCfg().getBoolean("options.research-unlock-fireworks")) {
|
||||||
int j = i;
|
FireworkShow.launchRandom(p, 1);
|
||||||
|
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
|
||||||
p.playSound(p.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 1F);
|
|
||||||
SlimefunPlugin.getLocal().sendMessage(p, "messages.research.progress", true, msg -> msg.replace("%research%", getName()).replace("%progress%", research_progress[j - 1] + "%"));
|
|
||||||
}, i * 20L);
|
|
||||||
}
|
}
|
||||||
|
};
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
|
||||||
|
if (!event.isCancelled()) {
|
||||||
|
if (instant) {
|
||||||
runnable.run();
|
runnable.run();
|
||||||
SlimefunPlugin.getUtilities().researching.remove(p.getUniqueId());
|
}
|
||||||
}, (research_progress.length + 1) * 20L);
|
else if (!SlimefunPlugin.getUtilities().researching.contains(p.getUniqueId())){
|
||||||
|
SlimefunPlugin.getUtilities().researching.add(p.getUniqueId());
|
||||||
|
SlimefunPlugin.getLocal().sendMessage(p, "messages.research.start", true, msg -> msg.replace("%research%", getName()));
|
||||||
|
|
||||||
|
for (int i = 1; i < research_progress.length + 1; i++) {
|
||||||
|
int j = i;
|
||||||
|
|
||||||
|
Slimefun.runSync(() -> {
|
||||||
|
p.playSound(p.getLocation(), Sound.ENTITY_BAT_TAKEOFF, 0.7F, 1F);
|
||||||
|
SlimefunPlugin.getLocal().sendMessage(p, "messages.research.progress", true, msg -> msg.replace("%research%", getName()).replace("%progress%", research_progress[j - 1] + "%"));
|
||||||
|
}, i * 20L);
|
||||||
|
}
|
||||||
|
|
||||||
|
Slimefun.runSync(() -> {
|
||||||
|
runnable.run();
|
||||||
|
SlimefunPlugin.getUtilities().researching.remove(p.getUniqueId());
|
||||||
|
}, (research_progress.length + 1) * 20L);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -26,7 +26,7 @@ public class MultiTool extends DamagableChargableItem {
|
|||||||
public void postRegister() {
|
public void postRegister() {
|
||||||
List<Integer> list = new ArrayList<>();
|
List<Integer> list = new ArrayList<>();
|
||||||
for (int i = 0; i < 50; i++) {
|
for (int i = 0; i < 50; i++) {
|
||||||
if (Slimefun.getItemValue(this.getID(), "mode." + i + ".enabled") != null && (Boolean) Slimefun.getItemValue(this.getID(), "mode." + i + ".enabled")) list.add(i);
|
if (Slimefun.getItemValue(this.getID(), "mode." + i + ".enabled") != null && (boolean) Slimefun.getItemValue(this.getID(), "mode." + i + ".enabled")) list.add(i);
|
||||||
}
|
}
|
||||||
this.modes = list;
|
this.modes = list;
|
||||||
}
|
}
|
||||||
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Optional;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
@ -11,11 +12,9 @@ import java.util.logging.Level;
|
|||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.block.Block;
|
|
||||||
import org.bukkit.entity.EntityType;
|
import org.bukkit.entity.EntityType;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.data.PersistentDataAPI;
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
@ -27,14 +26,12 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe;
|
import me.mrCookieSlime.Slimefun.ancient_altar.AltarRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.EnergyNet;
|
import me.mrCookieSlime.Slimefun.api.energy.EnergyNet;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.EnergyNetComponent;
|
import me.mrCookieSlime.Slimefun.api.energy.EnergyNetComponent;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
|
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
|
||||||
|
|
||||||
public class SlimefunItem {
|
public class SlimefunItem {
|
||||||
|
|
||||||
@ -55,7 +52,7 @@ public class SlimefunItem {
|
|||||||
private boolean addon = false;
|
private boolean addon = false;
|
||||||
private String permission = "";
|
private String permission = "";
|
||||||
private List<String> noPermissionTooltip;
|
private List<String> noPermissionTooltip;
|
||||||
private Set<ItemHandler> itemhandlers = new HashSet<>();
|
private final Set<ItemHandler> itemhandlers = new HashSet<>();
|
||||||
private boolean ticking = false;
|
private boolean ticking = false;
|
||||||
private BlockTicker blockTicker;
|
private BlockTicker blockTicker;
|
||||||
private EnergyTicker energyTicker;
|
private EnergyTicker energyTicker;
|
||||||
@ -166,7 +163,11 @@ public class SlimefunItem {
|
|||||||
if (SlimefunPlugin.getUtilities().itemIDs.containsKey(this.id)) {
|
if (SlimefunPlugin.getUtilities().itemIDs.containsKey(this.id)) {
|
||||||
throw new IllegalArgumentException("ID \"" + this.id + "\" already exists");
|
throw new IllegalArgumentException("ID \"" + this.id + "\" already exists");
|
||||||
}
|
}
|
||||||
if (this.recipe.length < 9) this.recipe = new ItemStack[] {null, null, null, null, null, null, null, null, null};
|
|
||||||
|
if (this.recipe.length < 9) {
|
||||||
|
this.recipe = new ItemStack[] {null, null, null, null, null, null, null, null, null};
|
||||||
|
}
|
||||||
|
|
||||||
SlimefunPlugin.getUtilities().allItems.add(this);
|
SlimefunPlugin.getUtilities().allItems.add(this);
|
||||||
|
|
||||||
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".enabled", true);
|
SlimefunPlugin.getItemCfg().setDefaultValue(this.id + ".enabled", true);
|
||||||
@ -194,7 +195,10 @@ public class SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (SlimefunPlugin.getItemCfg().getBoolean(id + ".enabled")) {
|
if (SlimefunPlugin.getItemCfg().getBoolean(id + ".enabled")) {
|
||||||
if (!Category.list().contains(category)) category.register();
|
|
||||||
|
if (!Category.list().contains(category)) {
|
||||||
|
category.register();
|
||||||
|
}
|
||||||
|
|
||||||
this.state = ItemState.ENABLED;
|
this.state = ItemState.ENABLED;
|
||||||
|
|
||||||
@ -204,8 +208,13 @@ public class SlimefunItem {
|
|||||||
this.disenchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-disenchanting");
|
this.disenchantable = SlimefunPlugin.getItemCfg().getBoolean(this.id + ".allow-disenchanting");
|
||||||
this.permission = SlimefunPlugin.getItemCfg().getString(this.id + ".required-permission");
|
this.permission = SlimefunPlugin.getItemCfg().getString(this.id + ".required-permission");
|
||||||
this.noPermissionTooltip = SlimefunPlugin.getItemCfg().getStringList(this.id + ".no-permission-tooltip");
|
this.noPermissionTooltip = SlimefunPlugin.getItemCfg().getStringList(this.id + ".no-permission-tooltip");
|
||||||
|
|
||||||
SlimefunPlugin.getUtilities().enabledItems.add(this);
|
SlimefunPlugin.getUtilities().enabledItems.add(this);
|
||||||
if (slimefun) SlimefunPlugin.getUtilities().vanillaItems++;
|
|
||||||
|
if (slimefun) {
|
||||||
|
SlimefunPlugin.getUtilities().vanillaItems++;
|
||||||
|
}
|
||||||
|
|
||||||
SlimefunPlugin.getUtilities().itemIDs.put(this.id, this);
|
SlimefunPlugin.getUtilities().itemIDs.put(this.id, this);
|
||||||
|
|
||||||
create();
|
create();
|
||||||
@ -281,20 +290,27 @@ public class SlimefunItem {
|
|||||||
|
|
||||||
public static SlimefunItem getByItem(ItemStack item) {
|
public static SlimefunItem getByItem(ItemStack item) {
|
||||||
if (item == null) return null;
|
if (item == null) return null;
|
||||||
|
|
||||||
|
if (item instanceof SlimefunItemStack) {
|
||||||
|
return getByID(((SlimefunItemStack) item).getItemID());
|
||||||
|
}
|
||||||
|
|
||||||
if (item.hasItemMeta()) {
|
if (item.hasItemMeta()) {
|
||||||
String id = PersistentDataAPI.getString(item.getItemMeta(), SlimefunPlugin.getItemDataKey());
|
Optional<String> itemID = SlimefunPlugin.getItemDataService().getItemData(item);
|
||||||
if (id != null) return getByID(id);
|
|
||||||
|
if (itemID.isPresent()) {
|
||||||
|
return getByID(itemID.get());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (SlimefunItem sfi: SlimefunPlugin.getUtilities().enabledItems) {
|
for (SlimefunItem sfi: SlimefunPlugin.getUtilities().enabledItems) {
|
||||||
if ((sfi instanceof ChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
|
if (sfi.isItem(item)) {
|
||||||
(sfi instanceof DamagableChargableItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
|
// If we have to loop all items for the given item, then at least
|
||||||
(sfi instanceof ChargedItem && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
|
// set the id via PersistenDataAPI for future performance boosts
|
||||||
(sfi instanceof SlimefunBackpack && SlimefunManager.isItemSimiliar(item, sfi.getItem(), false)) ||
|
SlimefunPlugin.getItemDataService().setItemData(item, sfi.getID());
|
||||||
SlimefunManager.isItemSimiliar(item, sfi.getItem(), true))
|
|
||||||
|
return sfi;
|
||||||
return sfi;
|
}
|
||||||
}
|
}
|
||||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BROKEN_SPAWNER, false)) return getByID("BROKEN_SPAWNER");
|
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.BROKEN_SPAWNER, false)) return getByID("BROKEN_SPAWNER");
|
||||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.REPAIRED_SPAWNER, false)) return getByID("REINFORCED_SPAWNER");
|
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.REPAIRED_SPAWNER, false)) return getByID("REINFORCED_SPAWNER");
|
||||||
@ -305,13 +321,16 @@ public class SlimefunItem {
|
|||||||
if (item == null) return false;
|
if (item == null) return false;
|
||||||
|
|
||||||
if (item.hasItemMeta()) {
|
if (item.hasItemMeta()) {
|
||||||
String comparingId = PersistentDataAPI.getString(item.getItemMeta(), SlimefunPlugin.getItemDataKey());
|
Optional<String> itemID = SlimefunPlugin.getItemDataService().getItemData(item);
|
||||||
if (comparingId != null) return getID().equals(comparingId);
|
if (itemID.isPresent()) {
|
||||||
|
return getID().equals(itemID.get());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (this instanceof ChargableItem && SlimefunManager.isItemSimiliar(item, this.item, false)) return true;
|
if (this instanceof ChargableItem && SlimefunManager.isItemSimiliar(item, this.item, false)) return true;
|
||||||
else if (this instanceof DamagableChargableItem && SlimefunManager.isItemSimiliar(item, this.item, false)) return true;
|
else if (this instanceof DamagableChargableItem && SlimefunManager.isItemSimiliar(item, this.item, false)) return true;
|
||||||
else if (this instanceof ChargedItem && SlimefunManager.isItemSimiliar(item, this.item, false)) return true;
|
else if (this instanceof ChargedItem && SlimefunManager.isItemSimiliar(item, this.item, false)) return true;
|
||||||
|
else if (this instanceof SlimefunBackpack && SlimefunManager.isItemSimiliar(item, this.item, false)) return true;
|
||||||
else return SlimefunManager.isItemSimiliar(item, this.item, true);
|
else return SlimefunManager.isItemSimiliar(item, this.item, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -527,30 +546,64 @@ public class SlimefunItem {
|
|||||||
registerChargeableBlock(vanilla, capacity);
|
registerChargeableBlock(vanilla, capacity);
|
||||||
}
|
}
|
||||||
|
|
||||||
public BlockMenu getBlockMenu(Block b) {
|
/**
|
||||||
return BlockStorage.getInventory(b);
|
* This method will assign the given wiki page to this Item.
|
||||||
}
|
* Note that you only need to provide the page name itself,
|
||||||
|
* the URL to our wiki is prepended automatically.
|
||||||
|
*
|
||||||
|
* @param page The associated wiki page
|
||||||
|
*/
|
||||||
public void addWikipage(String page) {
|
public void addWikipage(String page) {
|
||||||
wiki = "https://github.com/TheBusyBiscuit/Slimefun4/wiki/" + page;
|
wiki = "https://github.com/TheBusyBiscuit/Slimefun4/wiki/" + page;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns whether this item has been assigned a wiki page.
|
||||||
|
* @see SlimefunItem#addWikipage(String)
|
||||||
|
*
|
||||||
|
* @return Whether this Item has a wiki page
|
||||||
|
*/
|
||||||
public boolean hasWiki() {
|
public boolean hasWiki() {
|
||||||
return wiki != null;
|
return wiki != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns the wiki page that has been asigned to this item.
|
||||||
|
* It will return null, if no wiki page was found.
|
||||||
|
* @see SlimefunItem#addWikipage(String)
|
||||||
|
*
|
||||||
|
* @return This item's wiki page
|
||||||
|
*/
|
||||||
public String getWiki() {
|
public String getWiki() {
|
||||||
return wiki;
|
return wiki;
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getItemName() {
|
/**
|
||||||
|
* This method will return this Item's Name (The name that is displayed when
|
||||||
|
* hovering over this Item in an Inventory).
|
||||||
|
*
|
||||||
|
* @return This item's name in ItemStack form
|
||||||
|
*/
|
||||||
|
public final String getItemName() {
|
||||||
return ItemUtils.getItemName(item);
|
return ItemUtils.getItemName(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This method returns a Set of item handlers associated with this Item.
|
||||||
|
*
|
||||||
|
* @return The Set of item handlers
|
||||||
|
*/
|
||||||
public Set<ItemHandler> getHandlers() {
|
public Set<ItemHandler> getHandlers() {
|
||||||
return itemhandlers;
|
return itemhandlers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Override this method if you don't want to add your Item Handler to the global list.
|
||||||
|
* Only use this method if you absolutely know what you are doing and can make sure that the
|
||||||
|
* Item handler is handled somewhere else.
|
||||||
|
*
|
||||||
|
* @return Whether this Item handler is handled directly by the Item itself
|
||||||
|
*/
|
||||||
protected boolean areItemHandlersPrivate() {
|
protected boolean areItemHandlersPrivate() {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -2,7 +2,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
|
|||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -112,13 +112,18 @@ public class Talisman extends SlimefunItem {
|
|||||||
return !("").equalsIgnoreCase(talisman.getSuffix());
|
return !("").equalsIgnoreCase(talisman.getSuffix());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean checkFor(Event e, SlimefunItemStack stack) {
|
||||||
|
SlimefunItem item = SlimefunItem.getByItem(stack);
|
||||||
|
return checkFor(e, item);
|
||||||
|
}
|
||||||
|
|
||||||
public static boolean checkFor(Event e, SlimefunItem item) {
|
public static boolean checkFor(Event e, SlimefunItem item) {
|
||||||
if (!(item instanceof Talisman)) {
|
if (!(item instanceof Talisman)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
Talisman talisman = (Talisman) item;
|
Talisman talisman = (Talisman) item;
|
||||||
if (new Random().nextInt(100) < talisman.getChance()) {
|
if (ThreadLocalRandom.current().nextInt(100) > talisman.getChance()) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -144,11 +149,11 @@ public class Talisman extends SlimefunItem {
|
|||||||
else return false;
|
else return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void executeTalismanAttributes(Event e, Player p, Talisman talisman){
|
private static void executeTalismanAttributes(Event e, Player p, Talisman talisman) {
|
||||||
consumeItem(p,talisman);
|
consumeItem(p, talisman);
|
||||||
applyTalismanEffects(p,talisman);
|
applyTalismanEffects(p, talisman);
|
||||||
cancelEvent(e,talisman);
|
cancelEvent(e, talisman);
|
||||||
sendMessage(p,talisman);
|
sendMessage(p, talisman);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void applyTalismanEffects(Player p, Talisman talisman){
|
private static void applyTalismanEffects(Player p, Talisman talisman){
|
||||||
@ -158,13 +163,15 @@ public class Talisman extends SlimefunItem {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private static void cancelEvent(Event e, Talisman talisman){
|
private static void cancelEvent(Event e, Talisman talisman){
|
||||||
if (e instanceof Cancellable && talisman.isEventCancelled())
|
if (e instanceof Cancellable && talisman.isEventCancelled()) {
|
||||||
((Cancellable) e).setCancelled(true);
|
((Cancellable) e).setCancelled(true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void sendMessage(Player p, Talisman talisman){
|
private static void sendMessage(Player p, Talisman talisman){
|
||||||
if (isTalismanMessage(talisman))
|
if (isTalismanMessage(talisman)) {
|
||||||
SlimefunPlugin.getLocal().sendMessage(p, "messages.talisman." + talisman.getSuffix(), true);
|
SlimefunPlugin.getLocal().sendMessage(p, "messages.talisman." + talisman.getSuffix(), true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void consumeItem(Player p, Talisman talisman){
|
private static void consumeItem(Player p, Talisman talisman){
|
||||||
|
@ -23,6 +23,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
@ -74,6 +75,10 @@ public abstract class AContainer extends SlimefunItem implements InventoryBlock
|
|||||||
this(category, item, id, recipeType, recipe);
|
this(category, item, id, recipeType, recipe);
|
||||||
this.recipeOutput = recipeOutput;
|
this.recipeOutput = recipeOutput;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AContainer(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
|
this(category, item, item.getItemID(), recipeType, recipe);
|
||||||
|
}
|
||||||
|
|
||||||
protected void constructMenu(BlockMenuPreset preset) {
|
protected void constructMenu(BlockMenuPreset preset) {
|
||||||
for (int i : BORDER) {
|
for (int i : BORDER) {
|
||||||
|
@ -31,6 +31,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
|
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
@ -99,6 +100,10 @@ public abstract class AGenerator extends SlimefunItem implements RecipeDisplayIt
|
|||||||
this(category, item, id, recipeType, recipe);
|
this(category, item, id, recipeType, recipe);
|
||||||
this.recipeOutput = recipeOutput;
|
this.recipeOutput = recipeOutput;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public AGenerator(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
|
this(category, item, item.getItemID(), recipeType, recipe);
|
||||||
|
}
|
||||||
|
|
||||||
private void constructMenu(BlockMenuPreset preset) {
|
private void constructMenu(BlockMenuPreset preset) {
|
||||||
for (int i : border) {
|
for (int i : border) {
|
||||||
|
@ -35,6 +35,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort
|
|||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
|
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
@ -71,10 +72,10 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
|
|||||||
private static final int[] border_4 = {25, 34, 43};
|
private static final int[] border_4 = {25, 34, 43};
|
||||||
private static final int INFO_SLOT = 49;
|
private static final int INFO_SLOT = 49;
|
||||||
|
|
||||||
public AReactor(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
public AReactor(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
|
|
||||||
new BlockMenuPreset(id, getInventoryTitle()) {
|
new BlockMenuPreset(getID(), getInventoryTitle()) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() {
|
public void init() {
|
||||||
@ -141,7 +142,7 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
registerBlockHandler(id, (p, b, tool, reason) -> {
|
registerBlockHandler(getID(), (p, b, tool, reason) -> {
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot : getFuelSlots()) {
|
for (int slot : getFuelSlots()) {
|
||||||
@ -336,7 +337,7 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
|
|||||||
MachineFuel fuel = findRecipe(menu, found);
|
MachineFuel fuel = findRecipe(menu, found);
|
||||||
|
|
||||||
if (port != null) {
|
if (port != null) {
|
||||||
restockCoolant(menu, port);
|
restockFuel(menu, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (fuel != null) {
|
if (fuel != null) {
|
||||||
@ -368,11 +369,11 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void restockCoolant(BlockMenu menu, BlockMenu port) {
|
private void restockFuel(BlockMenu menu, BlockMenu port) {
|
||||||
for (int slot: getFuelSlots()) {
|
for (int slot: getFuelSlots()) {
|
||||||
for (MachineFuel recipe: recipes) {
|
for (MachineFuel recipe: recipes) {
|
||||||
if (SlimefunManager.isItemSimiliar(port.getItemInSlot(slot), recipe.getInput(), true) && menu.fits(new CustomItem(port.getItemInSlot(slot), 1), getFuelSlots())) {
|
if (SlimefunManager.isItemSimiliar(port.getItemInSlot(slot), recipe.getInput(), true) && menu.fits(new CustomItem(port.getItemInSlot(slot), 1), getFuelSlots())) {
|
||||||
port.replaceExistingItem(slot, InvUtils.decreaseItem(port.getItemInSlot(slot), 1));
|
port.replaceExistingItem(slot, menu.pushItem(port.getItemInSlot(slot), getFuelSlots()));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -6,6 +6,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunBlockHandler;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
@ -13,10 +14,10 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
public abstract class Teleporter extends SlimefunItem {
|
public abstract class Teleporter extends SlimefunItem {
|
||||||
|
|
||||||
public Teleporter(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
public Teleporter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
|
|
||||||
SlimefunItem.registerBlockHandler(id, new SlimefunBlockHandler() {
|
SlimefunItem.registerBlockHandler(getID(), new SlimefunBlockHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||||
|
@ -13,13 +13,14 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
|
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
|
||||||
import me.mrCookieSlime.Slimefun.holograms.SimpleHologram;
|
import me.mrCookieSlime.Slimefun.holograms.SimpleHologram;
|
||||||
|
|
||||||
public class CargoManagerBlock extends SlimefunItem {
|
public class CargoManagerBlock extends SlimefunItem {
|
||||||
|
|
||||||
public CargoManagerBlock(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
public CargoManagerBlock(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
|
|
||||||
registerBlockHandler(getID(), (p, b, tool, reason) -> {
|
registerBlockHandler(getID(), (p, b, tool, reason) -> {
|
||||||
SimpleHologram.remove(b);
|
SimpleHologram.remove(b);
|
||||||
|
@ -17,7 +17,7 @@ public class DietCookie extends SimpleSlimefunItem<ItemConsumptionHandler> {
|
|||||||
public DietCookie(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
public DietCookie(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemConsumptionHandler getItemHandler() {
|
public ItemConsumptionHandler getItemHandler() {
|
||||||
return (e, p, item) -> {
|
return (e, p, item) -> {
|
||||||
|
@ -33,23 +33,30 @@ public class ExplosivePickaxe extends SimpleSlimefunItem<BlockBreakHandler> impl
|
|||||||
public ExplosivePickaxe(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) {
|
public ExplosivePickaxe(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) {
|
||||||
super(category, item, recipeType, recipe, keys, values);
|
super(category, item, recipeType, recipe, keys, values);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean areItemHandlersPrivate() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockBreakHandler getItemHandler() {
|
public BlockBreakHandler getItemHandler() {
|
||||||
return (e, item, fortune, drops) -> {
|
return (e, item, fortune, drops) -> {
|
||||||
if (isItem(item)) {
|
if (isItem(item)) {
|
||||||
e.setCancelled(true);
|
|
||||||
e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F);
|
e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F);
|
||||||
e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 0.3F, 1F);
|
e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 0.3F, 1F);
|
||||||
|
|
||||||
for (int x = -1; x <= 1; x++) {
|
for (int x = -1; x <= 1; x++) {
|
||||||
for (int y = -1; y <= 1; y++) {
|
for (int y = -1; y <= 1; y++) {
|
||||||
for (int z = -1; z <= 1; z++) {
|
for (int z = -1; z <= 1; z++) {
|
||||||
|
if (x == 0 && y == 0 && z == 0) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
Block b = e.getBlock().getRelative(x, y, z);
|
Block b = e.getBlock().getRelative(x, y, z);
|
||||||
|
|
||||||
if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), blacklist) && SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), b.getLocation(), ProtectableAction.BREAK_BLOCK)) {
|
if (b.getType() != Material.AIR && !b.isLiquid() && !StringUtils.equals(b.getType().toString(), blacklist) && SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), b.getLocation(), ProtectableAction.BREAK_BLOCK)) {
|
||||||
if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) {
|
SlimefunPlugin.getProtectionManager().logAction(e.getPlayer(), b, ProtectableAction.BREAK_BLOCK);
|
||||||
SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData());
|
|
||||||
}
|
|
||||||
|
|
||||||
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType());
|
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType());
|
||||||
SlimefunItem sfItem = BlockStorage.check(b);
|
SlimefunItem sfItem = BlockStorage.check(b);
|
||||||
|
@ -25,39 +25,40 @@ public class ExplosiveShovel extends SimpleSlimefunItem<BlockBreakHandler> imple
|
|||||||
public ExplosiveShovel(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) {
|
public ExplosiveShovel(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) {
|
||||||
super(category, item, recipeType, recipe, keys, values);
|
super(category, item, recipeType, recipe, keys, values);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean areItemHandlersPrivate() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockBreakHandler getItemHandler() {
|
public BlockBreakHandler getItemHandler() {
|
||||||
return (e, item, fortune, drops) -> {
|
return (e, item, fortune, drops) -> {
|
||||||
if (isItem(item)) {
|
if (isItem(item)) {
|
||||||
e.setCancelled(true);
|
|
||||||
e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F);
|
e.getBlock().getWorld().createExplosion(e.getBlock().getLocation(), 0.0F);
|
||||||
e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 0.3F, 1F);
|
e.getBlock().getWorld().playSound(e.getBlock().getLocation(), Sound.ENTITY_GENERIC_EXPLODE, 0.3F, 1F);
|
||||||
|
|
||||||
for (int x = -1; x <= 1; x++) {
|
for (int x = -1; x <= 1; x++) {
|
||||||
for (int y = -1; y <= 1; y++) {
|
for (int y = -1; y <= 1; y++) {
|
||||||
for (int z = -1; z <= 1; z++) {
|
for (int z = -1; z <= 1; z++) {
|
||||||
Block b = e.getBlock().getRelative(x, y, z);
|
if (x == 0 && y == 0 && z == 0) {
|
||||||
boolean correctType = false;
|
continue;
|
||||||
|
|
||||||
for (Material mat : MaterialTools.getBreakableByShovel().getAsArray()) {
|
|
||||||
if (b.getType() == mat) {
|
|
||||||
correctType = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (correctType && SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), b.getLocation(), ProtectableAction.BREAK_BLOCK)) {
|
Block b = e.getBlock().getRelative(x, y, z);
|
||||||
if (SlimefunPlugin.getHooks().isCoreProtectInstalled()) {
|
|
||||||
SlimefunPlugin.getHooks().getCoreProtectAPI().logRemoval(e.getPlayer().getName(), b.getLocation(), b.getType(), b.getBlockData());
|
if (MaterialTools.getBreakableByShovel().contains(b.getType()) && SlimefunPlugin.getProtectionManager().hasPermission(e.getPlayer(), b.getLocation(), ProtectableAction.BREAK_BLOCK)) {
|
||||||
}
|
SlimefunPlugin.getProtectionManager().logAction(e.getPlayer(), b, ProtectableAction.BREAK_BLOCK);
|
||||||
|
|
||||||
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType());
|
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, b.getType());
|
||||||
for (ItemStack drop: b.getDrops()) {
|
|
||||||
b.getWorld().dropItemNaturally(b.getLocation(), drop);
|
|
||||||
}
|
|
||||||
b.setType(Material.AIR);
|
|
||||||
|
|
||||||
|
for (ItemStack drop: b.getDrops()) {
|
||||||
|
if (drop != null) {
|
||||||
|
b.getWorld().dropItemNaturally(b.getLocation(), drop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
b.setType(Material.AIR);
|
||||||
damageItem(e.getPlayer(), item);
|
damageItem(e.getPlayer(), item);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,39 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
|
public class FortuneCookie extends SimpleSlimefunItem<ItemConsumptionHandler> {
|
||||||
|
|
||||||
|
private final Random random = new Random();
|
||||||
|
|
||||||
|
public FortuneCookie(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
|
super(category, item, recipeType, recipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemConsumptionHandler getItemHandler() {
|
||||||
|
return (e, p, item) -> {
|
||||||
|
if (SlimefunManager.isItemSimiliar(item, getItem(), true)) {
|
||||||
|
List<String> messages = SlimefunPlugin.getLocal().getMessages("messages.fortune-cookie");
|
||||||
|
String message = messages.get(random.nextInt(messages.size()));
|
||||||
|
|
||||||
|
p.sendMessage(ChatColor.translateAlternateColorCodes('&', message));
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
import org.bukkit.Effect;
|
import org.bukkit.Effect;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -17,26 +18,26 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public class GoldPan extends SimpleSlimefunItem<ItemInteractionHandler> implements RecipeDisplayItem {
|
public class GoldPan extends SimpleSlimefunItem<ItemInteractionHandler> implements RecipeDisplayItem {
|
||||||
|
|
||||||
private final Random random = new Random();
|
|
||||||
private final List<ItemStack> recipes;
|
private final List<ItemStack> recipes;
|
||||||
|
|
||||||
private int chanceSiftedOre;
|
private int chanceSiftedOre;
|
||||||
private int chanceFlint;
|
private int chanceFlint;
|
||||||
private int chanceClay;
|
private int chanceClay;
|
||||||
|
private int chanceIronNuggets;
|
||||||
|
|
||||||
public GoldPan(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) {
|
public GoldPan(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, recipeType, recipe, keys, values);
|
super(category, item, recipeType, recipe, new String[] {"chance.FLINT", "chance.CLAY", "chance.SIFTED_ORE", "chance.IRON_NUGGET"}, new Integer[] {40, 20, 35, 5});
|
||||||
|
|
||||||
recipes = Arrays.asList(
|
recipes = Arrays.asList(
|
||||||
new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT),
|
new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT),
|
||||||
new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL),
|
new ItemStack(Material.GRAVEL), new ItemStack(Material.CLAY_BALL),
|
||||||
new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE
|
new ItemStack(Material.GRAVEL), SlimefunItems.SIFTED_ORE,
|
||||||
|
new ItemStack(Material.GRAVEL), new ItemStack(Material.IRON_NUGGET)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -45,18 +46,21 @@ public class GoldPan extends SimpleSlimefunItem<ItemInteractionHandler> implemen
|
|||||||
chanceSiftedOre = (int) Slimefun.getItemValue(getID(), "chance.SIFTED_ORE");
|
chanceSiftedOre = (int) Slimefun.getItemValue(getID(), "chance.SIFTED_ORE");
|
||||||
chanceClay = (int) Slimefun.getItemValue(getID(), "chance.CLAY");
|
chanceClay = (int) Slimefun.getItemValue(getID(), "chance.CLAY");
|
||||||
chanceFlint = (int) Slimefun.getItemValue(getID(), "chance.FLINT");
|
chanceFlint = (int) Slimefun.getItemValue(getID(), "chance.FLINT");
|
||||||
|
chanceIronNuggets = (int) Slimefun.getItemValue(getID(), "chance.IRON_NUGGET");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemInteractionHandler getItemHandler() {
|
public ItemInteractionHandler getItemHandler() {
|
||||||
return (e, p, item) -> {
|
return (e, p, item) -> {
|
||||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GOLD_PAN, true)) {
|
if (isItem(item)) {
|
||||||
if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.GRAVEL && SlimefunPlugin.getProtectionManager().hasPermission(p, e.getClickedBlock().getLocation(), ProtectableAction.BREAK_BLOCK)) {
|
if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.GRAVEL && SlimefunPlugin.getProtectionManager().hasPermission(p, e.getClickedBlock().getLocation(), ProtectableAction.BREAK_BLOCK)) {
|
||||||
List<ItemStack> drops = new ArrayList<>();
|
List<ItemStack> drops = new ArrayList<>();
|
||||||
|
Random random = ThreadLocalRandom.current();
|
||||||
|
|
||||||
if (random.nextInt(100) < chanceSiftedOre) drops.add(SlimefunItems.SIFTED_ORE);
|
if (random.nextInt(100) < chanceSiftedOre) drops.add(SlimefunItems.SIFTED_ORE);
|
||||||
else if (random.nextInt(100) < chanceClay) drops.add(new ItemStack(Material.CLAY_BALL));
|
else if (random.nextInt(100) < chanceClay) drops.add(new ItemStack(Material.CLAY_BALL));
|
||||||
else if (random.nextInt(100) < chanceFlint) drops.add(new ItemStack(Material.FLINT));
|
else if (random.nextInt(100) < chanceFlint) drops.add(new ItemStack(Material.FLINT));
|
||||||
|
else if (random.nextInt(100) < chanceIronNuggets) drops.add(new ItemStack(Material.IRON_NUGGET));
|
||||||
|
|
||||||
e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType());
|
e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType());
|
||||||
e.getClickedBlock().setType(Material.AIR);
|
e.getClickedBlock().setType(Material.AIR);
|
||||||
|
@ -17,7 +17,12 @@ public class HerculesPickaxe extends SimpleSlimefunItem<BlockBreakHandler> {
|
|||||||
public HerculesPickaxe(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
public HerculesPickaxe(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean areItemHandlersPrivate() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockBreakHandler getItemHandler() {
|
public BlockBreakHandler getItemHandler() {
|
||||||
return (e, item, fortune, drops) -> {
|
return (e, item, fortune, drops) -> {
|
||||||
|
@ -17,7 +17,7 @@ public class HunterTalisman extends Talisman {
|
|||||||
public HunterTalisman(SlimefunItemStack item, ItemStack[] recipe, boolean consumable, boolean cancelEvent, String messageSuffix, int chance) {
|
public HunterTalisman(SlimefunItemStack item, ItemStack[] recipe, boolean consumable, boolean cancelEvent, String messageSuffix, int chance) {
|
||||||
super(item, recipe, consumable, cancelEvent, messageSuffix, chance);
|
super(item, recipe, consumable, cancelEvent, messageSuffix, chance);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void preRegister() {
|
public void preRegister() {
|
||||||
addItemHandler(getItemHandler());
|
addItemHandler(getItemHandler());
|
||||||
|
@ -12,11 +12,12 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public class InfernalBonemeal extends SimpleSlimefunItem<ItemInteractionHandler> {
|
public class InfernalBonemeal extends SimpleSlimefunItem<ItemInteractionHandler> {
|
||||||
|
|
||||||
public InfernalBonemeal(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) {
|
public InfernalBonemeal(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) {
|
||||||
super(category, item, id, recipeType, recipe, recipeOutput);
|
super(category, item, recipeType, recipe, recipeOutput);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -41,9 +41,12 @@ public class KnowledgeTome extends SimpleSlimefunItem<ItemInteractionHandler> {
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else if (SlimefunManager.isItemSimiliar(item, getItem(), false)) {
|
else if (SlimefunManager.isItemSimiliar(item, getItem(), false)) {
|
||||||
PlayerProfile profile = PlayerProfile.get(p);
|
PlayerProfile.get(p, profile -> {
|
||||||
Set<Research> researches = PlayerProfile.fromUUID(UUID.fromString(ChatColor.stripColor(item.getItemMeta().getLore().get(1)))).getResearches();
|
PlayerProfile.fromUUID(UUID.fromString(ChatColor.stripColor(item.getItemMeta().getLore().get(1))), owner -> {
|
||||||
researches.forEach(research -> profile.setResearched(research, true));
|
Set<Research> researches = owner.getResearches();
|
||||||
|
researches.forEach(research -> profile.setResearched(research, true));
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false);
|
if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false);
|
||||||
return true;
|
return true;
|
||||||
|
@ -24,7 +24,12 @@ public class LumberAxe extends SimpleSlimefunItem<BlockBreakHandler> implements
|
|||||||
public LumberAxe(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
public LumberAxe(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean areItemHandlersPrivate() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockBreakHandler getItemHandler() {
|
public BlockBreakHandler getItemHandler() {
|
||||||
return (e, item, fortune, drops) -> {
|
return (e, item, fortune, drops) -> {
|
||||||
|
@ -8,28 +8,33 @@ import org.bukkit.potion.PotionEffectType;
|
|||||||
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public class MagicSugar extends SimpleSlimefunItem<ItemInteractionHandler> {
|
public class MagicSugar extends SimpleSlimefunItem<ItemInteractionHandler> {
|
||||||
|
|
||||||
|
private int speed;
|
||||||
|
|
||||||
public MagicSugar(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) {
|
public MagicSugar(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) {
|
||||||
super(category, item, recipeType, recipe, keys, values);
|
super(category, item, recipeType, recipe, keys, values);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void postRegister() {
|
||||||
|
speed = (int) Slimefun.getItemValue("MAGIC_SUGAR", "effects.SPEED");
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemInteractionHandler getItemHandler() {
|
public ItemInteractionHandler getItemHandler() {
|
||||||
return (e, p, item) -> {
|
return (e, p, item) -> {
|
||||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.MAGIC_SUGAR, true)) {
|
if (isItem(item)) {
|
||||||
if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false);
|
if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(item, false);
|
||||||
|
|
||||||
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1);
|
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_GENERIC_EAT, 1, 1);
|
||||||
p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 600, (Integer) Slimefun.getItemValue("MAGIC_SUGAR", "effects.SPEED")));
|
p.addPotionEffect(new PotionEffect(PotionEffectType.SPEED, 600, speed));
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
else return false;
|
else return false;
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
||||||
|
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemConsumptionHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
|
public class MeatJerky extends SimpleSlimefunItem<ItemConsumptionHandler> {
|
||||||
|
|
||||||
|
private int saturation;
|
||||||
|
|
||||||
|
public MeatJerky(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
|
super(category, item, recipeType, recipe, new String[] {"Saturation"}, new Object[] {18});
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void postRegister() {
|
||||||
|
saturation = (int) Slimefun.getItemValue(getID(), "Saturation");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemConsumptionHandler getItemHandler() {
|
||||||
|
return (e, p, item) -> {
|
||||||
|
if (isItem(item)) {
|
||||||
|
p.setSaturation(saturation);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -17,7 +17,7 @@ public class MonsterJerky extends SimpleSlimefunItem<ItemConsumptionHandler> {
|
|||||||
public MonsterJerky(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
public MonsterJerky(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemConsumptionHandler getItemHandler() {
|
public ItemConsumptionHandler getItemHandler() {
|
||||||
return (e, p, item) -> {
|
return (e, p, item) -> {
|
||||||
|
@ -0,0 +1,36 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
||||||
|
|
||||||
|
import org.bukkit.ChatColor;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
|
|
||||||
|
public class Multimeter extends SimpleSlimefunItem<ItemInteractionHandler> {
|
||||||
|
|
||||||
|
public Multimeter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
|
super(category, item, recipeType, recipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemInteractionHandler getItemHandler() {
|
||||||
|
return (e, p, item) -> {
|
||||||
|
if (isItem(item)) {
|
||||||
|
if (e.getClickedBlock() != null && ChargableBlock.isChargable(e.getClickedBlock())) {
|
||||||
|
e.setCancelled(true);
|
||||||
|
p.sendMessage("");
|
||||||
|
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&bStored Energy: &3" + DoubleHandler.getFancyDouble(ChargableBlock.getCharge(e.getClickedBlock())) + " J"));
|
||||||
|
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&bCapacity: &3" + DoubleHandler.getFancyDouble(ChargableBlock.getMaxCharge(e.getClickedBlock())) + " J"));
|
||||||
|
p.sendMessage("");
|
||||||
|
}
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,94 @@
|
|||||||
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
import java.util.Random;
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
|
import org.bukkit.Effect;
|
||||||
|
import org.bukkit.Material;
|
||||||
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
|
public class NetherGoldPan extends SimpleSlimefunItem<ItemInteractionHandler> implements RecipeDisplayItem {
|
||||||
|
|
||||||
|
private final List<ItemStack> recipes;
|
||||||
|
|
||||||
|
private int chanceQuartz;
|
||||||
|
private int chanceGoldNuggets;
|
||||||
|
private int chanceNetherWart;
|
||||||
|
private int chanceBlazePowder;
|
||||||
|
private int chanceGlowstoneDust;
|
||||||
|
private int chanceGhastTear;
|
||||||
|
|
||||||
|
public NetherGoldPan(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
|
super(category, item, recipeType, recipe,
|
||||||
|
new String[] {"chance.QUARTZ", "chance.GOLD_NUGGET", "chance.NETHER_WART", "chance.BLAZE_POWDER", "chance.GLOWSTONE_DUST", "chance.GHAST_TEAR"},
|
||||||
|
new Integer[] {50, 25, 10, 8, 5, 2}
|
||||||
|
);
|
||||||
|
|
||||||
|
recipes = Arrays.asList(
|
||||||
|
new ItemStack(Material.SOUL_SAND), new ItemStack(Material.QUARTZ),
|
||||||
|
new ItemStack(Material.SOUL_SAND), new ItemStack(Material.GOLD_NUGGET),
|
||||||
|
new ItemStack(Material.SOUL_SAND), new ItemStack(Material.NETHER_WART),
|
||||||
|
new ItemStack(Material.SOUL_SAND), new ItemStack(Material.BLAZE_POWDER),
|
||||||
|
new ItemStack(Material.SOUL_SAND), new ItemStack(Material.GLOWSTONE_DUST),
|
||||||
|
new ItemStack(Material.SOUL_SAND), new ItemStack(Material.GHAST_TEAR)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void postRegister() {
|
||||||
|
chanceQuartz = (int) Slimefun.getItemValue(getID(), "chance.QUARTZ");
|
||||||
|
chanceGoldNuggets = (int) Slimefun.getItemValue(getID(), "chance.GOLD_NUGGET");
|
||||||
|
chanceNetherWart = (int) Slimefun.getItemValue(getID(), "chance.NETHER_WART");
|
||||||
|
chanceBlazePowder = (int) Slimefun.getItemValue(getID(), "chance.BLAZE_POWDER");
|
||||||
|
chanceGlowstoneDust = (int) Slimefun.getItemValue(getID(), "chance.GLOWSTONE_DUST");
|
||||||
|
chanceGhastTear = (int) Slimefun.getItemValue(getID(), "chance.GHAST_TEAR");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ItemInteractionHandler getItemHandler() {
|
||||||
|
return (e, p, item) -> {
|
||||||
|
if (isItem(item)) {
|
||||||
|
if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.SOUL_SAND && SlimefunPlugin.getProtectionManager().hasPermission(p, e.getClickedBlock().getLocation(), ProtectableAction.BREAK_BLOCK)) {
|
||||||
|
List<ItemStack> drops = new ArrayList<>();
|
||||||
|
Random random = ThreadLocalRandom.current();
|
||||||
|
|
||||||
|
if (random.nextInt(100) < chanceQuartz) drops.add(new ItemStack(Material.QUARTZ));
|
||||||
|
else if (random.nextInt(100) < chanceGoldNuggets) drops.add(new ItemStack(Material.GOLD_NUGGET));
|
||||||
|
else if (random.nextInt(100) < chanceNetherWart) drops.add(new ItemStack(Material.NETHER_WART));
|
||||||
|
else if (random.nextInt(100) < chanceBlazePowder) drops.add(new ItemStack(Material.BLAZE_POWDER));
|
||||||
|
else if (random.nextInt(100) < chanceGlowstoneDust) drops.add(new ItemStack(Material.GLOWSTONE_DUST));
|
||||||
|
else if (random.nextInt(100) < chanceGhastTear) drops.add(new ItemStack(Material.GHAST_TEAR));
|
||||||
|
|
||||||
|
e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType());
|
||||||
|
e.getClickedBlock().setType(Material.AIR);
|
||||||
|
|
||||||
|
for (ItemStack drop: drops) {
|
||||||
|
e.getClickedBlock().getWorld().dropItemNaturally(e.getClickedBlock().getLocation(), drop);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
e.setCancelled(true);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
else return false;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<ItemStack> getDisplayRecipes() {
|
||||||
|
return recipes;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -23,7 +23,12 @@ public class PickaxeOfContainment extends SimpleSlimefunItem<BlockBreakHandler>
|
|||||||
public PickaxeOfContainment(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
public PickaxeOfContainment(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean areItemHandlersPrivate() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockBreakHandler getItemHandler() {
|
public BlockBreakHandler getItemHandler() {
|
||||||
return (e, item, fortune, drops) -> {
|
return (e, item, fortune, drops) -> {
|
||||||
|
@ -23,6 +23,11 @@ public class PickaxeOfVeinMining extends SimpleSlimefunItem<BlockBreakHandler> {
|
|||||||
public PickaxeOfVeinMining(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
public PickaxeOfVeinMining(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean areItemHandlersPrivate() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockBreakHandler getItemHandler() {
|
public BlockBreakHandler getItemHandler() {
|
||||||
|
@ -7,18 +7,18 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public class PortableGEOScanner extends SimpleSlimefunItem<ItemInteractionHandler> {
|
public class PortableGEOScanner extends SimpleSlimefunItem<ItemInteractionHandler> {
|
||||||
|
|
||||||
public PortableGEOScanner(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
public PortableGEOScanner(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ItemInteractionHandler getItemHandler() {
|
public ItemInteractionHandler getItemHandler() {
|
||||||
return (e, p, item) -> {
|
return (e, p, item) -> {
|
||||||
if (SlimefunManager.isItemSimiliar(item, getItem(), true)) {
|
if (isItem(item)) {
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
GEOScanner.scanChunk(p, p.getLocation().getChunk());
|
GEOScanner.scanChunk(p, p.getLocation().getChunk());
|
||||||
return true;
|
return true;
|
||||||
|
@ -1,18 +1,19 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.Collection;
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
import org.bukkit.Effect;
|
import org.bukkit.Effect;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import io.github.thebusybiscuit.cscorelib2.materials.MaterialCollections;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Recipe.RecipeCalculator;
|
import io.github.thebusybiscuit.cscorelib2.recipes.MinecraftRecipe;
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockBreakHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
@ -21,25 +22,35 @@ public class SmeltersPickaxe extends SimpleSlimefunItem<BlockBreakHandler> {
|
|||||||
public SmeltersPickaxe(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
public SmeltersPickaxe(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean areItemHandlersPrivate() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public BlockBreakHandler getItemHandler() {
|
public BlockBreakHandler getItemHandler() {
|
||||||
return (e, item, fortune, drops) -> {
|
return (e, item, fortune, drops) -> {
|
||||||
if (SlimefunManager.isItemSimiliar(item, getItem(), true)) {
|
if (isItem(item)) {
|
||||||
if (BlockStorage.hasBlockInfo(e.getBlock())) return true;
|
if (BlockStorage.hasBlockInfo(e.getBlock())) return true;
|
||||||
if (e.getBlock().getType() == Material.PLAYER_HEAD) return true;
|
if (e.getBlock().getType() == Material.PLAYER_HEAD) return true;
|
||||||
|
|
||||||
int j = -1;
|
Collection<ItemStack> blockDrops = e.getBlock().getDrops();
|
||||||
List<ItemStack> dropsList = (List<ItemStack>) e.getBlock().getDrops();
|
for (ItemStack drop: blockDrops) {
|
||||||
for (int i = 0; i < dropsList.size(); i++) {
|
if (drop != null) {
|
||||||
if (dropsList.get(i) != null) {
|
ItemStack output = drop;
|
||||||
j++;
|
|
||||||
drops.add(e.getBlock().getType().toString().endsWith("_ORE") ? new CustomItem(dropsList.get(i), fortune): dropsList.get(i));
|
if (MaterialCollections.getAllOres().contains(e.getBlock().getType())) {
|
||||||
ItemStack output = RecipeCalculator.getSmeltedOutput(drops.get(i).getType());
|
output.setAmount(fortune);
|
||||||
if (output != null) {
|
|
||||||
e.getBlock().getWorld().playEffect(e.getBlock().getLocation(), Effect.MOBSPAWNER_FLAMES, 1);
|
Optional<ItemStack> furnaceOutput = SlimefunPlugin.getMinecraftRecipes().getRecipeOutput(MinecraftRecipe.FURNACE, drop);
|
||||||
drops.set(j, new CustomItem(output, drops.get(i).getAmount()));
|
if (furnaceOutput.isPresent()) {
|
||||||
|
e.getBlock().getWorld().playEffect(e.getBlock().getLocation(), Effect.MOBSPAWNER_FLAMES, 1);
|
||||||
|
output.setType(furnaceOutput.get().getType());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
drops.add(output);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -21,11 +21,17 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemDropHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemDropHandler;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public class SoulboundRune extends SimpleSlimefunItem<ItemDropHandler> {
|
public class SoulboundRune extends SimpleSlimefunItem<ItemDropHandler> {
|
||||||
|
|
||||||
public SoulboundRune(Category category, ItemStack item, String id, RecipeType type, ItemStack[] recipe) {
|
public SoulboundRune(Category category, SlimefunItemStack item, RecipeType type, ItemStack[] recipe) {
|
||||||
super(category, item, id, type, recipe);
|
super(category, item, type, recipe);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean areItemHandlersPrivate() {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -34,6 +34,11 @@ public class SwordOfBeheading extends SimpleSlimefunItem<EntityKillHandler> {
|
|||||||
super(category, item, recipeType, recipe, keys, values);
|
super(category, item, recipeType, recipe, keys, values);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
protected boolean areItemHandlersPrivate() {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public EntityKillHandler getItemHandler() {
|
public EntityKillHandler getItemHandler() {
|
||||||
return (e, entity, killer, item) -> {
|
return (e, entity, killer, item) -> {
|
||||||
|
@ -16,11 +16,12 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public class InfusedHopper extends SimpleSlimefunItem<BlockTicker> {
|
public class InfusedHopper extends SimpleSlimefunItem<BlockTicker> {
|
||||||
|
|
||||||
public InfusedHopper(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
public InfusedHopper(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -25,7 +25,9 @@ public class ReactorAccessPort extends SlimefunItem {
|
|||||||
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 21, 23};
|
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 21, 23};
|
||||||
private static final int[] border_1 = {9, 10, 11, 18, 20, 27, 29, 36, 38, 45, 46, 47};
|
private static final int[] border_1 = {9, 10, 11, 18, 20, 27, 29, 36, 38, 45, 46, 47};
|
||||||
private static final int[] border_2 = {15, 16, 17, 24, 26, 33, 35, 42, 44, 51, 52, 53};
|
private static final int[] border_2 = {15, 16, 17, 24, 26, 33, 35, 42, 44, 51, 52, 53};
|
||||||
private static final int[] border_3 = {30, 31, 32, 39, 41, 48, 49, 50};
|
private static final int[] border_3 = {30, 31, 32, 39, 41, 48, 50};
|
||||||
|
|
||||||
|
private static final int INFO_SLOT = 49;
|
||||||
|
|
||||||
public ReactorAccessPort(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public ReactorAccessPort(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, name, recipeType, recipe);
|
||||||
@ -39,39 +41,30 @@ public class ReactorAccessPort extends SlimefunItem {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean canOpen(Block b, Player p) {
|
public boolean canOpen(Block b, Player p) {
|
||||||
if(p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES)) {
|
return p.hasPermission("slimefun.inventory.bypass") || SlimefunPlugin.getProtectionManager().hasPermission(p, b.getLocation(), ProtectableAction.ACCESS_INVENTORIES);
|
||||||
AReactor reactor = getReactor(b.getLocation());
|
}
|
||||||
if (reactor != null) {
|
|
||||||
boolean empty = true;
|
@Override
|
||||||
BlockMenu bm = getReactorMenu(b.getLocation());
|
public void newInstance(final BlockMenu menu, final Block b) {
|
||||||
|
BlockMenu reactor = getReactorMenu(b.getLocation());
|
||||||
if (bm != null) {
|
if (reactor != null) {
|
||||||
for (int slot: reactor.getCoolantSlots()) {
|
menu.replaceExistingItem(INFO_SLOT, new CustomItem(new ItemStack(Material.GREEN_WOOL), "&7Reactor", "", "&6Detected", "", "&7> Click to view Reactor"));
|
||||||
if (bm.getItemInSlot(slot) != null) {
|
menu.addMenuClickHandler(INFO_SLOT, (p, slot, item, action) -> {
|
||||||
empty = false;
|
if(reactor != null) {
|
||||||
}
|
reactor.open(p);
|
||||||
}
|
|
||||||
|
|
||||||
for (int slot: reactor.getFuelSlots()) {
|
|
||||||
if (bm.getItemInSlot(slot) != null) {
|
|
||||||
empty = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!empty || !p.isSneaking()) {
|
|
||||||
//reactor is not empty, lets view it's inventory instead.
|
|
||||||
bm.open(p);
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
newInstance(menu, b);
|
||||||
return true;
|
|
||||||
|
|
||||||
}
|
return false;
|
||||||
|
});
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
menu.replaceExistingItem(INFO_SLOT, new CustomItem(new ItemStack(Material.RED_WOOL), "&7Reactor", "", "&cNot detected", "", "&7Reactor must be", "&7placed 3 blocks below", "&7the access port!"));
|
||||||
|
menu.addMenuClickHandler(INFO_SLOT, (p, slot, item, action) -> {
|
||||||
|
newInstance(menu, b);
|
||||||
|
return false;
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -171,7 +164,7 @@ public class ReactorAccessPort extends SlimefunItem {
|
|||||||
Location reactorL = new Location(l.getWorld(), l.getX(), l.getY() - 3, l.getZ());
|
Location reactorL = new Location(l.getWorld(), l.getX(), l.getY() - 3, l.getZ());
|
||||||
|
|
||||||
SlimefunItem item = BlockStorage.check(reactorL.getBlock());
|
SlimefunItem item = BlockStorage.check(reactorL.getBlock());
|
||||||
if (item instanceof AReactor) return BlockStorage.getInventory(l);
|
if (item instanceof AReactor) return BlockStorage.getInventory(reactorL);
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
|
|
||||||
@ -19,16 +20,14 @@ public class TrashCan extends SlimefunItem implements InventoryBlock {
|
|||||||
|
|
||||||
private static final int[] border = {0, 1, 2, 3, 5, 4, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
|
private static final int[] border = {0, 1, 2, 3, 5, 4, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
|
||||||
|
|
||||||
public TrashCan(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public TrashCan(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
createPreset(this, "&4Trash Can", this::constructMenu);
|
createPreset(this, "&4Trash Can", this::constructMenu);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void constructMenu(BlockMenuPreset preset) {
|
private void constructMenu(BlockMenuPreset preset) {
|
||||||
for (int i : border) {
|
for (int i : border) {
|
||||||
preset.addItem(i, new CustomItem(new ItemStack(Material.RED_STAINED_GLASS_PANE), " "),
|
preset.addItem(i, new CustomItem(new ItemStack(Material.RED_STAINED_GLASS_PANE), " "), (p, slot, item, action) -> false);
|
||||||
(p, slot, item, action) -> false
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -22,6 +22,7 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
|||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
@ -32,11 +33,11 @@ public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBl
|
|||||||
|
|
||||||
protected int energyConsumption = 14;
|
protected int energyConsumption = 14;
|
||||||
|
|
||||||
public AnimalGrowthAccelerator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public AnimalGrowthAccelerator(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
createPreset(this, "&bGrowth Accelerator", this::constructMenu);
|
createPreset(this, "&bGrowth Accelerator", this::constructMenu);
|
||||||
|
|
||||||
registerBlockHandler(name, (p, b, tool, reason) -> {
|
registerBlockHandler(getID(), (p, b, tool, reason) -> {
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot : getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
|
@ -15,14 +15,15 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
||||||
|
|
||||||
public abstract class AutoAnvil extends AContainer {
|
public abstract class AutoAnvil extends AContainer {
|
||||||
|
|
||||||
public AutoAnvil(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public AutoAnvil(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -49,10 +50,12 @@ public abstract class AutoAnvil extends AContainer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(b);
|
||||||
|
|
||||||
if (isProcessing(b)) {
|
if (isProcessing(b)) {
|
||||||
int timeleft = progress.get(b);
|
int timeleft = progress.get(b);
|
||||||
if (timeleft > 0) {
|
if (timeleft > 0) {
|
||||||
MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
||||||
|
|
||||||
if (ChargableBlock.isChargable(b)) {
|
if (ChargableBlock.isChargable(b)) {
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
||||||
@ -62,7 +65,7 @@ public abstract class AutoAnvil extends AContainer {
|
|||||||
else progress.put(b, timeleft - 1);
|
else progress.put(b, timeleft - 1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
||||||
pushItems(b, processing.get(b).getOutput());
|
pushItems(b, processing.get(b).getOutput());
|
||||||
|
|
||||||
progress.remove(b);
|
progress.remove(b);
|
||||||
@ -70,7 +73,6 @@ public abstract class AutoAnvil extends AContainer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockMenu menu = BlockStorage.getInventory(b);
|
|
||||||
MachineRecipe recipe = null;
|
MachineRecipe recipe = null;
|
||||||
|
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot: getInputSlots()) {
|
||||||
|
@ -19,6 +19,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
@ -29,11 +30,11 @@ public class AutoBreeder extends SlimefunItem implements InventoryBlock {
|
|||||||
|
|
||||||
protected int energyConsumption = 60;
|
protected int energyConsumption = 60;
|
||||||
|
|
||||||
public AutoBreeder(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public AutoBreeder(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
createPreset(this, "&6Auto Breeder", this::constructMenu);
|
createPreset(this, "&6Auto Breeder", this::constructMenu);
|
||||||
|
|
||||||
registerBlockHandler(name, (p, b, tool, reason) -> {
|
registerBlockHandler(getID(), (p, b, tool, reason) -> {
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot : getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
|
@ -5,9 +5,12 @@ import java.util.HashSet;
|
|||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.Slimefun.Events.AutoDisenchantEvent;
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.enchantments.Enchantment;
|
import org.bukkit.enchantments.Enchantment;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
|
import org.bukkit.inventory.meta.EnchantmentStorageMeta;
|
||||||
|
|
||||||
@ -22,14 +25,17 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
||||||
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
import org.bukkit.inventory.meta.Repairable;
|
||||||
|
|
||||||
public class AutoDisenchanter extends AContainer {
|
public class AutoDisenchanter extends AContainer {
|
||||||
|
|
||||||
public AutoDisenchanter(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public AutoDisenchanter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -49,10 +55,12 @@ public class AutoDisenchanter extends AContainer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(b);
|
||||||
|
|
||||||
if (isProcessing(b)) {
|
if (isProcessing(b)) {
|
||||||
int timeleft = progress.get(b);
|
int timeleft = progress.get(b);
|
||||||
if (timeleft > 0) {
|
if (timeleft > 0) {
|
||||||
MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
||||||
|
|
||||||
if (ChargableBlock.isChargable(b)) {
|
if (ChargableBlock.isChargable(b)) {
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
||||||
@ -62,7 +70,7 @@ public class AutoDisenchanter extends AContainer {
|
|||||||
else progress.put(b, timeleft - 1);
|
else progress.put(b, timeleft - 1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
||||||
pushItems(b, processing.get(b).getOutput());
|
pushItems(b, processing.get(b).getOutput());
|
||||||
|
|
||||||
progress.remove(b);
|
progress.remove(b);
|
||||||
@ -70,18 +78,17 @@ public class AutoDisenchanter extends AContainer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockMenu menu = BlockStorage.getInventory(b);
|
|
||||||
MachineRecipe recipe = null;
|
MachineRecipe recipe = null;
|
||||||
Map<Enchantment, Integer> enchantments = new HashMap<>();
|
Map<Enchantment, Integer> enchantments = new HashMap<>();
|
||||||
Set<ItemEnchantment> enchantments2 = new HashSet<>();
|
Set<ItemEnchantment> enchantments2 = new HashSet<>();
|
||||||
|
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot: getInputSlots()) {
|
||||||
ItemStack target = menu.getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]);
|
ItemStack target = menu.getItemInSlot(slot == getInputSlots()[0] ? getInputSlots()[1]: getInputSlots()[0]);
|
||||||
ItemStack item = menu.getItemInSlot(slot);
|
ItemStack item = menu.getItemInSlot(slot);
|
||||||
|
|
||||||
// Check if disenchantable
|
// Check if disenchantable
|
||||||
SlimefunItem sfItem = null;
|
SlimefunItem sfItem = null;
|
||||||
|
|
||||||
// stops endless checks of getByItem for empty book stacks.
|
// stops endless checks of getByItem for empty book stacks.
|
||||||
if ((item != null) && (item.getType() != Material.BOOK)) {
|
if ((item != null) && (item.getType() != Material.BOOK)) {
|
||||||
sfItem = SlimefunItem.getByItem(item);
|
sfItem = SlimefunItem.getByItem(item);
|
||||||
@ -89,7 +96,13 @@ public class AutoDisenchanter extends AContainer {
|
|||||||
if (sfItem != null && !sfItem.isDisenchantable()) {
|
if (sfItem != null && !sfItem.isDisenchantable()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
AutoDisenchantEvent event = new AutoDisenchantEvent(item);
|
||||||
|
Bukkit.getPluginManager().callEvent(event);
|
||||||
|
if (event.isCancelled()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Disenchanting
|
// Disenchanting
|
||||||
if (item != null && target != null && target.getType() == Material.BOOK) {
|
if (item != null && target != null && target.getType() == Material.BOOK) {
|
||||||
int amount = 0;
|
int amount = 0;
|
||||||
@ -110,8 +123,16 @@ public class AutoDisenchanter extends AContainer {
|
|||||||
ItemStack book = target.clone();
|
ItemStack book = target.clone();
|
||||||
book.setAmount(1);
|
book.setAmount(1);
|
||||||
book.setType(Material.ENCHANTED_BOOK);
|
book.setType(Material.ENCHANTED_BOOK);
|
||||||
|
|
||||||
|
ItemMeta itemMeta = newItem.getItemMeta();
|
||||||
|
ItemMeta bookMeta = book.getItemMeta();
|
||||||
|
((Repairable) bookMeta).setRepairCost(((Repairable) itemMeta).getRepairCost());
|
||||||
|
((Repairable) itemMeta).setRepairCost(0);
|
||||||
|
newItem.setItemMeta(itemMeta);
|
||||||
|
book.setItemMeta(bookMeta);
|
||||||
|
|
||||||
EnchantmentStorageMeta meta = (EnchantmentStorageMeta) book.getItemMeta();
|
EnchantmentStorageMeta meta = (EnchantmentStorageMeta) book.getItemMeta();
|
||||||
|
|
||||||
for (Map.Entry<Enchantment,Integer> e: enchantments.entrySet()) {
|
for (Map.Entry<Enchantment,Integer> e: enchantments.entrySet()) {
|
||||||
newItem.removeEnchantment(e.getKey());
|
newItem.removeEnchantment(e.getKey());
|
||||||
meta.addStoredEnchant(e.getKey(), e.getValue(), true);
|
meta.addStoredEnchant(e.getKey(), e.getValue(), true);
|
||||||
@ -122,7 +143,7 @@ public class AutoDisenchanter extends AContainer {
|
|||||||
EmeraldEnchants.getInstance().getRegistry().applyEnchantment(book, e.getEnchantment(), e.getLevel());
|
EmeraldEnchants.getInstance().getRegistry().applyEnchantment(book, e.getEnchantment(), e.getLevel());
|
||||||
EmeraldEnchants.getInstance().getRegistry().applyEnchantment(newItem, e.getEnchantment(), 0);
|
EmeraldEnchants.getInstance().getRegistry().applyEnchantment(newItem, e.getEnchantment(), 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
recipe = new MachineRecipe(100 * amount, new ItemStack[] {target, item}, new ItemStack[] {newItem, book});
|
recipe = new MachineRecipe(100 * amount, new ItemStack[] {target, item}, new ItemStack[] {newItem, book});
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -131,11 +152,11 @@ public class AutoDisenchanter extends AContainer {
|
|||||||
|
|
||||||
if (recipe != null) {
|
if (recipe != null) {
|
||||||
if (!fits(b, recipe.getOutput())) return;
|
if (!fits(b, recipe.getOutput())) return;
|
||||||
|
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot: getInputSlots()) {
|
||||||
menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
|
menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
|
||||||
}
|
}
|
||||||
|
|
||||||
processing.put(b, recipe);
|
processing.put(b, recipe);
|
||||||
progress.put(b, recipe.getTicks());
|
progress.put(b, recipe.getTicks());
|
||||||
}
|
}
|
||||||
|
@ -18,15 +18,17 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
||||||
|
|
||||||
public class AutoDrier extends AContainer implements RecipeDisplayItem {
|
public class AutoDrier extends AContainer implements RecipeDisplayItem {
|
||||||
|
|
||||||
private final List<ItemStack> recipeList = new ArrayList<>();
|
private final List<ItemStack> recipeList = new ArrayList<>();
|
||||||
|
|
||||||
public AutoDrier(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
public AutoDrier(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
|
|
||||||
recipeList.add(new ItemStack(Material.ROTTEN_FLESH));
|
recipeList.add(new ItemStack(Material.ROTTEN_FLESH));
|
||||||
recipeList.add(new ItemStack(Material.LEATHER));
|
recipeList.add(new ItemStack(Material.LEATHER));
|
||||||
@ -37,9 +39,6 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem {
|
|||||||
recipeList.add(new ItemStack(Material.KELP));
|
recipeList.add(new ItemStack(Material.KELP));
|
||||||
recipeList.add(new ItemStack(Material.DRIED_KELP));
|
recipeList.add(new ItemStack(Material.DRIED_KELP));
|
||||||
|
|
||||||
recipeList.add(new ItemStack(Material.COOKED_BEEF));
|
|
||||||
recipeList.add(SlimefunItems.BEEF_JERKY);
|
|
||||||
|
|
||||||
recipeList.add(new ItemStack(Material.POTION));
|
recipeList.add(new ItemStack(Material.POTION));
|
||||||
recipeList.add(new ItemStack(Material.GLASS_BOTTLE));
|
recipeList.add(new ItemStack(Material.GLASS_BOTTLE));
|
||||||
|
|
||||||
@ -51,6 +50,24 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem {
|
|||||||
|
|
||||||
recipeList.add(new ItemStack(Material.WATER_BUCKET));
|
recipeList.add(new ItemStack(Material.WATER_BUCKET));
|
||||||
recipeList.add(new ItemStack(Material.BUCKET));
|
recipeList.add(new ItemStack(Material.BUCKET));
|
||||||
|
|
||||||
|
recipeList.add(new ItemStack(Material.COOKED_BEEF));
|
||||||
|
recipeList.add(SlimefunItems.BEEF_JERKY);
|
||||||
|
|
||||||
|
recipeList.add(new ItemStack(Material.COOKED_PORKCHOP));
|
||||||
|
recipeList.add(SlimefunItems.PORK_JERKY);
|
||||||
|
|
||||||
|
recipeList.add(new ItemStack(Material.COOKED_CHICKEN));
|
||||||
|
recipeList.add(SlimefunItems.CHICKEN_JERKY);
|
||||||
|
|
||||||
|
recipeList.add(new ItemStack(Material.COOKED_MUTTON));
|
||||||
|
recipeList.add(SlimefunItems.MUTTON_JERKY);
|
||||||
|
|
||||||
|
recipeList.add(new ItemStack(Material.COOKED_RABBIT));
|
||||||
|
recipeList.add(SlimefunItems.RABBIT_JERKY);
|
||||||
|
|
||||||
|
recipeList.add(new ItemStack(Material.COOKED_COD));
|
||||||
|
recipeList.add(SlimefunItems.FISH_JERKY);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -70,10 +87,12 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(b);
|
||||||
|
|
||||||
if (isProcessing(b)) {
|
if (isProcessing(b)) {
|
||||||
int timeleft = progress.get(b);
|
int timeleft = progress.get(b);
|
||||||
if (timeleft > 0) {
|
if (timeleft > 0) {
|
||||||
MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
||||||
|
|
||||||
if (ChargableBlock.isChargable(b)) {
|
if (ChargableBlock.isChargable(b)) {
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
||||||
@ -83,8 +102,8 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem {
|
|||||||
else progress.put(b, timeleft - 1);
|
else progress.put(b, timeleft - 1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
||||||
pushItems(b, processing.get(b).getOutput());
|
menu.pushItem(processing.get(b).getOutput()[0], getOutputSlots());
|
||||||
|
|
||||||
progress.remove(b);
|
progress.remove(b);
|
||||||
processing.remove(b);
|
processing.remove(b);
|
||||||
@ -95,7 +114,7 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem {
|
|||||||
int inputSlot = -1;
|
int inputSlot = -1;
|
||||||
|
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot: getInputSlots()) {
|
||||||
ItemStack item = BlockStorage.getInventory(b).getItemInSlot(slot);
|
ItemStack item = menu.getItemInSlot(slot);
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
Material mat = item.getType();
|
Material mat = item.getType();
|
||||||
ItemStack output = null;
|
ItemStack output = null;
|
||||||
@ -126,8 +145,8 @@ public class AutoDrier extends AContainer implements RecipeDisplayItem {
|
|||||||
|
|
||||||
if (r != null) {
|
if (r != null) {
|
||||||
if (inputSlot == -1) return;
|
if (inputSlot == -1) return;
|
||||||
if (!fits(b, r.getOutput())) return;
|
if (!menu.fits(r.getOutput()[0], getOutputSlots())) return;
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(inputSlot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(inputSlot), 1));
|
menu.replaceExistingItem(inputSlot, InvUtils.decreaseItem(menu.getItemInSlot(inputSlot), 1));
|
||||||
processing.put(b, r);
|
processing.put(b, r);
|
||||||
progress.put(b, r.getTicks());
|
progress.put(b, r.getTicks());
|
||||||
}
|
}
|
||||||
|
@ -22,14 +22,15 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
||||||
|
|
||||||
public class AutoEnchanter extends AContainer {
|
public class AutoEnchanter extends AContainer {
|
||||||
|
|
||||||
public AutoEnchanter(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public AutoEnchanter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -49,10 +50,11 @@ public class AutoEnchanter extends AContainer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(b.getLocation());
|
||||||
if (isProcessing(b)) {
|
if (isProcessing(b)) {
|
||||||
int timeleft = progress.get(b);
|
int timeleft = progress.get(b);
|
||||||
if (timeleft > 0) {
|
if (timeleft > 0) {
|
||||||
MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
||||||
|
|
||||||
if (ChargableBlock.isChargable(b)) {
|
if (ChargableBlock.isChargable(b)) {
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
||||||
@ -62,7 +64,7 @@ public class AutoEnchanter extends AContainer {
|
|||||||
else progress.put(b, timeleft - 1);
|
else progress.put(b, timeleft - 1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
||||||
pushItems(b, processing.get(b).getOutput());
|
pushItems(b, processing.get(b).getOutput());
|
||||||
|
|
||||||
progress.remove(b);
|
progress.remove(b);
|
||||||
@ -70,7 +72,6 @@ public class AutoEnchanter extends AContainer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockMenu menu = BlockStorage.getInventory(b.getLocation());
|
|
||||||
MachineRecipe recipe = null;
|
MachineRecipe recipe = null;
|
||||||
|
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot: getInputSlots()) {
|
||||||
|
@ -8,13 +8,15 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
|
import me.mrCookieSlime.Slimefun.api.energy.ItemEnergy;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
|
|
||||||
public class ChargingBench extends AContainer {
|
public class ChargingBench extends AContainer {
|
||||||
|
|
||||||
public ChargingBench(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public ChargingBench(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -36,32 +38,33 @@ public class ChargingBench extends AContainer {
|
|||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
||||||
|
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(b);
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot: getInputSlots()) {
|
||||||
ItemStack stack = BlockStorage.getInventory(b).getItemInSlot(slot);
|
ItemStack stack = menu.getItemInSlot(slot);
|
||||||
if (ItemEnergy.getMaxEnergy(stack) > 0) {
|
if (ItemEnergy.getMaxEnergy(stack) > 0) {
|
||||||
if (ItemEnergy.getStoredEnergy(stack) < ItemEnergy.getMaxEnergy(stack)) {
|
if (ItemEnergy.getStoredEnergy(stack) < ItemEnergy.getMaxEnergy(stack)) {
|
||||||
|
|
||||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
||||||
float rest = ItemEnergy.addStoredEnergy(stack, getEnergyConsumption() / 2F);
|
float rest = ItemEnergy.addStoredEnergy(stack, getEnergyConsumption() / 2F);
|
||||||
if (rest > 0F) {
|
if (rest > 0F) {
|
||||||
if (fits(b, stack)) {
|
if (menu.fits(stack, getOutputSlots())) {
|
||||||
pushItems(b, stack);
|
menu.pushItem(stack, getOutputSlots());
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, null);
|
menu.replaceExistingItem(slot, null);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, stack);
|
menu.replaceExistingItem(slot, stack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, stack);
|
menu.replaceExistingItem(slot, stack);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (fits(b, stack)) {
|
else if (menu.fits(stack, getOutputSlots())) {
|
||||||
pushItems(b, stack);
|
menu.pushItem(stack, getOutputSlots());
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, null);
|
menu.replaceExistingItem(slot, null);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, stack);
|
menu.replaceExistingItem(slot, stack);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -22,6 +22,7 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
|||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
@ -41,11 +42,11 @@ public abstract class CropGrowthAccelerator extends SlimefunItem implements Inve
|
|||||||
crops.put(Material.SWEET_BERRY_BUSH, 3);
|
crops.put(Material.SWEET_BERRY_BUSH, 3);
|
||||||
}
|
}
|
||||||
|
|
||||||
public CropGrowthAccelerator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public CropGrowthAccelerator(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
createPreset(this, "&bGrowth Accelerator", this::constructMenu);
|
createPreset(this, "&bGrowth Accelerator", this::constructMenu);
|
||||||
|
|
||||||
registerBlockHandler(name, (p, b, tool, reason) -> {
|
registerBlockHandler(getID(), (p, b, tool, reason) -> {
|
||||||
BlockMenu inv = BlockStorage.getInventory(b);
|
BlockMenu inv = BlockStorage.getInventory(b);
|
||||||
if (inv != null) {
|
if (inv != null) {
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot: getInputSlots()) {
|
||||||
|
@ -16,13 +16,15 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
||||||
|
|
||||||
public abstract class ElectricDustWasher extends AContainer {
|
public abstract class ElectricDustWasher extends AContainer {
|
||||||
|
|
||||||
public ElectricDustWasher(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public ElectricDustWasher(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -39,10 +41,11 @@ public abstract class ElectricDustWasher extends AContainer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(b);
|
||||||
if (isProcessing(b)) {
|
if (isProcessing(b)) {
|
||||||
int timeleft = progress.get(b);
|
int timeleft = progress.get(b);
|
||||||
if (timeleft > 0 && getSpeed() < 10) {
|
if (timeleft > 0 && getSpeed() < 10) {
|
||||||
MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
||||||
|
|
||||||
if (ChargableBlock.isChargable(b)) {
|
if (ChargableBlock.isChargable(b)) {
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
||||||
@ -55,7 +58,7 @@ public abstract class ElectricDustWasher extends AContainer {
|
|||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
||||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
||||||
|
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
||||||
pushItems(b, processing.get(b).getOutput());
|
pushItems(b, processing.get(b).getOutput());
|
||||||
|
|
||||||
progress.remove(b);
|
progress.remove(b);
|
||||||
@ -66,12 +69,12 @@ public abstract class ElectricDustWasher extends AContainer {
|
|||||||
ItemStack[] items = SlimefunPlugin.getUtilities().oreWasherOutputs;
|
ItemStack[] items = SlimefunPlugin.getUtilities().oreWasherOutputs;
|
||||||
|
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot: getInputSlots()) {
|
||||||
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.SIFTED_ORE, true)) {
|
if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), SlimefunItems.SIFTED_ORE, true)) {
|
||||||
if (!SlimefunPlugin.getSettings().legacyDustWasher) {
|
if (!SlimefunPlugin.getSettings().legacyDustWasher) {
|
||||||
boolean emptySlot = false;
|
boolean emptySlot = false;
|
||||||
|
|
||||||
for (int output_slot: getOutputSlots()) {
|
for (int output_slot: getOutputSlots()) {
|
||||||
if (BlockStorage.getInventory(b).getItemInSlot(output_slot) == null) {
|
if (menu.getItemInSlot(output_slot) == null) {
|
||||||
emptySlot = true;
|
emptySlot = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -82,15 +85,15 @@ public abstract class ElectricDustWasher extends AContainer {
|
|||||||
ItemStack adding = items[new Random().nextInt(items.length)];
|
ItemStack adding = items[new Random().nextInt(items.length)];
|
||||||
MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {adding});
|
MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {adding});
|
||||||
if (SlimefunPlugin.getSettings().legacyDustWasher && !fits(b, r.getOutput())) return;
|
if (SlimefunPlugin.getSettings().legacyDustWasher && !fits(b, r.getOutput())) return;
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
|
||||||
processing.put(b, r);
|
processing.put(b, r);
|
||||||
progress.put(b, r.getTicks());
|
progress.put(b, r.getTicks());
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
else if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.PULVERIZED_ORE, true)) {
|
else if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), SlimefunItems.PULVERIZED_ORE, true)) {
|
||||||
MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {SlimefunItems.PURE_ORE_CLUSTER});
|
MachineRecipe r = new MachineRecipe(4 / getSpeed(), new ItemStack[0], new ItemStack[] {SlimefunItems.PURE_ORE_CLUSTER});
|
||||||
if (!fits(b, r.getOutput())) return;
|
if (!fits(b, r.getOutput())) return;
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
|
||||||
processing.put(b, r);
|
processing.put(b, r);
|
||||||
progress.put(b, r.getTicks());
|
progress.put(b, r.getTicks());
|
||||||
break;
|
break;
|
||||||
|
@ -12,11 +12,12 @@ import org.bukkit.inventory.Recipe;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public abstract class ElectricFurnace extends AContainer {
|
public abstract class ElectricFurnace extends AContainer {
|
||||||
|
|
||||||
public ElectricFurnace(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public ElectricFurnace(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -18,7 +18,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
||||||
|
|
||||||
public abstract class ElectricGoldPan extends AContainer implements RecipeDisplayItem {
|
public abstract class ElectricGoldPan extends AContainer implements RecipeDisplayItem {
|
||||||
@ -36,8 +38,8 @@ public abstract class ElectricGoldPan extends AContainer implements RecipeDispla
|
|||||||
new ItemStack(Material.CLAY_BALL)
|
new ItemStack(Material.CLAY_BALL)
|
||||||
);
|
);
|
||||||
|
|
||||||
public ElectricGoldPan(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public ElectricGoldPan(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -54,10 +56,11 @@ public abstract class ElectricGoldPan extends AContainer implements RecipeDispla
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(b);
|
||||||
if (isProcessing(b)) {
|
if (isProcessing(b)) {
|
||||||
int timeleft = progress.get(b);
|
int timeleft = progress.get(b);
|
||||||
if (timeleft > 0 && getSpeed() < 10) {
|
if (timeleft > 0 && getSpeed() < 10) {
|
||||||
MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
||||||
|
|
||||||
if (ChargableBlock.isChargable(b)) {
|
if (ChargableBlock.isChargable(b)) {
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
||||||
@ -70,7 +73,7 @@ public abstract class ElectricGoldPan extends AContainer implements RecipeDispla
|
|||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
||||||
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
ChargableBlock.addCharge(b, -getEnergyConsumption());
|
||||||
|
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
||||||
pushItems(b, processing.get(b).getOutput());
|
pushItems(b, processing.get(b).getOutput());
|
||||||
|
|
||||||
progress.remove(b);
|
progress.remove(b);
|
||||||
@ -79,14 +82,14 @@ public abstract class ElectricGoldPan extends AContainer implements RecipeDispla
|
|||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot: getInputSlots()) {
|
||||||
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.GRAVEL), true)) {
|
if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), new ItemStack(Material.GRAVEL), true)) {
|
||||||
ItemStack output = SlimefunItems.SIFTED_ORE;
|
ItemStack output = SlimefunItems.SIFTED_ORE;
|
||||||
if (random.nextInt(100) < 16) output = new ItemStack(Material.FLINT);
|
if (random.nextInt(100) < 16) output = new ItemStack(Material.FLINT);
|
||||||
if (random.nextInt(100) < 16) output = new ItemStack(Material.CLAY_BALL);
|
if (random.nextInt(100) < 16) output = new ItemStack(Material.CLAY_BALL);
|
||||||
|
|
||||||
MachineRecipe r = new MachineRecipe(3 / getSpeed(), new ItemStack[0], new ItemStack[] {output});
|
MachineRecipe r = new MachineRecipe(3 / getSpeed(), new ItemStack[0], new ItemStack[] {output});
|
||||||
if (!fits(b, r.getOutput())) return;
|
if (!fits(b, r.getOutput())) return;
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
|
||||||
processing.put(b, r);
|
processing.put(b, r);
|
||||||
progress.put(b, r.getTicks());
|
progress.put(b, r.getTicks());
|
||||||
break;
|
break;
|
||||||
|
@ -9,11 +9,12 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public abstract class ElectricIngotFactory extends AContainer implements RecipeDisplayItem {
|
public abstract class ElectricIngotFactory extends AContainer implements RecipeDisplayItem {
|
||||||
|
|
||||||
public ElectricIngotFactory(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public ElectricIngotFactory(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -12,11 +12,12 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public class ElectricIngotPulverizer extends AContainer implements RecipeDisplayItem {
|
public class ElectricIngotPulverizer extends AContainer implements RecipeDisplayItem {
|
||||||
|
|
||||||
public ElectricIngotPulverizer(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
public ElectricIngotPulverizer(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -7,11 +7,12 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public abstract class ElectricOreGrinder extends AContainer implements RecipeDisplayItem {
|
public abstract class ElectricOreGrinder extends AContainer implements RecipeDisplayItem {
|
||||||
|
|
||||||
public ElectricOreGrinder(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public ElectricOreGrinder(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -7,11 +7,12 @@ import io.github.thebusybiscuit.cscorelib2.materials.MaterialCollections;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public abstract class ElectrifiedCrucible extends AContainer {
|
public abstract class ElectrifiedCrucible extends AContainer {
|
||||||
|
|
||||||
public ElectrifiedCrucible(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public ElectrifiedCrucible(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -13,13 +13,14 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.UnregisterReason;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public class ElevatorPlate extends SimpleSlimefunItem<ItemInteractionHandler> {
|
public class ElevatorPlate extends SimpleSlimefunItem<ItemInteractionHandler> {
|
||||||
|
|
||||||
public ElevatorPlate(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) {
|
public ElevatorPlate(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) {
|
||||||
super(category, item, id, recipeType, recipe, recipeOutput);
|
super(category, item, recipeType, recipe, recipeOutput);
|
||||||
|
|
||||||
SlimefunItem.registerBlockHandler("ELEVATOR_PLATE", new SlimefunBlockHandler() {
|
SlimefunItem.registerBlockHandler(getID(), new SlimefunBlockHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||||
|
@ -22,7 +22,9 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
|
|
||||||
public class FluidPump extends SlimefunItem implements InventoryBlock {
|
public class FluidPump extends SlimefunItem implements InventoryBlock {
|
||||||
@ -33,8 +35,8 @@ public class FluidPump extends SlimefunItem implements InventoryBlock {
|
|||||||
|
|
||||||
protected int energyConsumption = 32;
|
protected int energyConsumption = 32;
|
||||||
|
|
||||||
public FluidPump(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public FluidPump(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
|
|
||||||
createPreset(this, "&9Fluid Pump", this::constructMenu);
|
createPreset(this, "&9Fluid Pump", this::constructMenu);
|
||||||
}
|
}
|
||||||
@ -79,40 +81,32 @@ public class FluidPump extends SlimefunItem implements InventoryBlock {
|
|||||||
|
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
Block fluid = b.getRelative(BlockFace.DOWN);
|
Block fluid = b.getRelative(BlockFace.DOWN);
|
||||||
|
ItemStack output = null;
|
||||||
|
|
||||||
if (fluid.getType() == Material.LAVA) {
|
if (fluid.getType() == Material.LAVA) {
|
||||||
for (int slot : getInputSlots()) {
|
output = new ItemStack(Material.LAVA_BUCKET);
|
||||||
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) {
|
|
||||||
if (ChargableBlock.getCharge(b) < energyConsumption) return;
|
|
||||||
|
|
||||||
ItemStack output = new ItemStack(Material.LAVA_BUCKET);
|
|
||||||
|
|
||||||
if (!fits(b, output)) return;
|
|
||||||
|
|
||||||
ChargableBlock.addCharge(b, -energyConsumption);
|
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
|
||||||
pushItems(b, output);
|
|
||||||
|
|
||||||
List<Block> list = Vein.find(fluid, 50, block -> block.isLiquid() && block.getType() == fluid.getType());
|
|
||||||
list.get(list.size() - 1).setType(Material.AIR);
|
|
||||||
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
else if (fluid.getType() == Material.WATER) {
|
else if (fluid.getType() == Material.WATER) {
|
||||||
|
output = new ItemStack(Material.WATER_BUCKET);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (output != null && ChargableBlock.getCharge(b) >= energyConsumption) {
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(b);
|
||||||
for (int slot : getInputSlots()) {
|
for (int slot : getInputSlots()) {
|
||||||
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) {
|
if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) {
|
||||||
if (ChargableBlock.getCharge(b) < energyConsumption) return;
|
if (!menu.fits(output, getOutputSlots())) return;
|
||||||
|
|
||||||
ItemStack output = new ItemStack(Material.WATER_BUCKET);
|
|
||||||
|
|
||||||
if (!fits(b, output)) return;
|
|
||||||
|
|
||||||
ChargableBlock.addCharge(b, -energyConsumption);
|
ChargableBlock.addCharge(b, -energyConsumption);
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
|
menu.replaceExistingItem(slot, InvUtils.decreaseItem(menu.getItemInSlot(slot), 1));
|
||||||
pushItems(b, output);
|
menu.pushItem(output, getOutputSlots());
|
||||||
|
|
||||||
fluid.setType(Material.AIR);
|
if (fluid.getType() == Material.WATER) {
|
||||||
|
fluid.setType(Material.AIR);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
List<Block> list = Vein.find(fluid, 50, block -> block.isLiquid() && block.getType() == fluid.getType());
|
||||||
|
list.get(list.size() - 1).setType(Material.AIR);
|
||||||
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -8,11 +8,12 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public abstract class FoodComposter extends AContainer implements RecipeDisplayItem {
|
public abstract class FoodComposter extends AContainer implements RecipeDisplayItem {
|
||||||
|
|
||||||
public FoodComposter(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public FoodComposter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -7,11 +7,12 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public abstract class FoodFabricator extends AContainer {
|
public abstract class FoodFabricator extends AContainer {
|
||||||
|
|
||||||
public FoodFabricator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public FoodFabricator(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -6,6 +6,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -15,8 +16,8 @@ import org.bukkit.inventory.ItemStack;
|
|||||||
|
|
||||||
public abstract class Freezer extends AContainer implements RecipeDisplayItem {
|
public abstract class Freezer extends AContainer implements RecipeDisplayItem {
|
||||||
|
|
||||||
public Freezer(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public Freezer(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -25,6 +25,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
@ -34,10 +35,10 @@ import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
|||||||
|
|
||||||
public abstract class HeatedPressureChamber extends AContainer {
|
public abstract class HeatedPressureChamber extends AContainer {
|
||||||
|
|
||||||
public HeatedPressureChamber(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public HeatedPressureChamber(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
|
|
||||||
new BlockMenuPreset(name, getInventoryTitle()) {
|
new BlockMenuPreset(getID(), getInventoryTitle()) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() {
|
public void init() {
|
||||||
@ -135,11 +136,13 @@ public abstract class HeatedPressureChamber extends AContainer {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void tick(Block b) {
|
protected void tick(Block b) {
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(b);
|
||||||
|
|
||||||
if (isProcessing(b)) {
|
if (isProcessing(b)) {
|
||||||
int timeleft = progress.get(b);
|
int timeleft = progress.get(b);
|
||||||
|
|
||||||
if (timeleft > 0) {
|
if (timeleft > 0) {
|
||||||
MachineHelper.updateProgressbar(BlockStorage.getInventory(b), 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
MachineHelper.updateProgressbar(menu, 22, timeleft, processing.get(b).getTicks(), getProgressBar());
|
||||||
|
|
||||||
if (ChargableBlock.isChargable(b)) {
|
if (ChargableBlock.isChargable(b)) {
|
||||||
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
|
||||||
@ -149,7 +152,7 @@ public abstract class HeatedPressureChamber extends AContainer {
|
|||||||
else progress.put(b, timeleft - 1);
|
else progress.put(b, timeleft - 1);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockStorage.getInventory(b).replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "));
|
||||||
pushItems(b, processing.get(b).getOutput());
|
pushItems(b, processing.get(b).getOutput());
|
||||||
|
|
||||||
progress.remove(b);
|
progress.remove(b);
|
||||||
@ -157,7 +160,6 @@ public abstract class HeatedPressureChamber extends AContainer {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
BlockMenu menu = BlockStorage.getInventory(b.getLocation());
|
|
||||||
Map<Integer, Integer> found = new HashMap<>();
|
Map<Integer, Integer> found = new HashMap<>();
|
||||||
MachineRecipe recipe = findRecipe(menu, found);
|
MachineRecipe recipe = findRecipe(menu, found);
|
||||||
|
|
||||||
|
@ -17,13 +17,14 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
||||||
|
|
||||||
public abstract class Refinery extends AContainer implements RecipeDisplayItem {
|
public abstract class Refinery extends AContainer implements RecipeDisplayItem {
|
||||||
|
|
||||||
public Refinery(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public Refinery(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -21,6 +21,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
@ -31,11 +32,11 @@ public class XPCollector extends SlimefunItem implements InventoryBlock {
|
|||||||
|
|
||||||
protected int energyConsumption = 10;
|
protected int energyConsumption = 10;
|
||||||
|
|
||||||
public XPCollector(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public XPCollector(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
createPreset(this, "&aEXP Collector", this::constructMenu);
|
createPreset(this, "&aEXP Collector", this::constructMenu);
|
||||||
|
|
||||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
registerBlockHandler(getID(), new SlimefunBlockHandler() {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||||
@ -110,10 +111,11 @@ public class XPCollector extends SlimefunItem implements InventoryBlock {
|
|||||||
n.remove();
|
n.remove();
|
||||||
|
|
||||||
int withdrawn = 0;
|
int withdrawn = 0;
|
||||||
|
BlockMenu menu = BlockStorage.getInventory(b);
|
||||||
for (int level = 0; level < getEXP(b); level = level + 10) {
|
for (int level = 0; level < getEXP(b); level = level + 10) {
|
||||||
if (fits(b, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"))) {
|
if (menu.fits(new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), getOutputSlots())) {
|
||||||
withdrawn = withdrawn + 10;
|
withdrawn = withdrawn + 10;
|
||||||
pushItems(b, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"));
|
menu.pushItem(new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), getOutputSlots());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
BlockStorage.addBlockInfo(b, "stored-exp", String.valueOf(xp - withdrawn));
|
BlockStorage.addBlockInfo(b, "stored-exp", String.valueOf(xp - withdrawn));
|
||||||
|
@ -8,11 +8,12 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public abstract class BioGenerator extends AGenerator {
|
public abstract class BioGenerator extends AGenerator {
|
||||||
|
|
||||||
public BioGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
public BioGenerator(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -8,11 +8,12 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public abstract class CoalGenerator extends AGenerator {
|
public abstract class CoalGenerator extends AGenerator {
|
||||||
|
|
||||||
public CoalGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
public CoalGenerator(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -8,11 +8,12 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public abstract class CombustionGenerator extends AGenerator {
|
public abstract class CombustionGenerator extends AGenerator {
|
||||||
|
|
||||||
public CombustionGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
public CombustionGenerator(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -7,11 +7,12 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AGenerator;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineFuel;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public abstract class LavaGenerator extends AGenerator {
|
public abstract class LavaGenerator extends AGenerator {
|
||||||
|
|
||||||
public LavaGenerator(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
public LavaGenerator(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -25,6 +25,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecip
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
@ -37,8 +38,8 @@ public abstract class GEOMiner extends AContainer implements InventoryBlock, Rec
|
|||||||
private static final int[] BORDER_OUT = {19, 20, 21, 22, 23, 24, 25, 28, 34, 37, 43, 46, 47, 48, 49, 50, 51, 52};
|
private static final int[] BORDER_OUT = {19, 20, 21, 22, 23, 24, 25, 28, 34, 37, 43, 46, 47, 48, 49, 50, 51, 52};
|
||||||
private static final int[] OUTPUT_SLOTS = {29, 30, 31, 32, 33, 38, 39, 40, 41, 42};
|
private static final int[] OUTPUT_SLOTS = {29, 30, 31, 32, 33, 38, 39, 40, 41, 42};
|
||||||
|
|
||||||
public GEOMiner(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public GEOMiner(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
|
|
||||||
registerBlockHandler(getID(), new SlimefunBlockHandler() {
|
registerBlockHandler(getID(), new SlimefunBlockHandler() {
|
||||||
|
|
||||||
|
@ -8,11 +8,12 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
|
|
||||||
public class GEOScannerBlock extends SimpleSlimefunItem<ItemInteractionHandler> {
|
public class GEOScannerBlock extends SimpleSlimefunItem<ItemInteractionHandler> {
|
||||||
|
|
||||||
public GEOScannerBlock(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
public GEOScannerBlock(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, id, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -25,7 +26,7 @@ public class GEOScannerBlock extends SimpleSlimefunItem<ItemInteractionHandler>
|
|||||||
return (e, p, stack) -> {
|
return (e, p, stack) -> {
|
||||||
if (e.getClickedBlock() == null) return false;
|
if (e.getClickedBlock() == null) return false;
|
||||||
String item = BlockStorage.checkID(e.getClickedBlock());
|
String item = BlockStorage.checkID(e.getClickedBlock());
|
||||||
if (item == null || !item.equals("GPS_GEO_SCANNER")) return false;
|
if (item == null || !item.equals(getID())) return false;
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
|
|
||||||
GEOScanner.scanChunk(p, e.getClickedBlock().getChunk());
|
GEOScanner.scanChunk(p, e.getClickedBlock().getChunk());
|
||||||
|
@ -18,6 +18,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||||
@ -26,10 +27,10 @@ import me.mrCookieSlime.Slimefun.utils.MachineHelper;
|
|||||||
|
|
||||||
public abstract class OilPump extends AContainer {
|
public abstract class OilPump extends AContainer {
|
||||||
|
|
||||||
public OilPump(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
public OilPump(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||||
super(category, item, name, recipeType, recipe);
|
super(category, item, recipeType, recipe);
|
||||||
|
|
||||||
new BlockMenuPreset(name, getInventoryTitle()) {
|
new BlockMenuPreset(getID(), getInventoryTitle()) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void init() {
|
public void init() {
|
||||||
@ -97,11 +98,16 @@ public abstract class OilPump extends AContainer {
|
|||||||
else {
|
else {
|
||||||
OreGenResource oil = OreGenSystem.getResource("Oil");
|
OreGenResource oil = OreGenSystem.getResource("Oil");
|
||||||
int supplies = OreGenSystem.getSupplies(oil, b.getChunk(), false);
|
int supplies = OreGenSystem.getSupplies(oil, b.getChunk(), false);
|
||||||
|
|
||||||
if (supplies > 0) {
|
if (supplies > 0) {
|
||||||
for (int slot: getInputSlots()) {
|
for (int slot: getInputSlots()) {
|
||||||
if (SlimefunManager.isItemSimiliar(inv.getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) {
|
if (SlimefunManager.isItemSimiliar(inv.getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) {
|
||||||
MachineRecipe r = new MachineRecipe(26, new ItemStack[0], new ItemStack[] {SlimefunItems.BUCKET_OF_OIL});
|
MachineRecipe r = new MachineRecipe(26, new ItemStack[0], new ItemStack[] {SlimefunItems.BUCKET_OF_OIL});
|
||||||
if (!inv.fits(SlimefunItems.BUCKET_OF_OIL, getOutputSlots())) return;
|
|
||||||
|
if (!inv.fits(SlimefunItems.BUCKET_OF_OIL, getOutputSlots())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
inv.replaceExistingItem(slot, InvUtils.decreaseItem(inv.getItemInSlot(slot), 1));
|
inv.replaceExistingItem(slot, InvUtils.decreaseItem(inv.getItemInSlot(slot), 1));
|
||||||
processing.put(b, r);
|
processing.put(b, r);
|
||||||
progress.put(b, r.getTicks());
|
progress.put(b, r.getTicks());
|
||||||
|
@ -39,7 +39,7 @@ public abstract class GPSTransmitter extends SimpleSlimefunItem<BlockTicker> {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract double getMultiplier(int y);
|
public abstract int getMultiplier(int y);
|
||||||
public abstract int getEnergyConsumption();
|
public abstract int getEnergyConsumption();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -50,7 +50,7 @@ public abstract class GPSTransmitter extends SimpleSlimefunItem<BlockTicker> {
|
|||||||
public void tick(Block b, SlimefunItem item, Config data) {
|
public void tick(Block b, SlimefunItem item, Config data) {
|
||||||
int charge = ChargableBlock.getCharge(b);
|
int charge = ChargableBlock.getCharge(b);
|
||||||
if (charge >= getEnergyConsumption()) {
|
if (charge >= getEnergyConsumption()) {
|
||||||
Slimefun.getGPSNetwork().updateTransmitter(b.getLocation().add(0.0, getMultiplier(b.getY()), 0.0), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE);
|
Slimefun.getGPSNetwork().updateTransmitter(b.getLocation(), UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), NetworkStatus.ONLINE);
|
||||||
ChargableBlock.setCharge(b.getLocation(), charge - getEnergyConsumption());
|
ChargableBlock.setCharge(b.getLocation(), charge - getEnergyConsumption());
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
|
@ -12,6 +12,7 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
@ -54,8 +55,11 @@ public class ArmorForge extends MultiBlockMachine {
|
|||||||
if (Slimefun.hasUnlocked(p, adding, true)) {
|
if (Slimefun.hasUnlocked(p, adding, true)) {
|
||||||
Inventory outputInv = findOutputInventory(adding, dispBlock, inv);
|
Inventory outputInv = findOutputInventory(adding, dispBlock, inv);
|
||||||
if (outputInv != null) {
|
if (outputInv != null) {
|
||||||
for (ItemStack removing: inputs.get(i)) {
|
for (int j = 0; j < 9; j++) {
|
||||||
if (removing != null) inv.removeItem(removing);
|
ItemStack item = inv.getContents()[j];
|
||||||
|
if (item != null && item.getType() != Material.AIR) {
|
||||||
|
ItemUtils.consumeItem(item, true);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
for (int j = 0; j < 4; j++) {
|
for (int j = 0; j < 4; j++) {
|
||||||
|
@ -1,8 +1,8 @@
|
|||||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
||||||
|
|
||||||
import java.util.Random;
|
import java.util.Random;
|
||||||
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
|
||||||
import org.bukkit.Effect;
|
import org.bukkit.Effect;
|
||||||
import org.bukkit.GameMode;
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -10,21 +10,32 @@ import org.bukkit.Sound;
|
|||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.scheduling.TaskQueue;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
public class AutomatedPanningMachine extends MultiBlockMachine {
|
public class AutomatedPanningMachine extends MultiBlockMachine {
|
||||||
|
|
||||||
private final Random random = new Random();
|
|
||||||
|
|
||||||
|
// Gold Pan
|
||||||
private int chanceSiftedOre;
|
private int chanceSiftedOre;
|
||||||
private int chanceFlint;
|
private int chanceFlint;
|
||||||
private int chanceClay;
|
private int chanceClay;
|
||||||
|
private int chanceIronNuggets;
|
||||||
|
|
||||||
|
// Nether Gold Pan
|
||||||
|
private int chanceQuartz;
|
||||||
|
private int chanceGoldNuggets;
|
||||||
|
private int chanceNetherWart;
|
||||||
|
private int chanceBlazePowder;
|
||||||
|
private int chanceGlowstoneDust;
|
||||||
|
private int chanceGhastTear;
|
||||||
|
|
||||||
public AutomatedPanningMachine() {
|
public AutomatedPanningMachine() {
|
||||||
super(
|
super(
|
||||||
@ -45,44 +56,99 @@ public class AutomatedPanningMachine extends MultiBlockMachine {
|
|||||||
public void postRegister() {
|
public void postRegister() {
|
||||||
super.postRegister();
|
super.postRegister();
|
||||||
|
|
||||||
chanceSiftedOre = (int) Slimefun.getItemValue("GOLD_PAN", "chance.SIFTED_ORE");
|
String goldPan = "GOLD_PAN";
|
||||||
chanceClay = (int) Slimefun.getItemValue("GOLD_PAN", "chance.CLAY");
|
String netherGoldPan = "NETHER_GOLD_PAN";
|
||||||
chanceFlint = (int) Slimefun.getItemValue("GOLD_PAN", "chance.FLINT");
|
|
||||||
|
chanceSiftedOre = (int) Slimefun.getItemValue(goldPan, "chance.SIFTED_ORE");
|
||||||
|
chanceClay = (int) Slimefun.getItemValue(goldPan, "chance.CLAY");
|
||||||
|
chanceFlint = (int) Slimefun.getItemValue(goldPan, "chance.FLINT");
|
||||||
|
chanceIronNuggets = (int) Slimefun.getItemValue(goldPan, "chance.IRON_NUGGET");
|
||||||
|
|
||||||
|
chanceQuartz = (int) Slimefun.getItemValue(netherGoldPan, "chance.QUARTZ");
|
||||||
|
chanceGoldNuggets = (int) Slimefun.getItemValue(netherGoldPan, "chance.GOLD_NUGGET");
|
||||||
|
chanceNetherWart = (int) Slimefun.getItemValue(netherGoldPan, "chance.NETHER_WART");
|
||||||
|
chanceBlazePowder = (int) Slimefun.getItemValue(netherGoldPan, "chance.BLAZE_POWDER");
|
||||||
|
chanceGlowstoneDust = (int) Slimefun.getItemValue(netherGoldPan, "chance.GLOWSTONE_DUST");
|
||||||
|
chanceGhastTear = (int) Slimefun.getItemValue(netherGoldPan, "chance.GHAST_TEAR");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInteract(Player p, Block b) {
|
public void onInteract(Player p, Block b) {
|
||||||
final ItemStack input = p.getInventory().getItemInMainHand();
|
final ItemStack input = p.getInventory().getItemInMainHand();
|
||||||
ItemStack output = null;
|
|
||||||
|
|
||||||
if (random.nextInt(100) < chanceSiftedOre) output = SlimefunItems.SIFTED_ORE;
|
if (SlimefunManager.isItemSimiliar(input, new ItemStack(Material.GRAVEL), true) || SlimefunManager.isItemSimiliar(input, new ItemStack(Material.SOUL_SAND), true)) {
|
||||||
else if (random.nextInt(100) < chanceClay) output = new ItemStack(Material.CLAY_BALL);
|
final Material block = input.getType();
|
||||||
else if (random.nextInt(100) < chanceFlint) output = new ItemStack(Material.FLINT);
|
|
||||||
|
|
||||||
final ItemStack drop = output;
|
|
||||||
|
|
||||||
if (input != null && input.getType() == Material.GRAVEL && (!input.hasItemMeta() || (input.hasItemMeta() && !input.getItemMeta().hasDisplayName()))) {
|
|
||||||
if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(input, false);
|
if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(input, false);
|
||||||
|
|
||||||
for (int i = 1; i < 7; i++) {
|
ItemStack output = getRandomDrop(ThreadLocalRandom.current(), block);
|
||||||
int j = i;
|
TaskQueue queue = new TaskQueue();
|
||||||
|
|
||||||
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, () -> {
|
queue.thenRepeatEvery(20, 5, () ->
|
||||||
b.getWorld().playEffect(b.getRelative(BlockFace.DOWN).getLocation(), Effect.STEP_SOUND, Material.GRAVEL);
|
b.getWorld().playEffect(b.getRelative(BlockFace.DOWN).getLocation(), Effect.STEP_SOUND, block)
|
||||||
|
);
|
||||||
|
|
||||||
|
queue.thenRun(20, () -> {
|
||||||
|
if (output != null) {
|
||||||
|
Inventory outputChest = findOutputChest(b.getRelative(BlockFace.DOWN), output);
|
||||||
|
|
||||||
if (j == 6) {
|
if (outputChest != null) {
|
||||||
if (drop != null) b.getWorld().dropItemNaturally(b.getLocation(), drop);
|
outputChest.addItem(output);
|
||||||
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
|
}
|
||||||
|
else {
|
||||||
|
b.getWorld().dropItemNaturally(b.getLocation(), output);
|
||||||
}
|
}
|
||||||
|
|
||||||
}, i * 30L);
|
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 1F, 1F);
|
||||||
|
}
|
||||||
}
|
else {
|
||||||
|
p.getWorld().playSound(p.getLocation(), Sound.ENTITY_ARMOR_STAND_BREAK, 1F, 1F);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
return;
|
queue.execute(SlimefunPlugin.instance);
|
||||||
}
|
}
|
||||||
|
else {
|
||||||
SlimefunPlugin.getLocal().sendMessage(p, "machines.wrong-item", true);
|
SlimefunPlugin.getLocal().sendMessage(p, "machines.wrong-item", true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private ItemStack getRandomDrop(Random random, Material input) {
|
||||||
|
if (input == Material.GRAVEL) {
|
||||||
|
if (random.nextInt(100) < chanceSiftedOre) {
|
||||||
|
return SlimefunItems.SIFTED_ORE;
|
||||||
|
}
|
||||||
|
else if (random.nextInt(100) < chanceClay) {
|
||||||
|
return new ItemStack(Material.CLAY_BALL);
|
||||||
|
}
|
||||||
|
else if (random.nextInt(100) < chanceFlint) {
|
||||||
|
return new ItemStack(Material.FLINT);
|
||||||
|
}
|
||||||
|
else if (random.nextInt(100) < chanceIronNuggets) {
|
||||||
|
return new ItemStack(Material.IRON_NUGGET);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (input == Material.SOUL_SAND) {
|
||||||
|
if (random.nextInt(100) < chanceQuartz) {
|
||||||
|
return new ItemStack(Material.QUARTZ);
|
||||||
|
}
|
||||||
|
else if (random.nextInt(100) < chanceGoldNuggets) {
|
||||||
|
return new ItemStack(Material.GOLD_NUGGET);
|
||||||
|
}
|
||||||
|
else if (random.nextInt(100) < chanceNetherWart) {
|
||||||
|
return new ItemStack(Material.NETHER_WART);
|
||||||
|
}
|
||||||
|
else if (random.nextInt(100) < chanceBlazePowder) {
|
||||||
|
return new ItemStack(Material.BLAZE_POWDER);
|
||||||
|
}
|
||||||
|
else if (random.nextInt(100) < chanceGlowstoneDust) {
|
||||||
|
return new ItemStack(Material.GLOWSTONE_DUST);
|
||||||
|
}
|
||||||
|
else if (random.nextInt(100) < chanceGhastTear) {
|
||||||
|
return new ItemStack(Material.GHAST_TEAR);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -28,7 +28,10 @@ public class Compressor extends MultiBlockMachine {
|
|||||||
SlimefunItems.COMPRESSOR,
|
SlimefunItems.COMPRESSOR,
|
||||||
"COMPRESSOR",
|
"COMPRESSOR",
|
||||||
new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.PISTON), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.PISTON)},
|
new ItemStack[] {null, null, null, null, new ItemStack(Material.NETHER_BRICK_FENCE), null, new ItemStack(Material.PISTON), new CustomItem(Material.DISPENSER, "Dispenser (Facing up)"), new ItemStack(Material.PISTON)},
|
||||||
new ItemStack[] {new CustomItem(SlimefunItems.STONE_CHUNK, 4), new ItemStack(Material.COBBLESTONE)},
|
new ItemStack[] {
|
||||||
|
new CustomItem(SlimefunItems.STONE_CHUNK, 4), new ItemStack(Material.COBBLESTONE),
|
||||||
|
new ItemStack(Material.FLINT, 8), new ItemStack(Material.COBBLESTONE)
|
||||||
|
},
|
||||||
BlockFace.SELF
|
BlockFace.SELF
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@ -3,7 +3,6 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.listeners.BackpackListener;
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.ChatColor;
|
import org.bukkit.ChatColor;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
@ -16,6 +15,7 @@ import org.bukkit.inventory.Inventory;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
@ -26,6 +26,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
|||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||||
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
import me.mrCookieSlime.Slimefun.api.PlayerProfile;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
import me.mrCookieSlime.Slimefun.listeners.BackpackListener;
|
||||||
|
|
||||||
public class EnhancedCraftingTable extends MultiBlockMachine {
|
public class EnhancedCraftingTable extends MultiBlockMachine {
|
||||||
|
|
||||||
@ -127,10 +128,9 @@ public class EnhancedCraftingTable extends MultiBlockMachine {
|
|||||||
|
|
||||||
|
|
||||||
for (int j = 0; j < 9; j++) {
|
for (int j = 0; j < 9; j++) {
|
||||||
if (inv.getContents()[j] != null && inv.getContents()[j].getType() != Material.AIR) {
|
ItemStack item = inv.getContents()[j];
|
||||||
if (inv.getContents()[j].getType().toString().endsWith("_BUCKET")) inv.setItem(j, new ItemStack(Material.BUCKET));
|
if (item != null && item.getType() != Material.AIR) {
|
||||||
else if (inv.getContents()[j].getAmount() > 1) inv.setItem(j, new CustomItem(inv.getContents()[j], inv.getContents()[j].getAmount() - 1));
|
ItemUtils.consumeItem(item, true);
|
||||||
else inv.setItem(j, null);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
p.getWorld().playSound(b.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1);
|
p.getWorld().playSound(b.getLocation(), Sound.BLOCK_WOODEN_BUTTON_CLICK_ON, 1, 1);
|
||||||
|
@ -8,8 +8,8 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.inventory.Inventory;
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.inventory.InvUtils;
|
||||||
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
|
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunMachine;
|
||||||
@ -73,25 +73,33 @@ public abstract class MultiBlockMachine extends SlimefunMachine {
|
|||||||
}
|
}
|
||||||
|
|
||||||
protected Inventory findOutputInventory(ItemStack product, Block dispBlock, Inventory dispInv, Inventory placeCheckerInv) {
|
protected Inventory findOutputInventory(ItemStack product, Block dispBlock, Inventory dispInv, Inventory placeCheckerInv) {
|
||||||
Inventory outputInv = null;
|
Inventory outputInv = findOutputChest(dispBlock, product);
|
||||||
|
|
||||||
|
// This if-clause will trigger if no suitable output chest was found. It's functionally the same as the old fit check for the dispenser, only refactored.
|
||||||
|
if (outputInv == null && InvUtils.fits(placeCheckerInv, product)) {
|
||||||
|
return dispInv;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return outputInv;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
protected Inventory findOutputChest(Block b, ItemStack output) {
|
||||||
for (BlockFace face : outputFaces) {
|
for (BlockFace face : outputFaces) {
|
||||||
Block potentialOutput = dispBlock.getRelative(face);
|
Block potentialOutput = b.getRelative(face);
|
||||||
String id = BlockStorage.checkID(potentialOutput);
|
String id = BlockStorage.checkID(potentialOutput);
|
||||||
|
|
||||||
if (id != null && id.equals("OUTPUT_CHEST")) {
|
if (id != null && id.equals("OUTPUT_CHEST")) {
|
||||||
// Found the output chest! Now, let's check if we can fit the product in it.
|
// Found the output chest! Now, let's check if we can fit the product in it.
|
||||||
Inventory inv = ((Container) potentialOutput.getState()).getInventory();
|
Inventory inv = ((Container) potentialOutput.getState()).getInventory();
|
||||||
if (InvUtils.fits(inv, product)) {
|
|
||||||
// It fits! Let's set the inventory to that now.
|
if (InvUtils.fits(inv, output)) {
|
||||||
outputInv = inv;
|
return inv;
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// This if-clause will trigger if no suitable output chest was found. It's functionally the same as the old fit check for the dispenser, only refactored.
|
|
||||||
if (outputInv == null && InvUtils.fits(placeCheckerInv, product)) outputInv = dispInv;
|
|
||||||
|
|
||||||
return outputInv;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -5,13 +5,16 @@ import java.util.List;
|
|||||||
import java.util.Optional;
|
import java.util.Optional;
|
||||||
|
|
||||||
import org.bukkit.Effect;
|
import org.bukkit.Effect;
|
||||||
|
import org.bukkit.GameMode;
|
||||||
import org.bukkit.Material;
|
import org.bukkit.Material;
|
||||||
import org.bukkit.Tag;
|
import org.bukkit.Tag;
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.block.BlockFace;
|
import org.bukkit.block.BlockFace;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.inventory.Inventory;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
||||||
import io.github.thebusybiscuit.cscorelib2.materials.MaterialConverter;
|
import io.github.thebusybiscuit.cscorelib2.materials.MaterialConverter;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
@ -52,13 +55,21 @@ public class TableSaw extends MultiBlockMachine {
|
|||||||
Optional<Material> planks = MaterialConverter.getPlanksFromLog(log.getType());
|
Optional<Material> planks = MaterialConverter.getPlanksFromLog(log.getType());
|
||||||
|
|
||||||
if (planks.isPresent()) {
|
if (planks.isPresent()) {
|
||||||
b.getWorld().dropItemNaturally(b.getLocation(), new ItemStack(planks.get(), 8));
|
if (p.getGameMode() != GameMode.CREATIVE) {
|
||||||
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, log.getType());
|
ItemUtils.consumeItem(log, true);
|
||||||
log.setAmount(log.getAmount() -1);
|
|
||||||
|
|
||||||
if(log.getAmount() <= 0) {
|
|
||||||
p.getInventory().setItemInMainHand(new ItemStack(Material.AIR));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ItemStack output = new ItemStack(planks.get(), 8);
|
||||||
|
Inventory outputChest = findOutputChest(b, output);
|
||||||
|
|
||||||
|
if (outputChest != null) {
|
||||||
|
outputChest.addItem(output);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
b.getWorld().dropItemNaturally(b.getLocation(), output);
|
||||||
|
}
|
||||||
|
|
||||||
|
b.getWorld().playEffect(b.getLocation(), Effect.STEP_SOUND, log.getType());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,8 +34,9 @@ public final class MiscSetup {
|
|||||||
private MiscSetup() {}
|
private MiscSetup() {}
|
||||||
|
|
||||||
public static void setupMisc() {
|
public static void setupMisc() {
|
||||||
if (SlimefunItem.getByID("COMMON_TALISMAN") != null && (Boolean) Slimefun.getItemValue("COMMON_TALISMAN", "recipe-requires-nether-stars")) {
|
SlimefunItem talisman = SlimefunItem.getByID("COMMON_TALISMAN");
|
||||||
SlimefunItem.getByID("COMMON_TALISMAN").setRecipe(new ItemStack[] {SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.NETHER_STAR), null, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2});
|
if (talisman != null && (boolean) Slimefun.getItemValue(talisman.getID(), "recipe-requires-nether-stars")) {
|
||||||
|
talisman.setRecipe(new ItemStack[] {SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2, null, new ItemStack(Material.NETHER_STAR), null, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.GOLD_8K, SlimefunItems.MAGIC_LUMP_2});
|
||||||
}
|
}
|
||||||
|
|
||||||
SlimefunItem.setRadioactive(SlimefunItems.URANIUM);
|
SlimefunItem.setRadioactive(SlimefunItems.URANIUM);
|
||||||
|
@ -10,13 +10,13 @@ import me.mrCookieSlime.Slimefun.api.Slimefun;
|
|||||||
public final class ResearchSetup {
|
public final class ResearchSetup {
|
||||||
|
|
||||||
private ResearchSetup() {}
|
private ResearchSetup() {}
|
||||||
|
|
||||||
public static void setupResearches() {
|
public static void setupResearches() {
|
||||||
Slimefun.registerResearch(new Research(0, "Walking Sticks", 1), SlimefunItems.GRANDMAS_WALKING_STICK, SlimefunItems.GRANDPAS_WALKING_STICK);
|
Slimefun.registerResearch(new Research(0, "Walking Sticks", 1), SlimefunItems.GRANDMAS_WALKING_STICK, SlimefunItems.GRANDPAS_WALKING_STICK);
|
||||||
Slimefun.registerResearch(new Research(1, "Portable Crafter", 1), SlimefunItems.PORTABLE_CRAFTER);
|
Slimefun.registerResearch(new Research(1, "Portable Crafter", 1), SlimefunItems.PORTABLE_CRAFTER);
|
||||||
Slimefun.registerResearch(new Research(2, "Fortune Cookie", 1), SlimefunItems.FORTUNE_COOKIE);
|
Slimefun.registerResearch(new Research(2, "Fortune Cookie", 1), SlimefunItems.FORTUNE_COOKIE);
|
||||||
Slimefun.registerResearch(new Research(4, "Portable Dustbin", 2), SlimefunItems.PORTABLE_DUSTBIN);
|
Slimefun.registerResearch(new Research(4, "Portable Dustbin", 2), SlimefunItems.PORTABLE_DUSTBIN);
|
||||||
Slimefun.registerResearch(new Research(5, "Beef Jerky", 2), SlimefunItems.BEEF_JERKY);
|
Slimefun.registerResearch(new Research(5, "Jerkys", 2), SlimefunItems.BEEF_JERKY, SlimefunItems.FISH_JERKY, SlimefunItems.RABBIT_JERKY, SlimefunItems.MUTTON_JERKY, SlimefunItems.CHICKEN_JERKY, SlimefunItems.PORK_JERKY);
|
||||||
Slimefun.registerResearch(new Research(6, "Armor Crafting", 2), SlimefunItems.ARMOR_FORGE);
|
Slimefun.registerResearch(new Research(6, "Armor Crafting", 2), SlimefunItems.ARMOR_FORGE);
|
||||||
Slimefun.registerResearch(new Research(8, "Lumps and Magic", 3), SlimefunItems.MAGIC_LUMP_1, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ENDER_LUMP_1, SlimefunItems.ENDER_LUMP_2, SlimefunItems.ENDER_LUMP_3);
|
Slimefun.registerResearch(new Research(8, "Lumps and Magic", 3), SlimefunItems.MAGIC_LUMP_1, SlimefunItems.MAGIC_LUMP_2, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ENDER_LUMP_1, SlimefunItems.ENDER_LUMP_2, SlimefunItems.ENDER_LUMP_3);
|
||||||
Slimefun.registerResearch(new Research(9, "Ender Backpack", 4), SlimefunItems.ENDER_BACKPACK);
|
Slimefun.registerResearch(new Research(9, "Ender Backpack", 4), SlimefunItems.ENDER_BACKPACK);
|
||||||
@ -188,14 +188,14 @@ public final class ResearchSetup {
|
|||||||
Slimefun.registerResearch(new Research(189, "Top Tier Transmitter", 44), SlimefunItems.GPS_TRANSMITTER_4);
|
Slimefun.registerResearch(new Research(189, "Top Tier Transmitter", 44), SlimefunItems.GPS_TRANSMITTER_4);
|
||||||
Slimefun.registerResearch(new Research(190, "Energy Networks 101", 6), SlimefunItems.ENERGY_REGULATOR);
|
Slimefun.registerResearch(new Research(190, "Energy Networks 101", 6), SlimefunItems.ENERGY_REGULATOR);
|
||||||
Slimefun.registerResearch(new Research(191, "Butcher Androids", 32), SlimefunItems.PROGRAMMABLE_ANDROID_BUTCHER);
|
Slimefun.registerResearch(new Research(191, "Butcher Androids", 32), SlimefunItems.PROGRAMMABLE_ANDROID_BUTCHER);
|
||||||
Slimefun.registerResearch(new Research(192, "Organic Food", 25), SlimefunItems.FOOD_FABRICATOR, SlimefunItems.WHEAT_ORGANIC_FOOD, SlimefunItems.CARROT_ORGANIC_FOOD, SlimefunItems.POTATO_ORGANIC_FOOD, SlimefunItems.SEEDS_ORGANIC_FOOD, SlimefunItems.BEETROOT_ORGANIC_FOOD, SlimefunItems.MELON_ORGANIC_FOOD, SlimefunItems.APPLE_ORGANIC_FOOD);
|
Slimefun.registerResearch(new Research(192, "Organic Food", 25), SlimefunItems.FOOD_FABRICATOR, SlimefunItems.WHEAT_ORGANIC_FOOD, SlimefunItems.CARROT_ORGANIC_FOOD, SlimefunItems.POTATO_ORGANIC_FOOD, SlimefunItems.SEEDS_ORGANIC_FOOD, SlimefunItems.BEETROOT_ORGANIC_FOOD, SlimefunItems.MELON_ORGANIC_FOOD, SlimefunItems.APPLE_ORGANIC_FOOD, SlimefunItems.SWEET_BERRIES_ORGANIC_FOOD);
|
||||||
Slimefun.registerResearch(new Research(193, "Automated Feeding", 25), SlimefunItems.AUTO_BREEDER);
|
Slimefun.registerResearch(new Research(193, "Automated Feeding", 25), SlimefunItems.AUTO_BREEDER);
|
||||||
Slimefun.registerResearch(new Research(194, "Advanced Androids", 60), SlimefunItems.PROGRAMMABLE_ANDROID_2);
|
Slimefun.registerResearch(new Research(194, "Advanced Androids", 60), SlimefunItems.PROGRAMMABLE_ANDROID_2);
|
||||||
Slimefun.registerResearch(new Research(195, "Advanced Androids - Butcher", 30), SlimefunItems.PROGRAMMABLE_ANDROID_2_BUTCHER);
|
Slimefun.registerResearch(new Research(195, "Advanced Androids - Butcher", 30), SlimefunItems.PROGRAMMABLE_ANDROID_2_BUTCHER);
|
||||||
Slimefun.registerResearch(new Research(196, "Advanced Androids - Fisherman", 30), SlimefunItems.PROGRAMMABLE_ANDROID_2_FISHERMAN);
|
Slimefun.registerResearch(new Research(196, "Advanced Androids - Fisherman", 30), SlimefunItems.PROGRAMMABLE_ANDROID_2_FISHERMAN);
|
||||||
Slimefun.registerResearch(new Research(197, "Animal Growth Manipulation", 32), SlimefunItems.ANIMAL_GROWTH_ACCELERATOR);
|
Slimefun.registerResearch(new Research(197, "Animal Growth Manipulation", 32), SlimefunItems.ANIMAL_GROWTH_ACCELERATOR);
|
||||||
Slimefun.registerResearch(new Research(198, "Exp Collector", 36), SlimefunItems.XP_COLLECTOR);
|
Slimefun.registerResearch(new Research(198, "Exp Collector", 36), SlimefunItems.XP_COLLECTOR);
|
||||||
Slimefun.registerResearch(new Research(199, "Organic Fertilizer", 36), SlimefunItems.FOOD_COMPOSTER, SlimefunItems.WHEAT_FERTILIZER, SlimefunItems.CARROT_FERTILIZER, SlimefunItems.POTATO_FERTILIZER, SlimefunItems.SEEDS_FERTILIZER, SlimefunItems.BEETROOT_FERTILIZER, SlimefunItems.MELON_FERTILIZER, SlimefunItems.APPLE_FERTILIZER);
|
Slimefun.registerResearch(new Research(199, "Organic Fertilizer", 36), SlimefunItems.FOOD_COMPOSTER, SlimefunItems.WHEAT_FERTILIZER, SlimefunItems.CARROT_FERTILIZER, SlimefunItems.POTATO_FERTILIZER, SlimefunItems.SEEDS_FERTILIZER, SlimefunItems.BEETROOT_FERTILIZER, SlimefunItems.MELON_FERTILIZER, SlimefunItems.APPLE_FERTILIZER, SlimefunItems.SWEET_BERRIES_FERTILIZER);
|
||||||
Slimefun.registerResearch(new Research(200, "Crop Growth Acceleration", 40), SlimefunItems.CROP_GROWTH_ACCELERATOR);
|
Slimefun.registerResearch(new Research(200, "Crop Growth Acceleration", 40), SlimefunItems.CROP_GROWTH_ACCELERATOR);
|
||||||
Slimefun.registerResearch(new Research(201, "Upgraded Crop Growth Accelerator", 44), SlimefunItems.CROP_GROWTH_ACCELERATOR_2);
|
Slimefun.registerResearch(new Research(201, "Upgraded Crop Growth Accelerator", 44), SlimefunItems.CROP_GROWTH_ACCELERATOR_2);
|
||||||
Slimefun.registerResearch(new Research(202, "Reactor Essentials", 36), SlimefunItems.REACTOR_COOLANT_CELL, SlimefunItems.NEPTUNIUM, SlimefunItems.PLUTONIUM);
|
Slimefun.registerResearch(new Research(202, "Reactor Essentials", 36), SlimefunItems.REACTOR_COOLANT_CELL, SlimefunItems.NEPTUNIUM, SlimefunItems.PLUTONIUM);
|
||||||
@ -213,7 +213,6 @@ public final class ResearchSetup {
|
|||||||
Slimefun.registerResearch(new Research(214, "Upgraded Freezer", 29), SlimefunItems.FREEZER_2);
|
Slimefun.registerResearch(new Research(214, "Upgraded Freezer", 29), SlimefunItems.FREEZER_2);
|
||||||
Slimefun.registerResearch(new Research(215, "Never-Ending Circle", 30), SlimefunItems.BOOSTED_URANIUM);
|
Slimefun.registerResearch(new Research(215, "Never-Ending Circle", 30), SlimefunItems.BOOSTED_URANIUM);
|
||||||
Slimefun.registerResearch(new Research(216, "Trash", 8), SlimefunItems.TRASH_CAN);
|
Slimefun.registerResearch(new Research(216, "Trash", 8), SlimefunItems.TRASH_CAN);
|
||||||
Slimefun.registerResearch(new Research(216, "Charging Bench", 8), SlimefunItems.CHARGING_BENCH);
|
|
||||||
Slimefun.registerResearch(new Research(217, "Advanced Output Node", 24), SlimefunItems.CARGO_OUTPUT_ADVANCED);
|
Slimefun.registerResearch(new Research(217, "Advanced Output Node", 24), SlimefunItems.CARGO_OUTPUT_ADVANCED);
|
||||||
Slimefun.registerResearch(new Research(218, "Carbon Press", 28), SlimefunItems.CARBON_PRESS);
|
Slimefun.registerResearch(new Research(218, "Carbon Press", 28), SlimefunItems.CARBON_PRESS);
|
||||||
Slimefun.registerResearch(new Research(219, "Electric Smeltery", 28), SlimefunItems.ELECTRIC_SMELTERY);
|
Slimefun.registerResearch(new Research(219, "Electric Smeltery", 28), SlimefunItems.ELECTRIC_SMELTERY);
|
||||||
@ -246,5 +245,7 @@ public final class ResearchSetup {
|
|||||||
Slimefun.registerResearch(new Research(247, "GEO-Miner", 24), SlimefunItems.GEO_MINER);
|
Slimefun.registerResearch(new Research(247, "GEO-Miner", 24), SlimefunItems.GEO_MINER);
|
||||||
Slimefun.registerResearch(new Research(248, "Lightning Rune", 24), SlimefunItems.RUNE_LIGHTNING);
|
Slimefun.registerResearch(new Research(248, "Lightning Rune", 24), SlimefunItems.RUNE_LIGHTNING);
|
||||||
Slimefun.registerResearch(new Research(249, "Totem of Undying", 36), SlimefunItems.TOTEM_OF_UNDYING);
|
Slimefun.registerResearch(new Research(249, "Totem of Undying", 36), SlimefunItems.TOTEM_OF_UNDYING);
|
||||||
|
Slimefun.registerResearch(new Research(250, "Charging Bench", 8), SlimefunItems.CHARGING_BENCH);
|
||||||
|
Slimefun.registerResearch(new Research(251, "Nether Gold Pan", 8), SlimefunItems.NETHER_GOLD_PAN);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -26,6 +26,7 @@ public class SlimefunLocalization extends Localization {
|
|||||||
|
|
||||||
setDefaultMessage("guide.search.name", "&7Search");
|
setDefaultMessage("guide.search.name", "&7Search");
|
||||||
setDefaultMessages("guide.search.lore", "&bWhat would you like to search for?", "&7Type your search term into chat");
|
setDefaultMessages("guide.search.lore", "&bWhat would you like to search for?", "&7Type your search term into chat");
|
||||||
|
|
||||||
setDefaultMessage("search.message", "&bWhat would you like to search for?");
|
setDefaultMessage("search.message", "&bWhat would you like to search for?");
|
||||||
setDefaultMessage("guide.cheat.no-multiblocks", "&4You cannot cheat in Multiblocks, you have to build them!");
|
setDefaultMessage("guide.cheat.no-multiblocks", "&4You cannot cheat in Multiblocks, you have to build them!");
|
||||||
|
|
||||||
|
@ -32,7 +32,6 @@ import org.bukkit.potion.PotionEffectType;
|
|||||||
import org.bukkit.util.Vector;
|
import org.bukkit.util.Vector;
|
||||||
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
||||||
import io.github.thebusybiscuit.cscorelib2.math.DoubleHandler;
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent;
|
import me.mrCookieSlime.CSCoreLibPlugin.events.ItemUseEvent;
|
||||||
@ -41,7 +40,6 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
|||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Particles.FireworkShow;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
|
|
||||||
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
import me.mrCookieSlime.Slimefun.Lists.Categories;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
@ -79,6 +77,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.DietCookie;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.EnderBackpack;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.EnderBackpack;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosivePickaxe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosivePickaxe;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosiveShovel;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.ExplosiveShovel;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.FortuneCookie;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GoldPan;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GoldPan;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GrapplingHook;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.GrapplingHook;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.HerculesPickaxe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.HerculesPickaxe;
|
||||||
@ -89,7 +88,10 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.KnowledgeTome;
|
|||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.LumberAxe;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.LumberAxe;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicEyeOfEnder;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicEyeOfEnder;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicSugar;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicSugar;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MeatJerky;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.Multimeter;
|
||||||
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.NetherGoldPan;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfContainment;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfContainment;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfVeinMining;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfVeinMining;
|
||||||
@ -171,18 +173,17 @@ import me.mrCookieSlime.Slimefun.androids.ProgrammableAndroid;
|
|||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
|
||||||
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
|
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
|
||||||
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
|
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
|
||||||
import me.mrCookieSlime.Slimefun.holograms.ReactorHologram;
|
import me.mrCookieSlime.Slimefun.holograms.ReactorHologram;
|
||||||
|
|
||||||
public final class SlimefunSetup {
|
public final class SlimefunSetup {
|
||||||
|
|
||||||
|
private static final Random random = new Random();
|
||||||
|
|
||||||
private SlimefunSetup() {}
|
private SlimefunSetup() {}
|
||||||
|
|
||||||
public static void setupItems() {
|
public static void setupItems() {
|
||||||
Random random = new Random();
|
|
||||||
|
|
||||||
new SlimefunItem(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.GRANDMAS_WALKING_STICK, RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SlimefunItem(Categories.WEAPONS, (SlimefunItemStack) SlimefunItems.GRANDMAS_WALKING_STICK, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null})
|
new ItemStack[] {null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null, null, new ItemStack(Material.OAK_LOG), null})
|
||||||
.register(true);
|
.register(true);
|
||||||
@ -195,7 +196,7 @@ public final class SlimefunSetup {
|
|||||||
new ItemStack[] {new ItemStack(Material.BOOK), new ItemStack(Material.CRAFTING_TABLE), null, null, null, null, null, null, null})
|
new ItemStack[] {new ItemStack(Material.BOOK), new ItemStack(Material.CRAFTING_TABLE), null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.FOOD, (SlimefunItemStack) SlimefunItems.FORTUNE_COOKIE, RecipeType.ENHANCED_CRAFTING_TABLE,
|
new FortuneCookie(Categories.FOOD, (SlimefunItemStack) SlimefunItems.FORTUNE_COOKIE, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {new ItemStack(Material.COOKIE), new ItemStack(Material.PAPER), null, null, null, null, null, null, null})
|
new ItemStack[] {new ItemStack(Material.COOKIE), new ItemStack(Material.PAPER), null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
@ -213,8 +214,28 @@ public final class SlimefunSetup {
|
|||||||
new ItemStack[] {new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT)})
|
new ItemStack[] {new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), null, new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT), new ItemStack(Material.IRON_INGOT)})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.FOOD, (SlimefunItemStack) SlimefunItems.BEEF_JERKY, RecipeType.ENHANCED_CRAFTING_TABLE,
|
new MeatJerky(Categories.FOOD, (SlimefunItemStack) SlimefunItems.BEEF_JERKY, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.COOKED_BEEF), null, null, null, null, null, null, null}, new String[] {"Saturation"}, new Integer[] {20})
|
new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.COOKED_BEEF), null, null, null, null, null, null, null})
|
||||||
|
.register(true);
|
||||||
|
|
||||||
|
new MeatJerky(Categories.FOOD, (SlimefunItemStack) SlimefunItems.PORK_JERKY, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
|
new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.COOKED_PORKCHOP), null, null, null, null, null, null, null})
|
||||||
|
.register(true);
|
||||||
|
|
||||||
|
new MeatJerky(Categories.FOOD, (SlimefunItemStack) SlimefunItems.CHICKEN_JERKY, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
|
new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.COOKED_CHICKEN), null, null, null, null, null, null, null})
|
||||||
|
.register(true);
|
||||||
|
|
||||||
|
new MeatJerky(Categories.FOOD, (SlimefunItemStack) SlimefunItems.MUTTON_JERKY, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
|
new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.COOKED_MUTTON), null, null, null, null, null, null, null})
|
||||||
|
.register(true);
|
||||||
|
|
||||||
|
new MeatJerky(Categories.FOOD, (SlimefunItemStack) SlimefunItems.RABBIT_JERKY, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
|
new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.COOKED_RABBIT), null, null, null, null, null, null, null})
|
||||||
|
.register(true);
|
||||||
|
|
||||||
|
new MeatJerky(Categories.FOOD, (SlimefunItemStack) SlimefunItems.FISH_JERKY, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
|
new ItemStack[] {SlimefunItems.SALT, new ItemStack(Material.COOKED_COD), null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new GrindStone().register();
|
new GrindStone().register();
|
||||||
@ -313,8 +334,11 @@ public final class SlimefunSetup {
|
|||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new GoldPan(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.GOLD_PAN, RecipeType.ENHANCED_CRAFTING_TABLE,
|
new GoldPan(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.GOLD_PAN, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, null, null, new ItemStack(Material.STONE), new ItemStack(Material.BOWL), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE)},
|
new ItemStack[] {null, null, null, new ItemStack(Material.STONE), new ItemStack(Material.BOWL), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE)})
|
||||||
new String[] {"chance.FLINT", "chance.CLAY", "chance.SIFTED_ORE"}, new Integer[] {40, 25, 35})
|
.register(true);
|
||||||
|
|
||||||
|
new NetherGoldPan(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.NETHER_GOLD_PAN, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
|
new ItemStack[] {null, null, null, new ItemStack(Material.NETHER_BRICK), SlimefunItems.GOLD_PAN, new ItemStack(Material.NETHER_BRICK), new ItemStack(Material.NETHER_BRICK), new ItemStack(Material.NETHER_BRICK), new ItemStack(Material.NETHER_BRICK)})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.SIFTED_ORE, RecipeType.GOLD_PAN,
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.SIFTED_ORE, RecipeType.GOLD_PAN,
|
||||||
@ -1703,12 +1727,12 @@ public final class SlimefunSetup {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
new ChargingBench(Categories.ELECTRICITY, SlimefunItems.CHARGING_BENCH, "CHARGING_BENCH", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ChargingBench(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.CHARGING_BENCH, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.ELECTRO_MAGNET, null, SlimefunItems.BATTERY, new ItemStack(Material.CRAFTING_TABLE), SlimefunItems.BATTERY, null, SlimefunItems.SMALL_CAPACITOR, null})
|
new ItemStack[] {null, SlimefunItems.ELECTRO_MAGNET, null, SlimefunItems.BATTERY, new ItemStack(Material.CRAFTING_TABLE), SlimefunItems.BATTERY, null, SlimefunItems.SMALL_CAPACITOR, null})
|
||||||
.registerChargeableBlock(true, 128);
|
.registerChargeableBlock(true, 128);
|
||||||
|
|
||||||
new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE, "ELECTRIC_FURNACE", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricFurnace(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_FURNACE, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.FURNACE), null, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) {
|
new ItemStack[] {null, new ItemStack(Material.FURNACE), null, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1723,7 +1747,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 64);
|
}.registerChargeableBlock(true, 64);
|
||||||
|
|
||||||
new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE_2, "ELECTRIC_FURNACE_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricFurnace(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_FURNACE_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_FURNACE, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON}) {
|
new ItemStack[] {null, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_FURNACE, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1738,7 +1762,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 128);
|
}.registerChargeableBlock(true, 128);
|
||||||
|
|
||||||
new ElectricFurnace(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_FURNACE_3, "ELECTRIC_FURNACE_3", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricFurnace(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_FURNACE_3, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_FURNACE_2, SlimefunItems.STEEL_INGOT, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON}) {
|
new ItemStack[] {null, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_FURNACE_2, SlimefunItems.STEEL_INGOT, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1753,7 +1777,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 128);
|
}.registerChargeableBlock(true, 128);
|
||||||
|
|
||||||
new ElectricGoldPan(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_GOLD_PAN, "ELECTRIC_GOLD_PAN", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricGoldPan(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_GOLD_PAN, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.GOLD_PAN, null, new ItemStack(Material.FLINT), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.FLINT), SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT}) {
|
new ItemStack[] {null, SlimefunItems.GOLD_PAN, null, new ItemStack(Material.FLINT), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.FLINT), SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.ALUMINUM_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1768,7 +1792,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 128);
|
}.registerChargeableBlock(true, 128);
|
||||||
|
|
||||||
new ElectricGoldPan(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_GOLD_PAN_2, "ELECTRIC_GOLD_PAN_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricGoldPan(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_GOLD_PAN_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.GOLD_PAN, null, new ItemStack(Material.IRON_INGOT), SlimefunItems.ELECTRIC_GOLD_PAN, new ItemStack(Material.IRON_INGOT), SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT}) {
|
new ItemStack[] {null, SlimefunItems.GOLD_PAN, null, new ItemStack(Material.IRON_INGOT), SlimefunItems.ELECTRIC_GOLD_PAN, new ItemStack(Material.IRON_INGOT), SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT, SlimefunItems.DURALUMIN_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1783,7 +1807,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 128);
|
}.registerChargeableBlock(true, 128);
|
||||||
|
|
||||||
new ElectricGoldPan(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_GOLD_PAN_3, "ELECTRIC_GOLD_PAN_3", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricGoldPan(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_GOLD_PAN_3, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.GOLD_PAN, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRIC_GOLD_PAN_2, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.COBALT_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.COBALT_INGOT}) {
|
new ItemStack[] {null, SlimefunItems.GOLD_PAN, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRIC_GOLD_PAN_2, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.COBALT_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.COBALT_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1798,7 +1822,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 512);
|
}.registerChargeableBlock(true, 512);
|
||||||
|
|
||||||
new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER, "ELECTRIC_DUST_WASHER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricDustWasher(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_DUST_WASHER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.WATER_BUCKET), null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_GOLD_PAN, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT}) {
|
new ItemStack[] {null, new ItemStack(Material.WATER_BUCKET), null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_GOLD_PAN, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT, SlimefunItems.COPPER_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1813,7 +1837,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 128);
|
}.registerChargeableBlock(true, 128);
|
||||||
|
|
||||||
new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER_2, "ELECTRIC_DUST_WASHER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricDustWasher(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_DUST_WASHER_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.WATER_BUCKET), null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_DUST_WASHER, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT}) {
|
new ItemStack[] {null, new ItemStack(Material.WATER_BUCKET), null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_DUST_WASHER, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1828,7 +1852,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 128);
|
}.registerChargeableBlock(true, 128);
|
||||||
|
|
||||||
new ElectricDustWasher(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_DUST_WASHER_3, "ELECTRIC_DUST_WASHER_3", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricDustWasher(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_DUST_WASHER_3, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.WATER_BUCKET), null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_DUST_WASHER_2, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.CORINTHIAN_BRONZE_INGOT}) {
|
new ItemStack[] {null, new ItemStack(Material.WATER_BUCKET), null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_DUST_WASHER_2, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.CORINTHIAN_BRONZE_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1843,7 +1867,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 512);
|
}.registerChargeableBlock(true, 512);
|
||||||
|
|
||||||
new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY, "ELECTRIC_INGOT_FACTORY", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricIngotFactory(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_INGOT_FACTORY, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.FLINT_AND_STEEL), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_DUST_WASHER, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT}) {
|
new ItemStack[] {null, new ItemStack(Material.FLINT_AND_STEEL), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_DUST_WASHER, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1858,7 +1882,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 256);
|
}.registerChargeableBlock(true, 256);
|
||||||
|
|
||||||
new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, "ELECTRIC_INGOT_FACTORY_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricIngotFactory(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_INGOT_FACTORY_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.GILDED_IRON, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY, SlimefunItems.HEATING_COIL, SlimefunItems.BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.BRASS_INGOT}) {
|
new ItemStack[] {SlimefunItems.GILDED_IRON, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY, SlimefunItems.HEATING_COIL, SlimefunItems.BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.BRASS_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1873,7 +1897,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 256);
|
}.registerChargeableBlock(true, 256);
|
||||||
|
|
||||||
new ElectricIngotFactory(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_FACTORY_3, "ELECTRIC_INGOT_FACTORY_3", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricIngotFactory(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_INGOT_FACTORY_3, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.GILDED_IRON, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, SlimefunItems.HEATING_COIL, SlimefunItems.BRASS_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.BRASS_INGOT}) {
|
new ItemStack[] {SlimefunItems.GILDED_IRON, new ItemStack(Material.FLINT_AND_STEEL), SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_INGOT_FACTORY_2, SlimefunItems.HEATING_COIL, SlimefunItems.BRASS_INGOT, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.BRASS_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1888,7 +1912,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 512);
|
}.registerChargeableBlock(true, 512);
|
||||||
|
|
||||||
new ElectrifiedCrucible(Categories.ELECTRICITY, SlimefunItems.ELECTRIFIED_CRUCIBLE, "ELECTRIFIED_CRUCIBLE", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectrifiedCrucible(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIFIED_CRUCIBLE, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.CRUCIBLE, SlimefunItems.LEAD_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.LEAD_INGOT}) {
|
new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.CRUCIBLE, SlimefunItems.LEAD_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.LARGE_CAPACITOR, SlimefunItems.LEAD_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1903,7 +1927,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 1024);
|
}.registerChargeableBlock(true, 1024);
|
||||||
|
|
||||||
new ElectrifiedCrucible(Categories.ELECTRICITY, SlimefunItems.ELECTRIFIED_CRUCIBLE_2, "ELECTRIFIED_CRUCIBLE_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectrifiedCrucible(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIFIED_CRUCIBLE_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.ELECTRIFIED_CRUCIBLE, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) {
|
new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.ELECTRIFIED_CRUCIBLE, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1918,7 +1942,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 1024);
|
}.registerChargeableBlock(true, 1024);
|
||||||
|
|
||||||
new ElectrifiedCrucible(Categories.ELECTRICITY, SlimefunItems.ELECTRIFIED_CRUCIBLE_3, "ELECTRIFIED_CRUCIBLE_3", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectrifiedCrucible(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIFIED_CRUCIBLE_3, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.ELECTRIFIED_CRUCIBLE_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.STEEL_PLATE, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_PLATE, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT}) {
|
new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.ELECTRIFIED_CRUCIBLE_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.STEEL_PLATE, SlimefunItems.POWER_CRYSTAL, SlimefunItems.STEEL_PLATE, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1933,7 +1957,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 1024);
|
}.registerChargeableBlock(true, 1024);
|
||||||
|
|
||||||
new ElectricOreGrinder(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER, "ELECTRIC_ORE_GRINDER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricOreGrinder(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_ORE_GRINDER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) {
|
new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.GILDED_IRON, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.GILDED_IRON, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.GILDED_IRON}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1948,7 +1972,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 128);
|
}.registerChargeableBlock(true, 128);
|
||||||
|
|
||||||
new ElectricOreGrinder(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_ORE_GRINDER_2, "ELECTRIC_ORE_GRINDER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricOreGrinder(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_ORE_GRINDER_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_ORE_GRINDER, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GILDED_IRON}) {
|
new ItemStack[] {null, new ItemStack(Material.DIAMOND_PICKAXE), null, SlimefunItems.HEATING_COIL, SlimefunItems.ELECTRIC_ORE_GRINDER, SlimefunItems.HEATING_COIL, SlimefunItems.GILDED_IRON, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GILDED_IRON}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1963,7 +1987,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 512);
|
}.registerChargeableBlock(true, 512);
|
||||||
|
|
||||||
new HeatedPressureChamber(Categories.ELECTRICITY, SlimefunItems.HEATED_PRESSURE_CHAMBER, "HEATED_PRESSURE_CHAMBER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new HeatedPressureChamber(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.HEATED_PRESSURE_CHAMBER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, new ItemStack(Material.GLASS), SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) {
|
new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, new ItemStack(Material.GLASS), SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1978,7 +2002,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 128);
|
}.registerChargeableBlock(true, 128);
|
||||||
|
|
||||||
new HeatedPressureChamber(Categories.ELECTRICITY, SlimefunItems.HEATED_PRESSURE_CHAMBER_2, "HEATED_PRESSURE_CHAMBER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new HeatedPressureChamber(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.HEATED_PRESSURE_CHAMBER_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATED_PRESSURE_CHAMBER, SlimefunItems.LEAD_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.REINFORCED_ALLOY_INGOT}) {
|
new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATED_PRESSURE_CHAMBER, SlimefunItems.LEAD_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.REINFORCED_ALLOY_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -1993,11 +2017,11 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 256);
|
}.registerChargeableBlock(true, 256);
|
||||||
|
|
||||||
new ElectricIngotPulverizer(Categories.ELECTRICITY, SlimefunItems.ELECTRIC_INGOT_PULVERIZER, "ELECTRIC_INGOT_PULVERIZER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElectricIngotPulverizer(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ELECTRIC_INGOT_PULVERIZER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.ELECTRIC_ORE_GRINDER, null, SlimefunItems.LEAD_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT})
|
new ItemStack[] {null, SlimefunItems.ELECTRIC_ORE_GRINDER, null, SlimefunItems.LEAD_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.LEAD_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.LEAD_INGOT})
|
||||||
.registerChargeableBlock(true, 512);
|
.registerChargeableBlock(true, 512);
|
||||||
|
|
||||||
new CoalGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR, "COAL_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new CoalGenerator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.COAL_GENERATOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.HEATING_COIL, new ItemStack(Material.FURNACE), SlimefunItems.HEATING_COIL, SlimefunItems.NICKEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.NICKEL_INGOT, null, SlimefunItems.NICKEL_INGOT, null}) {
|
new ItemStack[] {SlimefunItems.HEATING_COIL, new ItemStack(Material.FURNACE), SlimefunItems.HEATING_COIL, SlimefunItems.NICKEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.NICKEL_INGOT, null, SlimefunItems.NICKEL_INGOT, null}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2007,7 +2031,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerUnrechargeableBlock(true, 64);
|
}.registerUnrechargeableBlock(true, 64);
|
||||||
|
|
||||||
new CoalGenerator(Categories.ELECTRICITY, SlimefunItems.COAL_GENERATOR_2, "COAL_GENERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new CoalGenerator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.COAL_GENERATOR_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {new ItemStack(Material.MAGMA_BLOCK), SlimefunItems.HEATING_COIL, new ItemStack(Material.MAGMA_BLOCK), SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.COAL_GENERATOR, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null}) {
|
new ItemStack[] {new ItemStack(Material.MAGMA_BLOCK), SlimefunItems.HEATING_COIL, new ItemStack(Material.MAGMA_BLOCK), SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.COAL_GENERATOR, SlimefunItems.HARDENED_METAL_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2017,7 +2041,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerUnrechargeableBlock(true, 256);
|
}.registerUnrechargeableBlock(true, 256);
|
||||||
|
|
||||||
new BioGenerator(Categories.ELECTRICITY, SlimefunItems.BIO_REACTOR, "BIO_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new BioGenerator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.BIO_REACTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.HEATING_COIL, SlimefunItems.COMPOSTER, SlimefunItems.HEATING_COIL, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRASS_INGOT, null, SlimefunItems.ALUMINUM_BRASS_INGOT, null}) {
|
new ItemStack[] {SlimefunItems.HEATING_COIL, SlimefunItems.COMPOSTER, SlimefunItems.HEATING_COIL, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRASS_INGOT, null, SlimefunItems.ALUMINUM_BRASS_INGOT, null}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2027,19 +2051,19 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerUnrechargeableBlock(true, 128);
|
}.registerUnrechargeableBlock(true, 128);
|
||||||
|
|
||||||
new AutoDrier(Categories.ELECTRICITY, SlimefunItems.AUTO_DRIER, "AUTO_DRIER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new AutoDrier(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.AUTO_DRIER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, null, null, SlimefunItems.HEATING_COIL, new ItemStack(Material.SMOKER), SlimefunItems.HEATING_COIL, null, new ItemStack(Material.CAMPFIRE), null})
|
new ItemStack[] {null, null, null, SlimefunItems.HEATING_COIL, new ItemStack(Material.SMOKER), SlimefunItems.HEATING_COIL, null, new ItemStack(Material.CAMPFIRE), null})
|
||||||
.registerChargeableBlock(true, 128);
|
.registerChargeableBlock(true, 128);
|
||||||
|
|
||||||
new AutoEnchanter(Categories.ELECTRICITY, SlimefunItems.AUTO_ENCHANTER, "AUTO_ENCHANTER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new AutoEnchanter(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.AUTO_ENCHANTER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.ENCHANTING_TABLE), null, SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN})
|
new ItemStack[] {null, new ItemStack(Material.ENCHANTING_TABLE), null, SlimefunItems.CARBONADO, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CARBONADO, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN})
|
||||||
.registerChargeableBlock(true, 128);
|
.registerChargeableBlock(true, 128);
|
||||||
|
|
||||||
new AutoDisenchanter(Categories.ELECTRICITY, SlimefunItems.AUTO_DISENCHANTER, "AUTO_DISENCHANTER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new AutoDisenchanter(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.AUTO_DISENCHANTER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {new ItemStack(Material.REDSTONE), new ItemStack(Material.ANVIL), new ItemStack(Material.REDSTONE), SlimefunItems.CARBONADO, SlimefunItems.AUTO_ENCHANTER, SlimefunItems.CARBONADO, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN})
|
new ItemStack[] {new ItemStack(Material.REDSTONE), new ItemStack(Material.ANVIL), new ItemStack(Material.REDSTONE), SlimefunItems.CARBONADO, SlimefunItems.AUTO_ENCHANTER, SlimefunItems.CARBONADO, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.WITHER_PROOF_OBSIDIAN})
|
||||||
.registerChargeableBlock(true, 128);
|
.registerChargeableBlock(true, 128);
|
||||||
|
|
||||||
new AutoAnvil(Categories.ELECTRICITY, SlimefunItems.AUTO_ANVIL, "AUTO_ANVIL", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new AutoAnvil(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.AUTO_ANVIL, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.ANVIL), null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT, new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK)}) {
|
new ItemStack[] {null, new ItemStack(Material.ANVIL), null, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT, new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK)}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2054,7 +2078,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 128);
|
}.registerChargeableBlock(true, 128);
|
||||||
|
|
||||||
new AutoAnvil(Categories.ELECTRICITY, SlimefunItems.AUTO_ANVIL_2, "AUTO_ANVIL_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new AutoAnvil(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.AUTO_ANVIL_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.AUTO_ANVIL, null, SlimefunItems.STEEL_PLATE, SlimefunItems.HEATING_COIL, SlimefunItems.STEEL_PLATE, new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK)}) {
|
new ItemStack[] {null, SlimefunItems.AUTO_ANVIL, null, SlimefunItems.STEEL_PLATE, SlimefunItems.HEATING_COIL, SlimefunItems.STEEL_PLATE, new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK), new ItemStack(Material.IRON_BLOCK)}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2069,31 +2093,15 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 256);
|
}.registerChargeableBlock(true, 256);
|
||||||
|
|
||||||
new SlimefunItem(Categories.ELECTRICITY, SlimefunItems.MULTIMETER, "MULTIMETER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new Multimeter(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.MULTIMETER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.COPPER_INGOT, null, SlimefunItems.COPPER_INGOT, null, SlimefunItems.REDSTONE_ALLOY, null, null, SlimefunItems.GOLD_6K, null})
|
new ItemStack[] {SlimefunItems.COPPER_INGOT, null, SlimefunItems.COPPER_INGOT, null, SlimefunItems.REDSTONE_ALLOY, null, null, SlimefunItems.GOLD_6K, null})
|
||||||
.register(true, new ItemInteractionHandler() {
|
.register(true);
|
||||||
|
|
||||||
@Override
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.PLASTIC_SHEET, RecipeType.HEATED_PRESSURE_CHAMBER,
|
||||||
public boolean onRightClick(ItemUseEvent e, Player p, ItemStack item) {
|
|
||||||
if (SlimefunManager.isItemSimiliar(e.getItem(), SlimefunItems.MULTIMETER, true)) {
|
|
||||||
if (e.getClickedBlock() != null && ChargableBlock.isChargable(e.getClickedBlock())) {
|
|
||||||
e.setCancelled(true);
|
|
||||||
p.sendMessage("");
|
|
||||||
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&bStored Energy: &3" + DoubleHandler.getFancyDouble(ChargableBlock.getCharge(e.getClickedBlock())) + " J"));
|
|
||||||
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&bCapacity: &3" + DoubleHandler.getFancyDouble(ChargableBlock.getMaxCharge(e.getClickedBlock())) + " J"));
|
|
||||||
p.sendMessage("");
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.PLASTIC_SHEET, "PLASTIC_SHEET", RecipeType.HEATED_PRESSURE_CHAMBER,
|
|
||||||
new ItemStack[] {null, null, null, null, SlimefunItems.BUCKET_OF_OIL, null, null, null, null})
|
new ItemStack[] {null, null, null, null, SlimefunItems.BUCKET_OF_OIL, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.ANDROID_MEMORY_CORE, "ANDROID_MEMORY_CORE", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.ANDROID_MEMORY_CORE, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.BRASS_INGOT, new ItemStack(Material.ORANGE_STAINED_GLASS), SlimefunItems.BRASS_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.TIN_DUST, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BRASS_INGOT, new ItemStack(Material.ORANGE_STAINED_GLASS), SlimefunItems.BRASS_INGOT})
|
new ItemStack[] {SlimefunItems.BRASS_INGOT, new ItemStack(Material.ORANGE_STAINED_GLASS), SlimefunItems.BRASS_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.TIN_DUST, SlimefunItems.POWER_CRYSTAL, SlimefunItems.BRASS_INGOT, new ItemStack(Material.ORANGE_STAINED_GLASS), SlimefunItems.BRASS_INGOT})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
@ -2101,7 +2109,7 @@ public final class SlimefunSetup {
|
|||||||
new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.STEEL_INGOT, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT}) {
|
new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.STEEL_INGOT, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getMultiplier(int y) {
|
public int getMultiplier(int y) {
|
||||||
return y;
|
return y;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -2117,8 +2125,8 @@ public final class SlimefunSetup {
|
|||||||
new ItemStack[] {SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.CARBON, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER}) {
|
new ItemStack[] {SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.CARBON, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER, SlimefunItems.BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getMultiplier(int y) {
|
public int getMultiplier(int y) {
|
||||||
return y * 4.0 + 100;
|
return y * 4 + 100;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2132,8 +2140,8 @@ public final class SlimefunSetup {
|
|||||||
new ItemStack[] {SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CARBONADO, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2}) {
|
new ItemStack[] {SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CARBONADO, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.GPS_TRANSMITTER_2}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getMultiplier(int y) {
|
public int getMultiplier(int y) {
|
||||||
return y * 16.0 + 500;
|
return y * 16 + 500;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2147,8 +2155,8 @@ public final class SlimefunSetup {
|
|||||||
new ItemStack[] {SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.NICKEL_INGOT, SlimefunItems.CARBONADO, SlimefunItems.NICKEL_INGOT, SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GPS_TRANSMITTER_3}) {
|
new ItemStack[] {SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.NICKEL_INGOT, SlimefunItems.CARBONADO, SlimefunItems.NICKEL_INGOT, SlimefunItems.GPS_TRANSMITTER_3, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.GPS_TRANSMITTER_3}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public double getMultiplier(int y) {
|
public int getMultiplier(int y) {
|
||||||
return y * 64.0 + 600;
|
return y * 64 + 600;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2465,43 +2473,43 @@ public final class SlimefunSetup {
|
|||||||
}
|
}
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.BLANK_RUNE, "BLANK_RUNE", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.BLANK_RUNE, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.OBSIDIAN), SlimefunItems.MAGIC_LUMP_1,new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.STONE)})
|
new ItemStack[] {new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.OBSIDIAN), SlimefunItems.MAGIC_LUMP_1,new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.STONE)})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_AIR, "ANCIENT_RUNE_AIR", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.RUNE_AIR, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.FEATHER), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.FEATHER), new ItemStack(Material.GHAST_TEAR), SlimefunItems.BLANK_RUNE, new ItemStack(Material.GHAST_TEAR) ,new ItemStack(Material.FEATHER), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.FEATHER)}, new CustomItem(SlimefunItems.RUNE_AIR, 4))
|
new ItemStack[] {new ItemStack(Material.FEATHER), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.FEATHER), new ItemStack(Material.GHAST_TEAR), SlimefunItems.BLANK_RUNE, new ItemStack(Material.GHAST_TEAR) ,new ItemStack(Material.FEATHER), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.FEATHER)}, new CustomItem(SlimefunItems.RUNE_AIR, 4))
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_EARTH, "ANCIENT_RUNE_EARTH", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.RUNE_EARTH, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.DIRT), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.STONE), new ItemStack(Material.OBSIDIAN), SlimefunItems.BLANK_RUNE, new ItemStack(Material.OBSIDIAN) ,new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.DIRT)}, new CustomItem(SlimefunItems.RUNE_EARTH, 4))
|
new ItemStack[] {new ItemStack(Material.DIRT), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.STONE), new ItemStack(Material.OBSIDIAN), SlimefunItems.BLANK_RUNE, new ItemStack(Material.OBSIDIAN) ,new ItemStack(Material.STONE), SlimefunItems.MAGIC_LUMP_1, new ItemStack(Material.DIRT)}, new CustomItem(SlimefunItems.RUNE_EARTH, 4))
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_FIRE, "ANCIENT_RUNE_FIRE", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.RUNE_FIRE, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.FIRE_CHARGE), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.FIRE_CHARGE), new ItemStack(Material.BLAZE_POWDER), SlimefunItems.RUNE_EARTH, new ItemStack(Material.FLINT_AND_STEEL) ,new ItemStack(Material.FIRE_CHARGE), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.FIRE_CHARGE)}, new CustomItem(SlimefunItems.RUNE_FIRE, 4))
|
new ItemStack[] {new ItemStack(Material.FIRE_CHARGE), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.FIRE_CHARGE), new ItemStack(Material.BLAZE_POWDER), SlimefunItems.RUNE_EARTH, new ItemStack(Material.FLINT_AND_STEEL) ,new ItemStack(Material.FIRE_CHARGE), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.FIRE_CHARGE)}, new CustomItem(SlimefunItems.RUNE_FIRE, 4))
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_WATER, "ANCIENT_RUNE_WATER", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.RUNE_WATER, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.SALMON), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.WATER_BUCKET), new ItemStack(Material.SAND), SlimefunItems.BLANK_RUNE, new ItemStack(Material.SAND) ,new ItemStack(Material.WATER_BUCKET), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.COD)}, new CustomItem(SlimefunItems.RUNE_WATER, 4))
|
new ItemStack[] {new ItemStack(Material.SALMON), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.WATER_BUCKET), new ItemStack(Material.SAND), SlimefunItems.BLANK_RUNE, new ItemStack(Material.SAND) ,new ItemStack(Material.WATER_BUCKET), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.COD)}, new CustomItem(SlimefunItems.RUNE_WATER, 4))
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_ENDER, "ANCIENT_RUNE_ENDER", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.RUNE_ENDER, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENDER_PEARL), new ItemStack(Material.ENDER_EYE), SlimefunItems.BLANK_RUNE, new ItemStack(Material.ENDER_EYE), new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENDER_PEARL)}, new CustomItem(SlimefunItems.RUNE_ENDER, 6))
|
new ItemStack[] {new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENDER_PEARL), new ItemStack(Material.ENDER_EYE), SlimefunItems.BLANK_RUNE, new ItemStack(Material.ENDER_EYE), new ItemStack(Material.ENDER_PEARL), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.ENDER_PEARL)}, new CustomItem(SlimefunItems.RUNE_ENDER, 6))
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_LIGHTNING, "ANCIENT_RUNE_LIGHTNING", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.RUNE_LIGHTNING, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.IRON_INGOT), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.IRON_INGOT), SlimefunItems.RUNE_AIR, new ItemStack(Material.PHANTOM_MEMBRANE), SlimefunItems.RUNE_WATER, new ItemStack(Material.IRON_INGOT), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.IRON_INGOT)}, new CustomItem(SlimefunItems.RUNE_LIGHTNING, 4))
|
new ItemStack[] {new ItemStack(Material.IRON_INGOT), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.IRON_INGOT), SlimefunItems.RUNE_AIR, new ItemStack(Material.PHANTOM_MEMBRANE), SlimefunItems.RUNE_WATER, new ItemStack(Material.IRON_INGOT), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.IRON_INGOT)}, new CustomItem(SlimefunItems.RUNE_LIGHTNING, 4))
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_RAINBOW, "ANCIENT_RUNE_RAINBOW", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.RUNE_RAINBOW, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.CYAN_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_ENDER, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.YELLOW_DYE), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.MAGENTA_DYE)})
|
new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.MAGIC_LUMP_3, new ItemStack(Material.CYAN_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_ENDER, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.YELLOW_DYE), SlimefunItems.ENDER_LUMP_3, new ItemStack(Material.MAGENTA_DYE)})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SoulboundRune(Categories.LUMPS_AND_MAGIC, SlimefunItems.RUNE_SOULBOUND, "ANCIENT_RUNE_SOULBOUND", RecipeType.ANCIENT_ALTAR,
|
new SoulboundRune(Categories.LUMPS_AND_MAGIC, (SlimefunItemStack) SlimefunItems.RUNE_SOULBOUND, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_ENDER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.MAGIC_LUMP_3})
|
new ItemStack[] {SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ENDER_LUMP_3, SlimefunItems.RUNE_ENDER, SlimefunItems.ENDER_LUMP_3, SlimefunItems.MAGIC_LUMP_3, SlimefunItems.ESSENCE_OF_AFTERLIFE, SlimefunItems.MAGIC_LUMP_3})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new InfernalBonemeal(Categories.MAGIC, SlimefunItems.INFERNAL_BONEMEAL, "INFERNAL_BONEMEAL", RecipeType.ANCIENT_ALTAR,
|
new InfernalBonemeal(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.INFERNAL_BONEMEAL, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.NETHER_WART), SlimefunItems.RUNE_EARTH, new ItemStack(Material.NETHER_WART), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.BONE_MEAL), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.NETHER_WART), new ItemStack(Material.BLAZE_POWDER), new ItemStack(Material.NETHER_WART)}, new CustomItem(SlimefunItems.INFERNAL_BONEMEAL, 8))
|
new ItemStack[] {new ItemStack(Material.NETHER_WART), SlimefunItems.RUNE_EARTH, new ItemStack(Material.NETHER_WART), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.BONE_MEAL), SlimefunItems.MAGIC_LUMP_2, new ItemStack(Material.NETHER_WART), new ItemStack(Material.BLAZE_POWDER), new ItemStack(Material.NETHER_WART)}, new CustomItem(SlimefunItems.INFERNAL_BONEMEAL, 8))
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
@ -2527,72 +2535,72 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
RainbowTicker rainbow = new RainbowTicker();
|
RainbowTicker rainbow = new RainbowTicker();
|
||||||
|
|
||||||
new SlimefunItem(Categories.MAGIC, SlimefunItems.RAINBOW_WOOL, "RAINBOW_WOOL", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.RAINBOW_WOOL, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL)}, new CustomItem(SlimefunItems.RAINBOW_WOOL, 8))
|
new ItemStack[] {new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.WHITE_WOOL)}, new CustomItem(SlimefunItems.RAINBOW_WOOL, 8))
|
||||||
.register(true, rainbow);
|
.register(true, rainbow);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MAGIC, SlimefunItems.RAINBOW_GLASS, "RAINBOW_GLASS", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.RAINBOW_GLASS, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS)}, new CustomItem(SlimefunItems.RAINBOW_GLASS, 8))
|
new ItemStack[] {new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.WHITE_STAINED_GLASS)}, new CustomItem(SlimefunItems.RAINBOW_GLASS, 8))
|
||||||
.register(true, rainbow);
|
.register(true, rainbow);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MAGIC, SlimefunItems.RAINBOW_GLASS_PANE, "RAINBOW_GLASS_PANE", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.RAINBOW_GLASS_PANE, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_PANE, 8))
|
new ItemStack[] {new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_PANE, 8))
|
||||||
.register(true, rainbow);
|
.register(true, rainbow);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MAGIC, SlimefunItems.RAINBOW_CLAY, "RAINBOW_CLAY", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.RAINBOW_CLAY, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA)}, new CustomItem(SlimefunItems.RAINBOW_CLAY, 8))
|
new ItemStack[] {new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.WHITE_TERRACOTTA)}, new CustomItem(SlimefunItems.RAINBOW_CLAY, 8))
|
||||||
.register(true, rainbow);
|
.register(true, rainbow);
|
||||||
|
|
||||||
RainbowTicker xmas = new RainbowTicker(13, 14);
|
RainbowTicker xmas = new RainbowTicker(13, 14);
|
||||||
|
|
||||||
new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.RAINBOW_WOOL_XMAS, "RAINBOW_WOOL_XMAS", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.CHRISTMAS, (SlimefunItemStack) SlimefunItems.RAINBOW_WOOL_XMAS, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_WOOL_XMAS, 2))
|
new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_WOOL_XMAS, 2))
|
||||||
.register(true, xmas);
|
.register(true, xmas);
|
||||||
|
|
||||||
new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.RAINBOW_GLASS_XMAS, "RAINBOW_GLASS_XMAS", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.CHRISTMAS, (SlimefunItemStack) SlimefunItems.RAINBOW_GLASS_XMAS, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_STAINED_GLASS), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_XMAS, 2))
|
new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_STAINED_GLASS), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_XMAS, 2))
|
||||||
.register(true, xmas);
|
.register(true, xmas);
|
||||||
|
|
||||||
new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.RAINBOW_GLASS_PANE_XMAS, "RAINBOW_GLASS_PANE_XMAS", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.CHRISTMAS, (SlimefunItemStack) SlimefunItems.RAINBOW_GLASS_PANE_XMAS, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_PANE_XMAS, 2))
|
new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_PANE_XMAS, 2))
|
||||||
.register(true, xmas);
|
.register(true, xmas);
|
||||||
|
|
||||||
new SlimefunItem(Categories.CHRISTMAS, SlimefunItems.RAINBOW_CLAY_XMAS, "RAINBOW_CLAY_XMAS", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.CHRISTMAS, (SlimefunItemStack) SlimefunItems.RAINBOW_CLAY_XMAS, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_TERRACOTTA), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_CLAY_XMAS, 2))
|
new ItemStack[] {new ItemStack(Material.RED_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.GREEN_DYE), new ItemStack(Material.WHITE_TERRACOTTA), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.GREEN_DYE), SlimefunItems.CHRISTMAS_COOKIE, new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_CLAY_XMAS, 2))
|
||||||
.register(true, xmas);
|
.register(true, xmas);
|
||||||
|
|
||||||
RainbowTicker valentine = new RainbowTicker(2, 6, 10);
|
RainbowTicker valentine = new RainbowTicker(2, 6, 10);
|
||||||
|
|
||||||
new SlimefunItem(Categories.VALENTINES_DAY, SlimefunItems.RAINBOW_WOOL_VALENTINE, "RAINBOW_WOOL_VALENTINE", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.VALENTINES_DAY, (SlimefunItemStack) SlimefunItems.RAINBOW_WOOL_VALENTINE, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_WOOL_VALENTINE, 2))
|
new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_WOOL), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_WOOL), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_WOOL_VALENTINE, 2))
|
||||||
.register(true, valentine);
|
.register(true, valentine);
|
||||||
|
|
||||||
new SlimefunItem(Categories.VALENTINES_DAY, SlimefunItems.RAINBOW_GLASS_VALENTINE, "RAINBOW_GLASS_VALENTINE", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.VALENTINES_DAY, (SlimefunItemStack) SlimefunItems.RAINBOW_GLASS_VALENTINE, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_STAINED_GLASS), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_VALENTINE, 2))
|
new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_STAINED_GLASS), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_VALENTINE, 2))
|
||||||
.register(true, valentine);
|
.register(true, valentine);
|
||||||
|
|
||||||
new SlimefunItem(Categories.VALENTINES_DAY, SlimefunItems.RAINBOW_GLASS_PANE_VALENTINE, "RAINBOW_GLASS_PANE_VALENTINE", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.VALENTINES_DAY, (SlimefunItemStack) SlimefunItems.RAINBOW_GLASS_PANE_VALENTINE, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_PANE_VALENTINE, 2))
|
new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_STAINED_GLASS_PANE), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_STAINED_GLASS_PANE), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_GLASS_PANE_VALENTINE, 2))
|
||||||
.register(true, valentine);
|
.register(true, valentine);
|
||||||
|
|
||||||
new SlimefunItem(Categories.VALENTINES_DAY, SlimefunItems.RAINBOW_CLAY_VALENTINE, "RAINBOW_CLAY_VALENTINE", RecipeType.ANCIENT_ALTAR,
|
new SlimefunItem(Categories.VALENTINES_DAY, (SlimefunItemStack) SlimefunItems.RAINBOW_CLAY_VALENTINE, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_TERRACOTTA), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_CLAY_VALENTINE, 2))
|
new ItemStack[] {new ItemStack(Material.RED_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.PINK_DYE), new ItemStack(Material.WHITE_TERRACOTTA), SlimefunItems.RUNE_RAINBOW, new ItemStack(Material.WHITE_TERRACOTTA), new ItemStack(Material.PINK_DYE), new ItemStack(Material.POPPY), new ItemStack(Material.RED_DYE)}, new CustomItem(SlimefunItems.RAINBOW_CLAY_VALENTINE, 2))
|
||||||
.register(true, valentine);
|
.register(true, valentine);
|
||||||
|
|
||||||
new SlimefunItem(Categories.TECH_MISC, SlimefunItems.WITHER_PROOF_GLASS, "WITHER_PROOF_GLASS", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.WITHER_PROOF_GLASS, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.LEAD_INGOT, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.HARDENED_GLASS, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.LEAD_INGOT, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.LEAD_INGOT},
|
new ItemStack[] {SlimefunItems.LEAD_INGOT, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.LEAD_INGOT, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.HARDENED_GLASS, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.LEAD_INGOT, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.LEAD_INGOT},
|
||||||
new CustomItem(SlimefunItems.WITHER_PROOF_GLASS, 4))
|
new CustomItem(SlimefunItems.WITHER_PROOF_GLASS, 4))
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new GEOScannerBlock(Categories.GPS, SlimefunItems.GPS_GEO_SCANNER, "GPS_GEO_SCANNER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new GEOScannerBlock(Categories.GPS, (SlimefunItemStack) SlimefunItems.GPS_GEO_SCANNER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, null, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET})
|
new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, null, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new PortableGEOScanner(Categories.GPS, SlimefunItems.PORTABLE_GEO_SCANNER, "PORTABLE_GEO_SCANNER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new PortableGEOScanner(Categories.GPS, (SlimefunItemStack) SlimefunItems.PORTABLE_GEO_SCANNER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.ELECTRO_MAGNET, new ItemStack(Material.COMPASS), SlimefunItems.ELECTRO_MAGNET, SlimefunItems.STEEL_INGOT, SlimefunItems.GPS_MARKER_TOOL, SlimefunItems.STEEL_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.SOLDER_INGOT})
|
new ItemStack[] {SlimefunItems.ELECTRO_MAGNET, new ItemStack(Material.COMPASS), SlimefunItems.ELECTRO_MAGNET, SlimefunItems.STEEL_INGOT, SlimefunItems.GPS_MARKER_TOOL, SlimefunItems.STEEL_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.SOLDER_INGOT})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new OilPump(Categories.GPS, SlimefunItems.OIL_PUMP, "OIL_PUMP", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new OilPump(Categories.GPS, (SlimefunItemStack) SlimefunItems.OIL_PUMP, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.STEEL_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT, null, new ItemStack(Material.BUCKET), null}) {
|
new ItemStack[] {SlimefunItems.STEEL_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT, null, new ItemStack(Material.BUCKET), null}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2607,7 +2615,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 200);
|
}.registerChargeableBlock(true, 200);
|
||||||
|
|
||||||
new GEOMiner(Categories.GPS, SlimefunItems.GEO_MINER, "GEO_MINER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new GEOMiner(Categories.GPS, (SlimefunItemStack) SlimefunItems.GEO_MINER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {new ItemStack(Material.DIAMOND_PICKAXE), SlimefunItems.MEDIUM_CAPACITOR, new ItemStack(Material.DIAMOND_PICKAXE), SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.OIL_PUMP, SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null}) {
|
new ItemStack[] {new ItemStack(Material.DIAMOND_PICKAXE), SlimefunItems.MEDIUM_CAPACITOR, new ItemStack(Material.DIAMOND_PICKAXE), SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.OIL_PUMP, SlimefunItems.REINFORCED_ALLOY_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2637,19 +2645,19 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 1024);
|
}.registerChargeableBlock(true, 1024);
|
||||||
|
|
||||||
new SlimefunItem(Categories.RESOURCES, SlimefunItems.BUCKET_OF_OIL, "BUCKET_OF_OIL", new RecipeType(SlimefunItems.OIL_PUMP),
|
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.BUCKET_OF_OIL, new RecipeType(SlimefunItems.OIL_PUMP),
|
||||||
new ItemStack[] {null, null, null, null, new ItemStack(Material.BUCKET), null, null, null, null})
|
new ItemStack[] {null, null, null, null, new ItemStack(Material.BUCKET), null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.RESOURCES, SlimefunItems.BUCKET_OF_FUEL, "BUCKET_OF_FUEL", new RecipeType(SlimefunItems.REFINERY),
|
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.BUCKET_OF_FUEL, new RecipeType(SlimefunItems.REFINERY),
|
||||||
new ItemStack[] {null, null, null, null, SlimefunItems.BUCKET_OF_OIL, null, null, null, null})
|
new ItemStack[] {null, null, null, null, SlimefunItems.BUCKET_OF_OIL, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.RESOURCES, SlimefunItems.NETHER_ICE, "NETHER_ICE", new RecipeType(SlimefunItems.GEO_MINER),
|
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.NETHER_ICE, new RecipeType(SlimefunItems.GEO_MINER),
|
||||||
new ItemStack[] {null, null, null, null, null, null, null, null})
|
new ItemStack[] {null, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new Refinery(Categories.ELECTRICITY, SlimefunItems.REFINERY, "REFINERY", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new Refinery(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.REFINERY, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.HARDENED_GLASS, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.HARDENED_GLASS, SlimefunItems.HARDENED_GLASS, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.HARDENED_GLASS, new ItemStack(Material.PISTON), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PISTON)}) {
|
new ItemStack[] {SlimefunItems.HARDENED_GLASS, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.HARDENED_GLASS, SlimefunItems.HARDENED_GLASS, SlimefunItems.REDSTONE_ALLOY, SlimefunItems.HARDENED_GLASS, new ItemStack(Material.PISTON), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PISTON)}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2664,7 +2672,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 256);
|
}.registerChargeableBlock(true, 256);
|
||||||
|
|
||||||
new LavaGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR, "LAVA_GENERATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new LavaGenerator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.LAVA_GENERATOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.GOLD_16K, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL}) {
|
new ItemStack[] {null, SlimefunItems.GOLD_16K, null, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.HEATING_COIL}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2674,7 +2682,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerUnrechargeableBlock(true, 512);
|
}.registerUnrechargeableBlock(true, 512);
|
||||||
|
|
||||||
new LavaGenerator(Categories.ELECTRICITY, SlimefunItems.LAVA_GENERATOR_2, "LAVA_GENERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new LavaGenerator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.LAVA_GENERATOR_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.LAVA_GENERATOR, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.HEATING_COIL}) {
|
new ItemStack[] {SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.LAVA_GENERATOR, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.HEATING_COIL, SlimefunItems.COMPRESSED_CARBON, SlimefunItems.HEATING_COIL}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2684,7 +2692,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerUnrechargeableBlock(true, 1024);
|
}.registerUnrechargeableBlock(true, 1024);
|
||||||
|
|
||||||
new CombustionGenerator(Categories.ELECTRICITY, SlimefunItems.COMBUSTION_REACTOR, "COMBUSTION_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new CombustionGenerator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.COMBUSTION_REACTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL}) {
|
new ItemStack[] {null, SlimefunItems.STEEL_INGOT, null, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL, SlimefunItems.STEEL_INGOT, SlimefunItems.HEATING_COIL}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2694,26 +2702,26 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerUnrechargeableBlock(true, 256);
|
}.registerUnrechargeableBlock(true, 256);
|
||||||
|
|
||||||
new SlimefunItem(Categories.GPS, SlimefunItems.GPS_TELEPORTER_PYLON, "GPS_TELEPORTER_PYLON", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SlimefunItem(Categories.GPS, (SlimefunItemStack) SlimefunItems.GPS_TELEPORTER_PYLON, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.ZINC_INGOT, new ItemStack(Material.GLASS), SlimefunItems.ZINC_INGOT, new ItemStack(Material.GLASS), SlimefunItems.HEATING_COIL, new ItemStack(Material.GLASS), SlimefunItems.ZINC_INGOT, new ItemStack(Material.GLASS), SlimefunItems.ZINC_INGOT}, new CustomItem(SlimefunItems.GPS_TELEPORTER_PYLON, 8))
|
new ItemStack[] {SlimefunItems.ZINC_INGOT, new ItemStack(Material.GLASS), SlimefunItems.ZINC_INGOT, new ItemStack(Material.GLASS), SlimefunItems.HEATING_COIL, new ItemStack(Material.GLASS), SlimefunItems.ZINC_INGOT, new ItemStack(Material.GLASS), SlimefunItems.ZINC_INGOT}, new CustomItem(SlimefunItems.GPS_TELEPORTER_PYLON, 8))
|
||||||
.register(true, new RainbowTicker(9, 10));
|
.register(true, new RainbowTicker(9, 10));
|
||||||
|
|
||||||
new Teleporter(Categories.GPS, SlimefunItems.GPS_TELEPORTATION_MATRIX, "GPS_TELEPORTATION_MATRIX", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new Teleporter(Categories.GPS, (SlimefunItemStack) SlimefunItems.GPS_TELEPORTATION_MATRIX, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_CONTROL_PANEL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON}) {
|
new ItemStack[] {SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_CONTROL_PANEL, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.GPS_TELEPORTER_PYLON, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.GPS_TELEPORTER_PYLON}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onInteract(final Player p, final Block b) {
|
public void onInteract(final Player p, final Block b) {
|
||||||
GPSNetwork.openTeleporterGUI(p, UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), b, Slimefun.getGPSNetwork().getNetworkComplexity(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner"))));
|
Slimefun.getGPSNetwork().openTeleporterGUI(p, UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner")), b, Slimefun.getGPSNetwork().getNetworkComplexity(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner"))));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.GPS, SlimefunItems.GPS_ACTIVATION_DEVICE_SHARED, "GPS_ACTIVATION_DEVICE_SHARED", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SlimefunItem(Categories.GPS, (SlimefunItemStack) SlimefunItems.GPS_ACTIVATION_DEVICE_SHARED, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.STONE_PRESSURE_PLATE), null, new ItemStack(Material.REDSTONE), SlimefunItems.GPS_TRANSMITTER, new ItemStack(Material.REDSTONE), SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT})
|
new ItemStack[] {null, new ItemStack(Material.STONE_PRESSURE_PLATE), null, new ItemStack(Material.REDSTONE), SlimefunItems.GPS_TRANSMITTER, new ItemStack(Material.REDSTONE), SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.BILLON_INGOT})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.GPS, SlimefunItems.GPS_ACTIVATION_DEVICE_PERSONAL, "GPS_ACTIVATION_DEVICE_PERSONAL", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SlimefunItem(Categories.GPS, (SlimefunItemStack) SlimefunItems.GPS_ACTIVATION_DEVICE_PERSONAL, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.LEAD_INGOT, null, SlimefunItems.COBALT_INGOT, SlimefunItems.GPS_ACTIVATION_DEVICE_SHARED, SlimefunItems.COBALT_INGOT, null, SlimefunItems.LEAD_INGOT, null})
|
new ItemStack[] {null, SlimefunItems.LEAD_INGOT, null, SlimefunItems.COBALT_INGOT, SlimefunItems.GPS_ACTIVATION_DEVICE_SHARED, SlimefunItems.COBALT_INGOT, null, SlimefunItems.LEAD_INGOT, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
@ -2730,32 +2738,32 @@ public final class SlimefunSetup {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
new InfusedHopper(Categories.MAGIC, SlimefunItems.INFUSED_HOPPER, "INFUSED_HOPPER", RecipeType.ANCIENT_ALTAR,
|
new InfusedHopper(Categories.MAGIC, (SlimefunItemStack) SlimefunItems.INFUSED_HOPPER, RecipeType.ANCIENT_ALTAR,
|
||||||
new ItemStack[] {new ItemStack(Material.OBSIDIAN), SlimefunItems.RUNE_EARTH, new ItemStack(Material.HOPPER), SlimefunItems.RUNE_ENDER, SlimefunItems.INFUSED_MAGNET, SlimefunItems.RUNE_ENDER, new ItemStack(Material.HOPPER), SlimefunItems.RUNE_EARTH, new ItemStack(Material.OBSIDIAN)})
|
new ItemStack[] {new ItemStack(Material.OBSIDIAN), SlimefunItems.RUNE_EARTH, new ItemStack(Material.HOPPER), SlimefunItems.RUNE_ENDER, SlimefunItems.INFUSED_MAGNET, SlimefunItems.RUNE_ENDER, new ItemStack(Material.HOPPER), SlimefunItems.RUNE_EARTH, new ItemStack(Material.OBSIDIAN)})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.RESOURCES, SlimefunItems.BLISTERING_INGOT, "BLISTERING_INGOT", RecipeType.HEATED_PRESSURE_CHAMBER,
|
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.BLISTERING_INGOT, RecipeType.HEATED_PRESSURE_CHAMBER,
|
||||||
new ItemStack[] {SlimefunItems.GOLD_24K, SlimefunItems.URANIUM, null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.GOLD_24K, SlimefunItems.URANIUM, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.RESOURCES, SlimefunItems.BLISTERING_INGOT_2, "BLISTERING_INGOT_2", RecipeType.HEATED_PRESSURE_CHAMBER,
|
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.BLISTERING_INGOT_2, RecipeType.HEATED_PRESSURE_CHAMBER,
|
||||||
new ItemStack[] {SlimefunItems.BLISTERING_INGOT, SlimefunItems.CARBONADO, null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.BLISTERING_INGOT, SlimefunItems.CARBONADO, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.RESOURCES, SlimefunItems.BLISTERING_INGOT_3, "BLISTERING_INGOT_3", RecipeType.HEATED_PRESSURE_CHAMBER,
|
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.BLISTERING_INGOT_3, RecipeType.HEATED_PRESSURE_CHAMBER,
|
||||||
new ItemStack[] {SlimefunItems.BLISTERING_INGOT_2,new ItemStack(Material.NETHER_STAR), null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.BLISTERING_INGOT_2,new ItemStack(Material.NETHER_STAR), null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.RESOURCES, SlimefunItems.ENRICHED_NETHER_ICE, "ENRICHED_NETHER_ICE", RecipeType.HEATED_PRESSURE_CHAMBER,
|
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.ENRICHED_NETHER_ICE, RecipeType.HEATED_PRESSURE_CHAMBER,
|
||||||
new ItemStack[]{SlimefunItems.NETHER_ICE, SlimefunItems.PLUTONIUM, null, null, null, null, null, null, null})
|
new ItemStack[]{SlimefunItems.NETHER_ICE, SlimefunItems.PLUTONIUM, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new ElevatorPlate(Categories.GPS, SlimefunItems.ELEVATOR, "ELEVATOR_PLATE", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new ElevatorPlate(Categories.GPS, (SlimefunItemStack) SlimefunItems.ELEVATOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, new ItemStack(Material.STONE_PRESSURE_PLATE), null, new ItemStack(Material.PISTON), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PISTON), SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT},
|
new ItemStack[] {null, new ItemStack(Material.STONE_PRESSURE_PLATE), null, new ItemStack(Material.PISTON), SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PISTON), SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ALUMINUM_BRONZE_INGOT},
|
||||||
new CustomItem(SlimefunItems.ELEVATOR, 2))
|
new CustomItem(SlimefunItems.ELEVATOR, 2))
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR, "FOOD_FABRICATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new FoodFabricator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.FOOD_FABRICATOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.BILLON_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.CAN, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) {
|
new ItemStack[] {SlimefunItems.BILLON_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.CAN, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2770,7 +2778,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 256);
|
}.registerChargeableBlock(true, 256);
|
||||||
|
|
||||||
new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR_2, "FOOD_FABRICATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new FoodFabricator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.FOOD_FABRICATOR_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) {
|
new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2785,47 +2793,51 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 512);
|
}.registerChargeableBlock(true, 512);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.WHEAT_ORGANIC_FOOD, "WHEAT_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.WHEAT_ORGANIC_FOOD, new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
||||||
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.WHEAT), null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.WHEAT), null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.CARROT_ORGANIC_FOOD, "CARROT_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.CARROT_ORGANIC_FOOD, new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
||||||
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.CARROT), null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.CARROT), null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.POTATO_ORGANIC_FOOD, "POTATO_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.POTATO_ORGANIC_FOOD, new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
||||||
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.POTATO), null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.POTATO), null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.SEEDS_ORGANIC_FOOD, "SEEDS_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.SEEDS_ORGANIC_FOOD, new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
||||||
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.WHEAT_SEEDS), null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.WHEAT_SEEDS), null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.BEETROOT_ORGANIC_FOOD, "BEETROOT_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.BEETROOT_ORGANIC_FOOD, new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
||||||
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.BEETROOT), null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.BEETROOT), null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.MELON_ORGANIC_FOOD, "MELON_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.MELON_ORGANIC_FOOD, new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
||||||
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.MELON), null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.MELON), null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.APPLE_ORGANIC_FOOD, "APPLE_ORGANIC_FOOD", new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.APPLE_ORGANIC_FOOD, new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
||||||
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.APPLE), null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.APPLE), null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new AutoBreeder(Categories.ELECTRICITY, SlimefunItems.AUTO_BREEDER, "AUTO_BREEDER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.SWEET_BERRIES_ORGANIC_FOOD, new RecipeType(SlimefunItems.FOOD_FABRICATOR),
|
||||||
|
new ItemStack[] {SlimefunItems.CAN, new ItemStack(Material.SWEET_BERRIES), null, null, null, null, null, null, null})
|
||||||
|
.register(true);
|
||||||
|
|
||||||
|
new AutoBreeder(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.AUTO_BREEDER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.GOLD_18K, SlimefunItems.CAN, SlimefunItems.GOLD_18K, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.HAY_BLOCK), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.LEAD_INGOT})
|
new ItemStack[] {SlimefunItems.GOLD_18K, SlimefunItems.CAN, SlimefunItems.GOLD_18K, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.HAY_BLOCK), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.LEAD_INGOT})
|
||||||
.registerChargeableBlock(true, 1024);
|
.registerChargeableBlock(true, 1024);
|
||||||
|
|
||||||
new AnimalGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, "ANIMAL_GROWTH_ACCELERATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new AnimalGrowthAccelerator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.WHEAT_ORGANIC_FOOD, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.AUTO_BREEDER, SlimefunItems.REINFORCED_ALLOY_INGOT})
|
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.WHEAT_ORGANIC_FOOD, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.AUTO_BREEDER, SlimefunItems.REINFORCED_ALLOY_INGOT})
|
||||||
.registerChargeableBlock(true, 1024);
|
.registerChargeableBlock(true, 1024);
|
||||||
|
|
||||||
new XPCollector(Categories.ELECTRICITY, SlimefunItems.XP_COLLECTOR, "XP_COLLECTOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new XPCollector(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.XP_COLLECTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.AUTO_ENCHANTER, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRONZE_INGOT})
|
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.AUTO_ENCHANTER, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRONZE_INGOT})
|
||||||
.registerChargeableBlock(true, 1024);
|
.registerChargeableBlock(true, 1024);
|
||||||
|
|
||||||
new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER, "FOOD_COMPOSTER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new FoodComposter(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.FOOD_COMPOSTER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.CAN, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) {
|
new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.CAN, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2840,7 +2852,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 256);
|
}.registerChargeableBlock(true, 256);
|
||||||
|
|
||||||
new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER_2, "FOOD_COMPOSTER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new FoodComposter(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.FOOD_COMPOSTER_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_COMPOSTER, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) {
|
new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_COMPOSTER, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2855,35 +2867,39 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 256);
|
}.registerChargeableBlock(true, 256);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.WHEAT_FERTILIZER, "WHEAT_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.WHEAT_FERTILIZER, new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
||||||
new ItemStack[] {SlimefunItems.WHEAT_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.WHEAT_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.CARROT_FERTILIZER, "CARROT_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.CARROT_FERTILIZER, new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
||||||
new ItemStack[] {SlimefunItems.CARROT_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.CARROT_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.POTATO_FERTILIZER, "POTATO_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.POTATO_FERTILIZER, new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
||||||
new ItemStack[] {SlimefunItems.POTATO_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.POTATO_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.SEEDS_FERTILIZER, "SEEDS_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.SEEDS_FERTILIZER, new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
||||||
new ItemStack[] {SlimefunItems.SEEDS_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.SEEDS_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.BEETROOT_FERTILIZER, "BEETROOT_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.BEETROOT_FERTILIZER, new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
||||||
new ItemStack[] {SlimefunItems.BEETROOT_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.BEETROOT_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.MELON_FERTILIZER, "MELON_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.MELON_FERTILIZER, new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
||||||
new ItemStack[] {SlimefunItems.MELON_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.MELON_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.MISC, SlimefunItems.APPLE_FERTILIZER, "APPLE_FERTILIZER", new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.APPLE_FERTILIZER, new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
||||||
new ItemStack[] {SlimefunItems.APPLE_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.APPLE_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR, "CROP_GROWTH_ACCELERATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.SWEET_BERRIES_FERTILIZER, new RecipeType(SlimefunItems.FOOD_COMPOSTER),
|
||||||
|
new ItemStack[] {SlimefunItems.SWEET_BERRIES_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
||||||
|
.register(true);
|
||||||
|
|
||||||
|
new CropGrowthAccelerator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.CROP_GROWTH_ACCELERATOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, SlimefunItems.ELECTRO_MAGNET}) {
|
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, SlimefunItems.ELECTRO_MAGNET}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2903,7 +2919,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 1024);
|
}.registerChargeableBlock(true, 1024);
|
||||||
|
|
||||||
new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR_2, "CROP_GROWTH_ACCELERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new CropGrowthAccelerator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.CROP_GROWTH_ACCELERATOR_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CROP_GROWTH_ACCELERATOR, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.ELECTRO_MAGNET}) {
|
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CROP_GROWTH_ACCELERATOR, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.ELECTRO_MAGNET}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2923,7 +2939,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 1024);
|
}.registerChargeableBlock(true, 1024);
|
||||||
|
|
||||||
new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER, "FREEZER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new Freezer(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.FREEZER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PACKED_ICE), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.COOLING_UNIT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.COOLING_UNIT}) {
|
new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PACKED_ICE), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.COOLING_UNIT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.COOLING_UNIT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2938,7 +2954,7 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 256);
|
}.registerChargeableBlock(true, 256);
|
||||||
|
|
||||||
new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER_2, "FREEZER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new Freezer(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.FREEZER_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.FREEZER, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COOLING_UNIT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.COOLING_UNIT}) {
|
new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.FREEZER, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COOLING_UNIT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.COOLING_UNIT}) {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -2953,33 +2969,33 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 256);
|
}.registerChargeableBlock(true, 256);
|
||||||
|
|
||||||
new SlimefunItem(Categories.TECH_MISC, SlimefunItems.REACTOR_COOLANT_CELL, "REACTOR_COOLANT_CELL", new RecipeType(SlimefunItems.FREEZER),
|
new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.REACTOR_COOLANT_CELL, new RecipeType(SlimefunItems.FREEZER),
|
||||||
new ItemStack[] {new ItemStack(Material.BLUE_ICE), null, null, null, null, null, null, null, null})
|
new ItemStack[] {new ItemStack(Material.BLUE_ICE), null, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.TECH_MISC, SlimefunItems.NETHER_ICE_COOLANT_CELL, "NETHER_ICE_COOLANT_CELL", new RecipeType(SlimefunItems.HEATED_PRESSURE_CHAMBER),
|
new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.NETHER_ICE_COOLANT_CELL, new RecipeType(SlimefunItems.HEATED_PRESSURE_CHAMBER),
|
||||||
new ItemStack[]{SlimefunItems.ENRICHED_NETHER_ICE, null, null, null, null, null, null, null, null})
|
new ItemStack[]{SlimefunItems.ENRICHED_NETHER_ICE, null, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.RESOURCES, SlimefunItems.NEPTUNIUM, "NEPTUNIUM", new RecipeType(SlimefunItems.NUCLEAR_REACTOR),
|
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.NEPTUNIUM, new RecipeType(SlimefunItems.NUCLEAR_REACTOR),
|
||||||
new ItemStack[] {SlimefunItems.URANIUM, null, null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.URANIUM, null, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
SlimefunItem.setRadioactive(SlimefunItems.NEPTUNIUM);
|
SlimefunItem.setRadioactive(SlimefunItems.NEPTUNIUM);
|
||||||
|
|
||||||
new SlimefunItem(Categories.RESOURCES, SlimefunItems.PLUTONIUM, "PLUTONIUM", new RecipeType(SlimefunItems.NUCLEAR_REACTOR),
|
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.PLUTONIUM, new RecipeType(SlimefunItems.NUCLEAR_REACTOR),
|
||||||
new ItemStack[] {SlimefunItems.NEPTUNIUM, null, null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.NEPTUNIUM, null, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
SlimefunItem.setRadioactive(SlimefunItems.PLUTONIUM);
|
SlimefunItem.setRadioactive(SlimefunItems.PLUTONIUM);
|
||||||
|
|
||||||
new SlimefunItem(Categories.RESOURCES, SlimefunItems.BOOSTED_URANIUM, "BOOSTED_URANIUM", RecipeType.HEATED_PRESSURE_CHAMBER,
|
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.BOOSTED_URANIUM, RecipeType.HEATED_PRESSURE_CHAMBER,
|
||||||
new ItemStack[] {SlimefunItems.PLUTONIUM, SlimefunItems.URANIUM, null, null, null, null, null, null, null})
|
new ItemStack[] {SlimefunItems.PLUTONIUM, SlimefunItems.URANIUM, null, null, null, null, null, null, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
SlimefunItem.setRadioactive(SlimefunItems.BOOSTED_URANIUM);
|
SlimefunItem.setRadioactive(SlimefunItems.BOOSTED_URANIUM);
|
||||||
|
|
||||||
new AReactor(Categories.ELECTRICITY, SlimefunItems.NUCLEAR_REACTOR, "NUCLEAR_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new AReactor(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.NUCLEAR_REACTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.CARBONADO_EDGED_CAPACITOR, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.REINFORCED_PLATE, SlimefunItems.COOLING_UNIT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.LEAD_INGOT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.LEAD_INGOT}){
|
new ItemStack[] {SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.CARBONADO_EDGED_CAPACITOR, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.REINFORCED_PLATE, SlimefunItems.COOLING_UNIT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.LEAD_INGOT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.LEAD_INGOT}){
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -3022,7 +3038,7 @@ public final class SlimefunSetup {
|
|||||||
}
|
}
|
||||||
.registerChargeableBlock(true, 16384);
|
.registerChargeableBlock(true, 16384);
|
||||||
|
|
||||||
new AReactor(Categories.ELECTRICITY, SlimefunItems.NETHERSTAR_REACTOR, "NETHERSTAR_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new AReactor(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.NETHERSTAR_REACTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[]{SlimefunItems.BOOSTED_URANIUM, SlimefunItems.CARBONADO_EDGED_CAPACITOR, SlimefunItems.BOOSTED_URANIUM, SlimefunItems.REINFORCED_PLATE, new ItemStack(Material.NETHER_STAR), SlimefunItems.REINFORCED_PLATE, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CORINTHIAN_BRONZE_INGOT}){
|
new ItemStack[]{SlimefunItems.BOOSTED_URANIUM, SlimefunItems.CARBONADO_EDGED_CAPACITOR, SlimefunItems.BOOSTED_URANIUM, SlimefunItems.REINFORCED_PLATE, new ItemStack(Material.NETHER_STAR), SlimefunItems.REINFORCED_PLATE, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CORINTHIAN_BRONZE_INGOT}){
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -3063,15 +3079,15 @@ public final class SlimefunSetup {
|
|||||||
|
|
||||||
}.registerChargeableBlock(true, 32768);
|
}.registerChargeableBlock(true, 32768);
|
||||||
|
|
||||||
new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_MOTOR, "CARGO_MOTOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SlimefunItem(Categories.CARGO, (SlimefunItemStack) SlimefunItems.CARGO_MOTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS, SlimefunItems.SILVER_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS}, new CustomItem(SlimefunItems.CARGO_MOTOR, 4))
|
new ItemStack[] {SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS, SlimefunItems.SILVER_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS}, new CustomItem(SlimefunItems.CARGO_MOTOR, 4))
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new CargoManagerBlock(Categories.CARGO, SlimefunItems.CARGO_MANAGER, "CARGO_MANAGER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new CargoManagerBlock(Categories.CARGO, (SlimefunItemStack) SlimefunItems.CARGO_MANAGER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.HOLOGRAM_PROJECTOR, null, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CARGO_MOTOR, SlimefunItems.REINFORCED_PLATE, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.ALUMINUM_BRONZE_INGOT})
|
new ItemStack[] {null, SlimefunItems.HOLOGRAM_PROJECTOR, null, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CARGO_MOTOR, SlimefunItems.REINFORCED_PLATE, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.ALUMINUM_BRONZE_INGOT})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_NODE, "CARGO_NODE", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new SlimefunItem(Categories.CARGO, (SlimefunItemStack) SlimefunItems.CARGO_NODE, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT}, new CustomItem(SlimefunItems.CARGO_NODE, 4))
|
new ItemStack[] {SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT}, new CustomItem(SlimefunItems.CARGO_NODE, 4))
|
||||||
.register(true, new ItemInteractionHandler() {
|
.register(true, new ItemInteractionHandler() {
|
||||||
|
|
||||||
@ -3117,12 +3133,12 @@ public final class SlimefunSetup {
|
|||||||
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.LEAD_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.LEAD_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null})
|
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.LEAD_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.LEAD_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, null})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
new FluidPump(Categories.ELECTRICITY, SlimefunItems.FLUID_PUMP, "FLUID_PUMP", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new FluidPump(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.FLUID_PUMP, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.MEDIUM_CAPACITOR, null, new ItemStack(Material.BUCKET), SlimefunItems.CARGO_MOTOR, new ItemStack(Material.BUCKET), null, SlimefunItems.OIL_PUMP, null})
|
new ItemStack[] {null, SlimefunItems.MEDIUM_CAPACITOR, null, new ItemStack(Material.BUCKET), SlimefunItems.CARGO_MOTOR, new ItemStack(Material.BUCKET), null, SlimefunItems.OIL_PUMP, null})
|
||||||
.registerChargeableBlock(true, 512);
|
.registerChargeableBlock(true, 512);
|
||||||
|
|
||||||
|
|
||||||
new TrashCan(Categories.CARGO, SlimefunItems.TRASH_CAN, "TRASH_CAN_BLOCK", RecipeType.ENHANCED_CRAFTING_TABLE,
|
new TrashCan(Categories.CARGO, (SlimefunItemStack) SlimefunItems.TRASH_CAN, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||||
new ItemStack[] {null, SlimefunItems.PORTABLE_DUSTBIN, null, SlimefunItems.LEAD_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.ALUMINUM_INGOT})
|
new ItemStack[] {null, SlimefunItems.PORTABLE_DUSTBIN, null, SlimefunItems.LEAD_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.ALUMINUM_INGOT, SlimefunItems.LEAD_INGOT, SlimefunItems.ALUMINUM_INGOT})
|
||||||
.register(true);
|
.register(true);
|
||||||
|
|
||||||
|
@ -11,6 +11,7 @@ import com.google.gson.JsonElement;
|
|||||||
import com.google.gson.JsonObject;
|
import com.google.gson.JsonObject;
|
||||||
import com.google.gson.JsonParser;
|
import com.google.gson.JsonParser;
|
||||||
|
|
||||||
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
|
|
||||||
@ -18,11 +19,11 @@ public final class WikiSetup {
|
|||||||
|
|
||||||
private WikiSetup() {}
|
private WikiSetup() {}
|
||||||
|
|
||||||
public static void addWikiPages(Class<?> c) {
|
public static void addWikiPages(SlimefunPlugin plugin) {
|
||||||
JsonParser parser = new JsonParser();
|
JsonParser parser = new JsonParser();
|
||||||
Slimefun.getLogger().log(Level.INFO, "Loading Wiki pages...");
|
Slimefun.getLogger().log(Level.INFO, "Loading Wiki pages...");
|
||||||
|
|
||||||
try (BufferedReader reader = new BufferedReader(new InputStreamReader(c.getResourceAsStream("/wiki.json")))) {
|
try (BufferedReader reader = new BufferedReader(new InputStreamReader(plugin.getClass().getResourceAsStream("/wiki.json")))) {
|
||||||
JsonElement element = parser.parse(reader.lines().collect(Collectors.joining("")));
|
JsonElement element = parser.parse(reader.lines().collect(Collectors.joining("")));
|
||||||
JsonObject json = element.getAsJsonObject();
|
JsonObject json = element.getAsJsonObject();
|
||||||
|
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,16 +1,20 @@
|
|||||||
package me.mrCookieSlime.Slimefun;
|
package me.mrCookieSlime.Slimefun;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
|
import java.util.Optional;
|
||||||
|
import java.util.UUID;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.NamespacedKey;
|
|
||||||
import org.bukkit.World;
|
import org.bukkit.World;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.players.MinecraftAccount;
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.players.MinecraftAccount.TooManyRequestsException;
|
||||||
import io.github.thebusybiscuit.cscorelib2.protection.ProtectionManager;
|
import io.github.thebusybiscuit.cscorelib2.protection.ProtectionManager;
|
||||||
|
import io.github.thebusybiscuit.cscorelib2.recipes.RecipeSnapshot;
|
||||||
import io.github.thebusybiscuit.cscorelib2.reflection.ReflectionUtils;
|
import io.github.thebusybiscuit.cscorelib2.reflection.ReflectionUtils;
|
||||||
import io.github.thebusybiscuit.cscorelib2.updater.BukkitUpdater;
|
import io.github.thebusybiscuit.cscorelib2.updater.BukkitUpdater;
|
||||||
import io.github.thebusybiscuit.cscorelib2.updater.GitHubBuildsUpdater;
|
import io.github.thebusybiscuit.cscorelib2.updater.GitHubBuildsUpdater;
|
||||||
@ -34,7 +38,6 @@ import me.mrCookieSlime.Slimefun.Setup.Files;
|
|||||||
import me.mrCookieSlime.Slimefun.Setup.MiscSetup;
|
import me.mrCookieSlime.Slimefun.Setup.MiscSetup;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.ResearchSetup;
|
import me.mrCookieSlime.Slimefun.Setup.ResearchSetup;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunLocalization;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunLocalization;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunMetrics;
|
|
||||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunSetup;
|
import me.mrCookieSlime.Slimefun.Setup.SlimefunSetup;
|
||||||
import me.mrCookieSlime.Slimefun.Setup.WikiSetup;
|
import me.mrCookieSlime.Slimefun.Setup.WikiSetup;
|
||||||
import me.mrCookieSlime.Slimefun.ancient_altar.AncientAltarListener;
|
import me.mrCookieSlime.Slimefun.ancient_altar.AncientAltarListener;
|
||||||
@ -49,6 +52,7 @@ import me.mrCookieSlime.Slimefun.autosave.PlayerAutoSaver;
|
|||||||
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
|
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
|
||||||
import me.mrCookieSlime.Slimefun.commands.SlimefunTabCompleter;
|
import me.mrCookieSlime.Slimefun.commands.SlimefunTabCompleter;
|
||||||
import me.mrCookieSlime.Slimefun.hooks.SlimefunHooks;
|
import me.mrCookieSlime.Slimefun.hooks.SlimefunHooks;
|
||||||
|
import me.mrCookieSlime.Slimefun.hooks.github.Contributor;
|
||||||
import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector;
|
import me.mrCookieSlime.Slimefun.hooks.github.GitHubConnector;
|
||||||
import me.mrCookieSlime.Slimefun.hooks.github.GitHubSetup;
|
import me.mrCookieSlime.Slimefun.hooks.github.GitHubSetup;
|
||||||
import me.mrCookieSlime.Slimefun.listeners.AndroidKillingListener;
|
import me.mrCookieSlime.Slimefun.listeners.AndroidKillingListener;
|
||||||
@ -70,6 +74,9 @@ import me.mrCookieSlime.Slimefun.listeners.TalismanListener;
|
|||||||
import me.mrCookieSlime.Slimefun.listeners.TeleporterListener;
|
import me.mrCookieSlime.Slimefun.listeners.TeleporterListener;
|
||||||
import me.mrCookieSlime.Slimefun.listeners.ToolListener;
|
import me.mrCookieSlime.Slimefun.listeners.ToolListener;
|
||||||
import me.mrCookieSlime.Slimefun.listeners.WorldListener;
|
import me.mrCookieSlime.Slimefun.listeners.WorldListener;
|
||||||
|
import me.mrCookieSlime.Slimefun.services.CustomItemDataService;
|
||||||
|
import me.mrCookieSlime.Slimefun.services.CustomTextureService;
|
||||||
|
import me.mrCookieSlime.Slimefun.services.MetricsService;
|
||||||
import me.mrCookieSlime.Slimefun.utils.Settings;
|
import me.mrCookieSlime.Slimefun.utils.Settings;
|
||||||
import me.mrCookieSlime.Slimefun.utils.Utilities;
|
import me.mrCookieSlime.Slimefun.utils.Utilities;
|
||||||
|
|
||||||
@ -77,7 +84,10 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
|
|
||||||
public static SlimefunPlugin instance;
|
public static SlimefunPlugin instance;
|
||||||
|
|
||||||
private final NamespacedKey itemDataKey = new NamespacedKey(this, "slimefun_item");
|
private RecipeSnapshot recipeSnapshot;
|
||||||
|
|
||||||
|
private final CustomItemDataService itemDataService = new CustomItemDataService(this, "slimefun_item");
|
||||||
|
private final CustomTextureService textureService = new CustomTextureService(this);
|
||||||
|
|
||||||
private TickerTask ticker;
|
private TickerTask ticker;
|
||||||
private SlimefunLocalization local;
|
private SlimefunLocalization local;
|
||||||
@ -162,11 +172,17 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
gps = new GPSNetwork();
|
gps = new GPSNetwork();
|
||||||
|
|
||||||
// Setting up bStats
|
// Setting up bStats
|
||||||
new SlimefunMetrics(this);
|
new MetricsService(this);
|
||||||
|
|
||||||
// Setting up the Auto-Updater
|
// Setting up the Auto-Updater
|
||||||
Updater updater;
|
Updater updater;
|
||||||
|
|
||||||
|
if (getDescription().getVersion().equals("UNOFFICIAL")) {
|
||||||
|
// This Server is using a modified build that is not a public release.
|
||||||
|
getLogger().log(Level.WARNING, "It looks like you are using an unofficially modified build of Slimefun!");
|
||||||
|
getLogger().log(Level.WARNING, "Auto-Updates have been disabled, this build is not considered safe.");
|
||||||
|
getLogger().log(Level.WARNING, "Do not report bugs encountered in this Version of Slimefun.");
|
||||||
|
}
|
||||||
if (getDescription().getVersion().startsWith("DEV - ")) {
|
if (getDescription().getVersion().startsWith("DEV - ")) {
|
||||||
// If we are using a development build, we want to switch to our custom
|
// If we are using a development build, we want to switch to our custom
|
||||||
updater = new GitHubBuildsUpdater(this, getFile(), "TheBusyBiscuit/Slimefun4/master");
|
updater = new GitHubBuildsUpdater(this, getFile(), "TheBusyBiscuit/Slimefun4/master");
|
||||||
@ -180,7 +196,9 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
updater = new BukkitUpdater(this, getFile(), 53485);
|
updater = new BukkitUpdater(this, getFile(), 53485);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (config.getBoolean("options.auto-update")) updater.start();
|
if (updater != null && config.getBoolean("options.auto-update")) {
|
||||||
|
updater.start();
|
||||||
|
}
|
||||||
|
|
||||||
// Creating all necessary Folders
|
// Creating all necessary Folders
|
||||||
String[] storage = {"blocks", "stored-blocks", "stored-inventories", "stored-chunks", "universal-inventories", "waypoints", "block-backups"};
|
String[] storage = {"blocks", "stored-blocks", "stored-inventories", "stored-chunks", "universal-inventories", "waypoints", "block-backups"};
|
||||||
@ -200,13 +218,14 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
MiscSetup.loadDescriptions();
|
MiscSetup.loadDescriptions();
|
||||||
|
|
||||||
settings.researchesEnabled = getResearchCfg().getBoolean("enable-researching");
|
settings.researchesEnabled = getResearchCfg().getBoolean("enable-researching");
|
||||||
settings.smelteryFireBreakChance = (Integer) Slimefun.getItemValue("SMELTERY", "chance.fireBreak");
|
settings.smelteryFireBreakChance = (int) Slimefun.getItemValue("SMELTERY", "chance.fireBreak");
|
||||||
|
|
||||||
getLogger().log(Level.INFO, "Loading Researches...");
|
getLogger().log(Level.INFO, "Loading Researches...");
|
||||||
ResearchSetup.setupResearches();
|
ResearchSetup.setupResearches();
|
||||||
|
|
||||||
MiscSetup.setupMisc();
|
MiscSetup.setupMisc();
|
||||||
WikiSetup.addWikiPages(getClass());
|
WikiSetup.addWikiPages(this);
|
||||||
|
textureService.setup(utilities.allItems);
|
||||||
|
|
||||||
getLogger().log(Level.INFO, "Loading World Generators...");
|
getLogger().log(Level.INFO, "Loading World Generators...");
|
||||||
|
|
||||||
@ -250,6 +269,7 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
|
|
||||||
// Initiating various Stuff and all Items with a slightly delay (0ms after the Server finished loading)
|
// Initiating various Stuff and all Items with a slightly delay (0ms after the Server finished loading)
|
||||||
getServer().getScheduler().scheduleSyncDelayedTask(this, () -> {
|
getServer().getScheduler().scheduleSyncDelayedTask(this, () -> {
|
||||||
|
recipeSnapshot = new RecipeSnapshot(this);
|
||||||
protections = new ProtectionManager(getServer());
|
protections = new ProtectionManager(getServer());
|
||||||
MiscSetup.loadItems(settings);
|
MiscSetup.loadItems(settings);
|
||||||
|
|
||||||
@ -280,13 +300,36 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
try {
|
try {
|
||||||
ticker.run();
|
ticker.run();
|
||||||
}
|
}
|
||||||
catch(Throwable x) {
|
catch(Exception x) {
|
||||||
getLogger().log(Level.SEVERE, "An Exception was caught while ticking the Block Tickers Task for Slimefun v" + Slimefun.getVersion(), x);
|
getLogger().log(Level.SEVERE, "An Exception was caught while ticking the Block Tickers Task for Slimefun v" + Slimefun.getVersion(), x);
|
||||||
ticker.abortTick();
|
ticker.abortTick();
|
||||||
}
|
}
|
||||||
}, 100L, config.getInt("URID.custom-ticker-delay"));
|
}, 100L, config.getInt("URID.custom-ticker-delay"));
|
||||||
|
|
||||||
getServer().getScheduler().runTaskTimerAsynchronously(this, () -> utilities.connectors.forEach(GitHubConnector::pullFile), 80L, 60 * 60 * 20L);
|
getServer().getScheduler().runTaskTimerAsynchronously(this, () -> {
|
||||||
|
utilities.connectors.forEach(GitHubConnector::pullFile);
|
||||||
|
|
||||||
|
for (Contributor contributor: utilities.contributors.values()) {
|
||||||
|
if (!contributor.hasTexture()) {
|
||||||
|
String name = contributor.getName();
|
||||||
|
|
||||||
|
try {
|
||||||
|
Optional<UUID> uuid = MinecraftAccount.getUUID(name);
|
||||||
|
|
||||||
|
if (uuid.isPresent()) {
|
||||||
|
Optional<String> skin = MinecraftAccount.getSkin(uuid.get());
|
||||||
|
contributor.setTexture(skin);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
contributor.setTexture(Optional.empty());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
catch(TooManyRequestsException x) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}, 80L, 60 * 60 * 20L);
|
||||||
|
|
||||||
// Hooray!
|
// Hooray!
|
||||||
getLogger().log(Level.INFO, "Finished!");
|
getLogger().log(Level.INFO, "Finished!");
|
||||||
@ -426,8 +469,16 @@ public final class SlimefunPlugin extends JavaPlugin {
|
|||||||
return instance.local;
|
return instance.local;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static NamespacedKey getItemDataKey() {
|
public static RecipeSnapshot getMinecraftRecipes() {
|
||||||
return instance.itemDataKey;
|
return instance.recipeSnapshot;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CustomItemDataService getItemDataService() {
|
||||||
|
return instance.itemDataService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static CustomTextureService getItemTextureService() {
|
||||||
|
return instance.textureService;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -30,27 +30,30 @@ import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
|
|||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
|
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||||
|
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||||
import me.mrCookieSlime.Slimefun.utils.Utilities;
|
import me.mrCookieSlime.Slimefun.utils.Utilities;
|
||||||
|
|
||||||
public class AncientAltarListener implements Listener {
|
public class AncientAltarListener implements Listener {
|
||||||
|
|
||||||
private Utilities utilities;
|
private Utilities utilities;
|
||||||
|
|
||||||
|
private final List<Block> altars = new ArrayList<>();
|
||||||
|
private final Set<UUID> removedItems = new HashSet<>();
|
||||||
|
|
||||||
public AncientAltarListener(SlimefunPlugin plugin) {
|
public AncientAltarListener(SlimefunPlugin plugin) {
|
||||||
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
plugin.getServer().getPluginManager().registerEvents(this, plugin);
|
||||||
|
|
||||||
utilities = SlimefunPlugin.getUtilities();
|
utilities = SlimefunPlugin.getUtilities();
|
||||||
}
|
}
|
||||||
|
|
||||||
private List<Block> altars = new ArrayList<>();
|
|
||||||
private Set<UUID> removedItems = new HashSet<>();
|
|
||||||
|
|
||||||
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
|
||||||
public void onInteract(PlayerInteractEvent e) {
|
public void onInteract(PlayerInteractEvent e) {
|
||||||
if (e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
if (e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
|
||||||
Block b = e.getClickedBlock();
|
Block b = e.getClickedBlock();
|
||||||
String item = BlockStorage.checkID(b);
|
String item = BlockStorage.checkID(b);
|
||||||
|
|
||||||
if (item != null) {
|
if (item != null) {
|
||||||
if (item.equals("ANCIENT_PEDESTAL")) {
|
if (item.equals("ANCIENT_PEDESTAL")) {
|
||||||
if (utilities.altarinuse.contains(b.getLocation())) {
|
if (utilities.altarinuse.contains(b.getLocation())) {
|
||||||
@ -81,7 +84,7 @@ public class AncientAltarListener implements Listener {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if (item.equals("ANCIENT_ALTAR")) {
|
else if (item.equals("ANCIENT_ALTAR")) {
|
||||||
if (utilities.altarinuse.contains(b.getLocation())) {
|
if (!Slimefun.hasUnlocked(e.getPlayer(), SlimefunItems.ANCIENT_ALTAR, true) || utilities.altarinuse.contains(b.getLocation())) {
|
||||||
e.setCancelled(true);
|
e.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -98,7 +101,7 @@ public class AncientAltarListener implements Listener {
|
|||||||
if (pedestals.size() == 8) {
|
if (pedestals.size() == 8) {
|
||||||
pedestals.forEach(block -> utilities.altarinuse.add(block.getLocation()));
|
pedestals.forEach(block -> utilities.altarinuse.add(block.getLocation()));
|
||||||
|
|
||||||
if (catalyst != null && catalyst.getType() != Material.AIR) {
|
if (catalyst.getType() != Material.AIR) {
|
||||||
List<ItemStack> input = new ArrayList<>();
|
List<ItemStack> input = new ArrayList<>();
|
||||||
for (Block pedestal: pedestals) {
|
for (Block pedestal: pedestals) {
|
||||||
Item stack = findItem(pedestal);
|
Item stack = findItem(pedestal);
|
||||||
@ -107,14 +110,24 @@ public class AncientAltarListener implements Listener {
|
|||||||
|
|
||||||
ItemStack result = Pedestals.getRecipeOutput(catalyst, input);
|
ItemStack result = Pedestals.getRecipeOutput(catalyst, input);
|
||||||
if (result != null) {
|
if (result != null) {
|
||||||
List<ItemStack> consumed = new ArrayList<>();
|
if (Slimefun.hasUnlocked(e.getPlayer(), result, true)) {
|
||||||
consumed.add(catalyst);
|
List<ItemStack> consumed = new ArrayList<>();
|
||||||
|
consumed.add(catalyst);
|
||||||
|
|
||||||
if (e.getPlayer().getGameMode() != GameMode.CREATIVE) {
|
if (e.getPlayer().getGameMode() != GameMode.CREATIVE) {
|
||||||
ItemUtils.consumeItem(e.getPlayer().getInventory().getItemInMainHand(), false);
|
ItemUtils.consumeItem(e.getPlayer().getInventory().getItemInMainHand(), false);
|
||||||
|
}
|
||||||
|
|
||||||
|
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, new RitualAnimation(altars, b, b.getLocation().add(0.5, 1.3, 0.5), result, pedestals, consumed), 10L);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
altars.remove(e.getClickedBlock());
|
||||||
|
|
||||||
|
pedestals.forEach(block -> utilities.altarinuse.remove(block.getLocation()));
|
||||||
|
|
||||||
|
// Item not unlocked, no longer in use.
|
||||||
|
utilities.altarinuse.remove(b.getLocation());
|
||||||
}
|
}
|
||||||
|
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, new RitualAnimation(altars, b, b.getLocation().add(0.5, 1.3, 0.5), result, pedestals, consumed), 10L);
|
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
altars.remove(e.getClickedBlock());
|
altars.remove(e.getClickedBlock());
|
||||||
|
@ -141,7 +141,7 @@ public class RitualAnimation implements Runnable {
|
|||||||
if (running) {
|
if (running) {
|
||||||
l.getWorld().playSound(l, Sound.ENTITY_ZOMBIE_VILLAGER_CURE, 1F, 1F);
|
l.getWorld().playSound(l, Sound.ENTITY_ZOMBIE_VILLAGER_CURE, 1F, 1F);
|
||||||
l.getWorld().playEffect(l, Effect.STEP_SOUND, Material.EMERALD_BLOCK);
|
l.getWorld().playEffect(l, Effect.STEP_SOUND, Material.EMERALD_BLOCK);
|
||||||
l.getWorld().dropItemNaturally(l.add(0, 1, 0), output);
|
l.getWorld().dropItemNaturally(l.add(0, -0.5, 0), output);
|
||||||
|
|
||||||
pedestals.forEach(b -> utilities.altarinuse.remove(b.getLocation()));
|
pedestals.forEach(b -> utilities.altarinuse.remove(b.getLocation()));
|
||||||
|
|
||||||
|
@ -309,13 +309,13 @@ public abstract class ProgrammableAndroid extends SlimefunItem implements Invent
|
|||||||
BlockStorage.addBlockInfo(b, "rotation", directions.get(indexRight).toString());
|
BlockStorage.addBlockInfo(b, "rotation", directions.get(indexRight).toString());
|
||||||
break;
|
break;
|
||||||
case DIG_FORWARD:
|
case DIG_FORWARD:
|
||||||
mine(b, b.getRelative(face));
|
mine(b, menu, b.getRelative(face));
|
||||||
break;
|
break;
|
||||||
case DIG_UP:
|
case DIG_UP:
|
||||||
mine(b, b.getRelative(BlockFace.UP));
|
mine(b, menu, b.getRelative(BlockFace.UP));
|
||||||
break;
|
break;
|
||||||
case DIG_DOWN:
|
case DIG_DOWN:
|
||||||
mine(b, b.getRelative(BlockFace.DOWN));
|
mine(b, menu, b.getRelative(BlockFace.DOWN));
|
||||||
break;
|
break;
|
||||||
case CATCH_FISH:
|
case CATCH_FISH:
|
||||||
Block water = b.getRelative(BlockFace.DOWN);
|
Block water = b.getRelative(BlockFace.DOWN);
|
||||||
@ -331,13 +331,13 @@ public abstract class ProgrammableAndroid extends SlimefunItem implements Invent
|
|||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MOVE_AND_DIG_FORWARD:
|
case MOVE_AND_DIG_FORWARD:
|
||||||
movedig(b, face, b.getRelative(face));
|
movedig(b, menu, face, b.getRelative(face));
|
||||||
break;
|
break;
|
||||||
case MOVE_AND_DIG_UP:
|
case MOVE_AND_DIG_UP:
|
||||||
movedig(b, face, b.getRelative(BlockFace.UP));
|
movedig(b, menu, face, b.getRelative(BlockFace.UP));
|
||||||
break;
|
break;
|
||||||
case MOVE_AND_DIG_DOWN:
|
case MOVE_AND_DIG_DOWN:
|
||||||
movedig(b, face, b.getRelative(BlockFace.DOWN));
|
movedig(b, menu, face, b.getRelative(BlockFace.DOWN));
|
||||||
break;
|
break;
|
||||||
case INTERFACE_ITEMS:
|
case INTERFACE_ITEMS:
|
||||||
if (BlockStorage.check(b.getRelative(face), "ANDROID_INTERFACE_ITEMS") && b.getRelative(face).getState() instanceof Dispenser) {
|
if (BlockStorage.check(b.getRelative(face), "ANDROID_INTERFACE_ITEMS") && b.getRelative(face).getState() instanceof Dispenser) {
|
||||||
@ -399,7 +399,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem implements Invent
|
|||||||
case CHOP_TREE:
|
case CHOP_TREE:
|
||||||
if (MaterialCollections.getAllLogs().contains(b.getRelative(face).getType())) {
|
if (MaterialCollections.getAllLogs().contains(b.getRelative(face).getType())) {
|
||||||
List<Block> list = Vein.find(b.getRelative(face), 180, block -> MaterialCollections.getAllLogs().contains(block.getType()));
|
List<Block> list = Vein.find(b.getRelative(face), 180, block -> MaterialCollections.getAllLogs().contains(block.getType()));
|
||||||
list.add(0, b.getRelative(face));
|
|
||||||
if (!list.isEmpty()) {
|
if (!list.isEmpty()) {
|
||||||
refresh = false;
|
refresh = false;
|
||||||
Block log = list.get(list.size() - 1);
|
Block log = list.get(list.size() - 1);
|
||||||
@ -496,17 +495,18 @@ public abstract class ProgrammableAndroid extends SlimefunItem implements Invent
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void mine(Block b, Block block) {
|
private void mine(Block b, BlockMenu menu, Block block) {
|
||||||
Collection<ItemStack> drops = block.getDrops();
|
Collection<ItemStack> drops = block.getDrops();
|
||||||
if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && SlimefunPlugin.getProtectionManager().hasPermission(Bukkit.getOfflinePlayer(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner"))), block.getLocation(), ProtectableAction.BREAK_BLOCK)) {
|
if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && SlimefunPlugin.getProtectionManager().hasPermission(Bukkit.getOfflinePlayer(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner"))), block.getLocation(), ProtectableAction.BREAK_BLOCK)) {
|
||||||
String item = BlockStorage.checkID(block);
|
String item = BlockStorage.checkID(block);
|
||||||
|
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
ItemStack[] items = drops.toArray(new ItemStack[drops.size()]);
|
for (ItemStack drop: drops) {
|
||||||
if (fits(b, items)) {
|
if (menu.fits(drop, getOutputSlots())) {
|
||||||
pushItems(b, items);
|
menu.pushItem(drop, getOutputSlots());
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
||||||
block.setType(Material.AIR);
|
block.setType(Material.AIR);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
@ -524,23 +524,23 @@ public abstract class ProgrammableAndroid extends SlimefunItem implements Invent
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void movedig(Block b, BlockFace face, Block block) {
|
private void movedig(Block b, BlockMenu menu, BlockFace face, Block block) {
|
||||||
Collection<ItemStack> drops = block.getDrops();
|
Collection<ItemStack> drops = block.getDrops();
|
||||||
if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && SlimefunPlugin.getProtectionManager().hasPermission(Bukkit.getOfflinePlayer(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner"))), block.getLocation(), ProtectableAction.BREAK_BLOCK)) {
|
if (!blockblacklist.contains(block.getType()) && !drops.isEmpty() && SlimefunPlugin.getProtectionManager().hasPermission(Bukkit.getOfflinePlayer(UUID.fromString(BlockStorage.getLocationInfo(b.getLocation(), "owner"))), block.getLocation(), ProtectableAction.BREAK_BLOCK)) {
|
||||||
SlimefunItem item = BlockStorage.check(block);
|
SlimefunItem item = BlockStorage.check(block);
|
||||||
if (item == null) {
|
if (item == null) {
|
||||||
ItemStack[] items = drops.toArray(new ItemStack[drops.size()]);
|
for (ItemStack drop: drops) {
|
||||||
if (fits(b, items)) {
|
if (menu.fits(drop, getOutputSlots())) {
|
||||||
pushItems(b, items);
|
menu.pushItem(drop, getOutputSlots());
|
||||||
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, block.getType());
|
||||||
|
|
||||||
block.setType(Material.AIR);
|
block.setType(Material.AIR);
|
||||||
move(b, face, block);
|
move(b, face, block);
|
||||||
|
|
||||||
b.setType(Material.AIR);
|
b.setType(Material.AIR);
|
||||||
BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation());
|
BlockStorage.moveBlockInfo(b.getLocation(), block.getLocation());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
else {
|
else {
|
||||||
@ -1003,7 +1003,9 @@ public abstract class ProgrammableAndroid extends SlimefunItem implements Invent
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void addItems(Block b, ItemStack... items) {
|
public void addItems(Block b, ItemStack... items) {
|
||||||
this.pushItems(b, items);
|
for (ItemStack item: items) {
|
||||||
|
BlockStorage.getInventory(b).pushItem(item, getOutputSlots());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -8,6 +8,8 @@ import java.util.Set;
|
|||||||
|
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
|
|
||||||
|
import com.google.gson.GsonBuilder;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||||
|
|
||||||
public class BlockInfoConfig extends Config {
|
public class BlockInfoConfig extends Config {
|
||||||
@ -136,4 +138,8 @@ public class BlockInfoConfig extends Config {
|
|||||||
throw new UnsupportedOperationException();
|
throw new UnsupportedOperationException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String toJSON() {
|
||||||
|
return new GsonBuilder().create().toJson(data);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -160,7 +160,9 @@ public class BlockStorage {
|
|||||||
FileConfiguration cfg = YamlConfiguration.loadConfiguration(chunks);
|
FileConfiguration cfg = YamlConfiguration.loadConfiguration(chunks);
|
||||||
for (String key: cfg.getKeys(false)) {
|
for (String key: cfg.getKeys(false)) {
|
||||||
try {
|
try {
|
||||||
if (world.getName().equals(key.split(";")[0])) SlimefunPlugin.getUtilities().mapChunks.put(key, cfg.getString(key));
|
if (world.getName().equals(key.split(";")[0])) {
|
||||||
|
SlimefunPlugin.getUtilities().mapChunks.put(key, new BlockInfoConfig(parseJSON(cfg.getString(key))));
|
||||||
|
}
|
||||||
} catch (Exception x) {
|
} catch (Exception x) {
|
||||||
Slimefun.getLogger().log(Level.WARNING, "Failed to load " + chunks.getName() + " in World " + world.getName() + '(' + key + ") for Slimefun " + Slimefun.getVersion(), x);
|
Slimefun.getLogger().log(Level.WARNING, "Failed to load " + chunks.getName() + " in World " + world.getName() + '(' + key + ") for Slimefun " + Slimefun.getVersion(), x);
|
||||||
}
|
}
|
||||||
@ -238,6 +240,7 @@ public class BlockStorage {
|
|||||||
for (Map.Entry<String, Config> entry: cache.entrySet()) {
|
for (Map.Entry<String, Config> entry: cache.entrySet()) {
|
||||||
blocksCache.remove(entry.getKey());
|
blocksCache.remove(entry.getKey());
|
||||||
Config cfg = entry.getValue();
|
Config cfg = entry.getValue();
|
||||||
|
|
||||||
if (cfg.getKeys().isEmpty()) {
|
if (cfg.getKeys().isEmpty()) {
|
||||||
if (!cfg.getFile().delete()) {
|
if (!cfg.getFile().delete()) {
|
||||||
Slimefun.getLogger().log(Level.WARNING, "Could not delete File: " + cfg.getFile().getName());
|
Slimefun.getLogger().log(Level.WARNING, "Could not delete File: " + cfg.getFile().getName());
|
||||||
@ -269,10 +272,10 @@ public class BlockStorage {
|
|||||||
|
|
||||||
if (chunkChanges > 0) {
|
if (chunkChanges > 0) {
|
||||||
File chunks = new File(path_chunks + "chunks.sfc");
|
File chunks = new File(path_chunks + "chunks.sfc");
|
||||||
Config cfg = new Config("data-storage/Slimefun/temp.yml");
|
Config cfg = new Config(path_chunks + "chunks.temp");
|
||||||
|
|
||||||
for (Map.Entry<String, String> entry: SlimefunPlugin.getUtilities().mapChunks.entrySet()) {
|
for (Map.Entry<String, BlockInfoConfig> entry: SlimefunPlugin.getUtilities().mapChunks.entrySet()) {
|
||||||
cfg.setValue(entry.getKey(), entry.getValue());
|
cfg.setValue(entry.getKey(), entry.getValue().toJSON());
|
||||||
}
|
}
|
||||||
|
|
||||||
cfg.save(chunks);
|
cfg.save(chunks);
|
||||||
@ -369,7 +372,7 @@ public class BlockStorage {
|
|||||||
|
|
||||||
private static String getJSONData(Chunk chunk) {
|
private static String getJSONData(Chunk chunk) {
|
||||||
if (chunk == null) return null;
|
if (chunk == null) return null;
|
||||||
return SlimefunPlugin.getUtilities().mapChunks.get(serializeChunk(chunk));
|
return SlimefunPlugin.getUtilities().mapChunks.get(serializeChunk(chunk)).toJSON();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
@ -422,7 +425,9 @@ public class BlockStorage {
|
|||||||
storage.storage.put(l, cfg);
|
storage.storage.put(l, cfg);
|
||||||
if (BlockMenuPreset.isInventory(cfg.getString("id"))) {
|
if (BlockMenuPreset.isInventory(cfg.getString("id"))) {
|
||||||
if (BlockMenuPreset.isUniversalInventory(cfg.getString("id"))) {
|
if (BlockMenuPreset.isUniversalInventory(cfg.getString("id"))) {
|
||||||
if (!SlimefunPlugin.getUtilities().universalInventories.containsKey(cfg.getString("id"))) storage.loadUniversalInventory(BlockMenuPreset.getPreset(cfg.getString("id")));
|
if (!SlimefunPlugin.getUtilities().universalInventories.containsKey(cfg.getString("id"))) {
|
||||||
|
storage.loadUniversalInventory(BlockMenuPreset.getPreset(cfg.getString("id")));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if (!storage.hasInventory(l)) {
|
else if (!storage.hasInventory(l)) {
|
||||||
File file = new File("data-storage/Slimefun/stored-inventories/" + serializeLocation(l) + ".sfi");
|
File file = new File("data-storage/Slimefun/stored-inventories/" + serializeLocation(l) + ".sfi");
|
||||||
@ -433,9 +438,11 @@ public class BlockStorage {
|
|||||||
}
|
}
|
||||||
refreshCache(getStorage(l.getWorld()), l, cfg.getString("id"), serializeBlockInfo(cfg), updateTicker);
|
refreshCache(getStorage(l.getWorld()), l, cfg.getString("id"), serializeBlockInfo(cfg), updateTicker);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setBlockInfo(Block b, String json, boolean updateTicker) {
|
public static void setBlockInfo(Block b, String json, boolean updateTicker) {
|
||||||
setBlockInfo(b.getLocation(), json, updateTicker);
|
setBlockInfo(b.getLocation(), json, updateTicker);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void setBlockInfo(Location l, String json, boolean updateTicker) {
|
public static void setBlockInfo(Location l, String json, boolean updateTicker) {
|
||||||
Config blockInfo = json == null ? new BlockInfoConfig() : parseBlockInfo(l, json);
|
Config blockInfo = json == null ? new BlockInfoConfig() : parseBlockInfo(l, json);
|
||||||
if (blockInfo == null) return;
|
if (blockInfo == null) return;
|
||||||
@ -666,17 +673,11 @@ public class BlockStorage {
|
|||||||
|
|
||||||
public static Config getChunkInfo(Chunk chunk) {
|
public static Config getChunkInfo(Chunk chunk) {
|
||||||
try {
|
try {
|
||||||
Config cfg = new Config("data-storage/Slimefun/temp.yml");
|
BlockInfoConfig cfg = SlimefunPlugin.getUtilities().mapChunks.get(serializeChunk(chunk));
|
||||||
if (!SlimefunPlugin.getUtilities().mapChunks.containsKey(serializeChunk(chunk))) return cfg;
|
return cfg == null ? new BlockInfoConfig() : cfg;
|
||||||
|
|
||||||
for (Map.Entry<String, String> entry: parseJSON(getJSONData(chunk)).entrySet()) {
|
|
||||||
cfg.setValue(entry.getKey(), entry.getValue());
|
|
||||||
}
|
|
||||||
|
|
||||||
return cfg;
|
|
||||||
} catch (Exception x) {
|
} catch (Exception x) {
|
||||||
Slimefun.getLogger().log(Level.SEVERE, "Failed to parse ChunkInfo for Chunk: " + (chunk == null ? "?": chunk.getX()) + ", " + (chunk == null ? "?": chunk.getZ()) + " (" + getJSONData(chunk) + ") for Slimefun " + Slimefun.getVersion(), x);
|
Slimefun.getLogger().log(Level.SEVERE, "Failed to parse ChunkInfo for Chunk: " + (chunk == null ? "?": chunk.getX()) + ", " + (chunk == null ? "?": chunk.getZ()) + " (" + getJSONData(chunk) + ") for Slimefun " + Slimefun.getVersion(), x);
|
||||||
return new Config("data-storage/Slimefun/temp.yml");
|
return new BlockInfoConfig();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -685,16 +686,14 @@ public class BlockStorage {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void setChunkInfo(Chunk chunk, String key, String value) {
|
public static void setChunkInfo(Chunk chunk, String key, String value) {
|
||||||
Config cfg = new Config("data-storage/Slimefun/temp.yml");
|
BlockInfoConfig cfg = SlimefunPlugin.getUtilities().mapChunks.get(serializeChunk(chunk));
|
||||||
if (hasChunkInfo(chunk)) cfg = getChunkInfo(chunk);
|
|
||||||
cfg.setValue(key, value);
|
|
||||||
|
|
||||||
JsonObject json = new JsonObject();
|
if (cfg == null) {
|
||||||
for (String path: cfg.getKeys()) {
|
cfg = new BlockInfoConfig();
|
||||||
json.add(path, new JsonPrimitive(cfg.getString(path)));
|
SlimefunPlugin.getUtilities().mapChunks.put(serializeChunk(chunk), cfg);
|
||||||
}
|
}
|
||||||
|
|
||||||
SlimefunPlugin.getUtilities().mapChunks.put(serializeChunk(chunk), json.toString());
|
cfg.setValue(key, value);
|
||||||
|
|
||||||
chunkChanges++;
|
chunkChanges++;
|
||||||
}
|
}
|
||||||
|
@ -185,9 +185,10 @@ public final class PlayerProfile {
|
|||||||
|
|
||||||
public String getTitle() {
|
public String getTitle() {
|
||||||
List<String> titles = SlimefunPlugin.getSettings().researchesTitles;
|
List<String> titles = SlimefunPlugin.getSettings().researchesTitles;
|
||||||
|
|
||||||
int index = Math.round(Float.valueOf(String.valueOf(Math.round(((researches.size() * 100.0F) / Research.list().size()) * 100.0F) / 100.0F)) / 100.0F) * titles.size();
|
float fraction = (float) researches.size() / Research.list().size();
|
||||||
if (index > 0) index--;
|
int index = (int) (fraction * (titles.size() -1));
|
||||||
|
|
||||||
return titles.get(index);
|
return titles.get(index);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -218,7 +219,16 @@ public final class PlayerProfile {
|
|||||||
public LinkedList<Object> getGuideHistory() {
|
public LinkedList<Object> getGuideHistory() {
|
||||||
return guideHistory;
|
return guideHistory;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* This is now deprecated, use {@link #fromUUID(UUID, Consumer)} instead
|
||||||
|
*
|
||||||
|
* @param uuid The UUID of the profile you are trying to retrieve.
|
||||||
|
* @return The PlayerProfile of this player
|
||||||
|
*
|
||||||
|
* @deprecated Use {@link #fromUUID(UUID, Consumer)}
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
public static PlayerProfile fromUUID(UUID uuid) {
|
public static PlayerProfile fromUUID(UUID uuid) {
|
||||||
PlayerProfile profile = SlimefunPlugin.getUtilities().profiles.get(uuid);
|
PlayerProfile profile = SlimefunPlugin.getUtilities().profiles.get(uuid);
|
||||||
|
|
||||||
@ -232,6 +242,22 @@ public final class PlayerProfile {
|
|||||||
|
|
||||||
return profile;
|
return profile;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean fromUUID(UUID uuid, Consumer<PlayerProfile> callback) {
|
||||||
|
PlayerProfile profile = SlimefunPlugin.getUtilities().profiles.get(uuid);
|
||||||
|
|
||||||
|
if (profile != null) {
|
||||||
|
callback.accept(profile);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
Bukkit.getScheduler().runTaskAsynchronously(SlimefunPlugin.instance, () -> {
|
||||||
|
PlayerProfile pp = new PlayerProfile(uuid);
|
||||||
|
SlimefunPlugin.getUtilities().profiles.put(uuid, pp);
|
||||||
|
callback.accept(pp);
|
||||||
|
});
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* This is now deprecated, use {@link #get(OfflinePlayer, Consumer)} instead
|
* This is now deprecated, use {@link #get(OfflinePlayer, Consumer)} instead
|
||||||
|
@ -3,11 +3,14 @@ package me.mrCookieSlime.Slimefun.api;
|
|||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Set;
|
||||||
import java.util.logging.Logger;
|
import java.util.logging.Logger;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
|
import org.bukkit.plugin.Plugin;
|
||||||
|
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
@ -328,4 +331,15 @@ public final class Slimefun {
|
|||||||
public static void runSync(Runnable r) {
|
public static void runSync(Runnable r) {
|
||||||
Bukkit.getScheduler().runTask(SlimefunPlugin.instance, r);
|
Bukkit.getScheduler().runTask(SlimefunPlugin.instance, r);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void runSync(Runnable r, long delay) {
|
||||||
|
Bukkit.getScheduler().runTaskLater(SlimefunPlugin.instance, r, delay);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Set<Plugin> getInstalledAddons() {
|
||||||
|
return Arrays.stream(SlimefunPlugin.instance.getServer().getPluginManager().getPlugins())
|
||||||
|
.filter(Plugin::isEnabled)
|
||||||
|
.filter(plugin -> plugin.getDescription().getDepend().contains("Slimefun") || plugin.getDescription().getSoftDepend().contains("Slimefun"))
|
||||||
|
.collect(Collectors.toSet());
|
||||||
|
}
|
||||||
}
|
}
|
@ -8,7 +8,6 @@ import org.bukkit.Material;
|
|||||||
import org.bukkit.inventory.ItemStack;
|
import org.bukkit.inventory.ItemStack;
|
||||||
import org.bukkit.inventory.meta.ItemMeta;
|
import org.bukkit.inventory.meta.ItemMeta;
|
||||||
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.data.PersistentDataAPI;
|
|
||||||
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
|
||||||
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
@ -56,9 +55,12 @@ public class SlimefunItemStack extends CustomItem {
|
|||||||
private void setID(String id) {
|
private void setID(String id) {
|
||||||
this.id = id;
|
this.id = id;
|
||||||
|
|
||||||
ItemMeta im = getItemMeta();
|
ItemMeta meta = getItemMeta();
|
||||||
PersistentDataAPI.setString(im, SlimefunPlugin.getItemDataKey(), id);
|
|
||||||
setItemMeta(im);
|
SlimefunPlugin.getItemDataService().setItemData(meta, id);
|
||||||
|
SlimefunPlugin.getItemTextureService().setTexture(meta, id);
|
||||||
|
|
||||||
|
setItemMeta(meta);
|
||||||
}
|
}
|
||||||
|
|
||||||
private static ItemStack getSkull(String texture) {
|
private static ItemStack getSkull(String texture) {
|
||||||
|
@ -1,11 +1,11 @@
|
|||||||
package me.mrCookieSlime.Slimefun.api;
|
package me.mrCookieSlime.Slimefun.api;
|
||||||
|
|
||||||
|
import java.text.DecimalFormat;
|
||||||
import java.util.AbstractMap;
|
import java.util.AbstractMap;
|
||||||
import java.util.Comparator;
|
import java.util.Comparator;
|
||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.LinkedHashMap;
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
@ -30,6 +30,8 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
|||||||
|
|
||||||
public class TickerTask implements Runnable {
|
public class TickerTask implements Runnable {
|
||||||
|
|
||||||
|
private static final DecimalFormat decimalFormat = new DecimalFormat("#.###");
|
||||||
|
|
||||||
private boolean halted = false;
|
private boolean halted = false;
|
||||||
|
|
||||||
protected final Map<Location, Location> move = new HashMap<>();
|
protected final Map<Location, Location> move = new HashMap<>();
|
||||||
@ -61,7 +63,7 @@ public class TickerTask implements Runnable {
|
|||||||
if (running) return;
|
if (running) return;
|
||||||
|
|
||||||
running = true;
|
running = true;
|
||||||
long timestamp = System.currentTimeMillis();
|
long timestamp = System.nanoTime();
|
||||||
|
|
||||||
skipped = 0;
|
skipped = 0;
|
||||||
chunks = 0;
|
chunks = 0;
|
||||||
@ -86,7 +88,7 @@ public class TickerTask implements Runnable {
|
|||||||
|
|
||||||
if (!halted) {
|
if (!halted) {
|
||||||
for (final String c: BlockStorage.getTickingChunks()) {
|
for (final String c: BlockStorage.getTickingChunks()) {
|
||||||
long timestamp2 = System.currentTimeMillis();
|
long timestamp2 = System.nanoTime();
|
||||||
chunks++;
|
chunks++;
|
||||||
|
|
||||||
for (final Location l: BlockStorage.getTickingLocations(c)) {
|
for (final Location l: BlockStorage.getTickingLocations(c)) {
|
||||||
@ -103,17 +105,17 @@ public class TickerTask implements Runnable {
|
|||||||
if (item.getBlockTicker().isSynchronized()) {
|
if (item.getBlockTicker().isSynchronized()) {
|
||||||
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunPlugin.instance, () -> {
|
||||||
try {
|
try {
|
||||||
long timestamp3 = System.currentTimeMillis();
|
long timestamp3 = System.nanoTime();
|
||||||
item.getBlockTicker().tick(b, item, BlockStorage.getLocationInfo(l));
|
item.getBlockTicker().tick(b, item, BlockStorage.getLocationInfo(l));
|
||||||
|
|
||||||
Long machinetime = machineTimings.get(item.getID());
|
Long machinetime = machineTimings.get(item.getID());
|
||||||
Integer chunk = chunkItemCount.get(c);
|
Integer chunk = chunkItemCount.get(c);
|
||||||
Integer machine = machineCount.get(item.getID());
|
Integer machine = machineCount.get(item.getID());
|
||||||
|
|
||||||
machineTimings.put(item.getID(), (machinetime != null ? machinetime: 0) + (System.currentTimeMillis() - timestamp3));
|
machineTimings.put(item.getID(), (machinetime != null ? machinetime: 0) + (System.nanoTime() - timestamp3));
|
||||||
chunkItemCount.put(c, (chunk != null ? chunk: 0) + 1);
|
chunkItemCount.put(c, (chunk != null ? chunk: 0) + 1);
|
||||||
machineCount.put(item.getID(), (machine != null ? machine: 0) + 1);
|
machineCount.put(item.getID(), (machine != null ? machine: 0) + 1);
|
||||||
blockTimings.put(l, System.currentTimeMillis() - timestamp3);
|
blockTimings.put(l, System.nanoTime() - timestamp3);
|
||||||
} catch (Exception x) {
|
} catch (Exception x) {
|
||||||
int errors = bugged.getOrDefault(l, 0);
|
int errors = bugged.getOrDefault(l, 0);
|
||||||
reportErrors(l, item, x, errors);
|
reportErrors(l, item, x, errors);
|
||||||
@ -121,13 +123,13 @@ public class TickerTask implements Runnable {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
long timestamp3 = System.currentTimeMillis();
|
long timestamp3 = System.nanoTime();
|
||||||
item.getBlockTicker().tick(b, item, BlockStorage.getLocationInfo(l));
|
item.getBlockTicker().tick(b, item, BlockStorage.getLocationInfo(l));
|
||||||
|
|
||||||
machineTimings.merge(item.getID(), (System.currentTimeMillis() - timestamp3), Long::sum);
|
machineTimings.merge(item.getID(), (System.nanoTime() - timestamp3), Long::sum);
|
||||||
chunkItemCount.merge(c, 1, Integer::sum);
|
chunkItemCount.merge(c, 1, Integer::sum);
|
||||||
machineCount.merge(item.getID(), 1, Integer::sum);
|
machineCount.merge(item.getID(), 1, Integer::sum);
|
||||||
blockTimings.put(l, System.currentTimeMillis() - timestamp3);
|
blockTimings.put(l, System.nanoTime() - timestamp3);
|
||||||
}
|
}
|
||||||
tickers.add(item.getBlockTicker());
|
tickers.add(item.getBlockTicker());
|
||||||
} catch (Exception x) {
|
} catch (Exception x) {
|
||||||
@ -145,7 +147,7 @@ public class TickerTask implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
chunkTimings.put(c, System.currentTimeMillis() - timestamp2);
|
chunkTimings.put(c, System.nanoTime() - timestamp2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,7 +162,7 @@ public class TickerTask implements Runnable {
|
|||||||
iterator.remove();
|
iterator.remove();
|
||||||
}
|
}
|
||||||
|
|
||||||
time = System.currentTimeMillis() - timestamp;
|
time = System.nanoTime() - timestamp;
|
||||||
running = false;
|
running = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -188,15 +190,15 @@ public class TickerTask implements Runnable {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getTime() {
|
public String getTime() {
|
||||||
return time;
|
return toMillis(time);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void info(CommandSender sender) {
|
public void info(CommandSender sender) {
|
||||||
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&2== &aSlimefun Diagnostic Tool &2=="));
|
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&2== &aSlimefun Diagnostic Tool &2=="));
|
||||||
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Halted: &e&l" + String.valueOf(halted).toUpperCase()));
|
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Halted: &e&l" + String.valueOf(halted).toUpperCase()));
|
||||||
sender.sendMessage("");
|
sender.sendMessage("");
|
||||||
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Impact: &e" + time + "ms / 50-750ms"));
|
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Impact: &e" + toMillis(time)));
|
||||||
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Ticked Chunks: &e" + chunks));
|
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Ticked Chunks: &e" + chunks));
|
||||||
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Ticked Machines: &e" + machines));
|
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Ticked Machines: &e" + machines));
|
||||||
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Skipped Machines: &e" + skipped));
|
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&6Skipped Machines: &e" + skipped));
|
||||||
@ -216,10 +218,10 @@ public class TickerTask implements Runnable {
|
|||||||
|
|
||||||
for (Map.Entry<String, Long> entry : timings) {
|
for (Map.Entry<String, Long> entry : timings) {
|
||||||
int count = machineCount.get(entry.getKey());
|
int count = machineCount.get(entry.getKey());
|
||||||
if (entry.getValue() > 0)
|
if (entry.getValue() > 500_000)
|
||||||
hover.append("\n&c").append(entry.getKey()).append(" - ")
|
hover.append("\n&c").append(entry.getKey()).append(" - ")
|
||||||
.append(count).append("x &7(").append(entry.getValue()).append("ms, ")
|
.append(count).append("x &7(").append(toMillis(entry.getValue())).append(", ")
|
||||||
.append(entry.getValue() / count).append("ms avg/machine)");
|
.append(toMillis(entry.getValue() / count)).append(" avg/machine)");
|
||||||
else
|
else
|
||||||
hidden++;
|
hidden++;
|
||||||
}
|
}
|
||||||
@ -238,11 +240,10 @@ public class TickerTask implements Runnable {
|
|||||||
|
|
||||||
for (Map.Entry<String, Long> entry: timings) {
|
for (Map.Entry<String, Long> entry: timings) {
|
||||||
int count = machineCount.get(entry.getKey());
|
int count = machineCount.get(entry.getKey());
|
||||||
if (entry.getValue() > 0)
|
if (entry.getValue() > 500_000) {
|
||||||
sender.sendMessage(ChatColors.color(" &e" + entry.getKey() + " - " + count + "x &7(" + entry.getValue() + "ms"
|
sender.sendMessage(ChatColors.color(" &e" + entry.getKey() + " - " + count + "x &7(" + toMillis(entry.getValue()) + ", " + toMillis(entry.getValue() / count) + " avg/machine)"));
|
||||||
+ ", " + (entry.getValue() / count) + "ms avg/machine)"));
|
}
|
||||||
else
|
else hidden++;
|
||||||
hidden++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c+ &4" + hidden + " Hidden"));
|
sender.sendMessage(ChatColor.translateAlternateColorCodes('&', "&c+ &4" + hidden + " Hidden"));
|
||||||
@ -266,7 +267,7 @@ public class TickerTask implements Runnable {
|
|||||||
if (entry.getValue() > 0)
|
if (entry.getValue() > 0)
|
||||||
hover.append("\n&c").append(entry.getKey().replace("CraftChunk", "")).append(" - ")
|
hover.append("\n&c").append(entry.getKey().replace("CraftChunk", "")).append(" - ")
|
||||||
.append(chunkItemCount.getOrDefault(entry.getKey(), 0))
|
.append(chunkItemCount.getOrDefault(entry.getKey(), 0))
|
||||||
.append("x &7(").append(entry.getValue()).append("ms)");
|
.append("x &7(").append(toMillis(entry.getValue())).append(")");
|
||||||
else
|
else
|
||||||
hidden++;
|
hidden++;
|
||||||
}
|
}
|
||||||
@ -286,7 +287,7 @@ public class TickerTask implements Runnable {
|
|||||||
for (Map.Entry<String, Long> entry: timings) {
|
for (Map.Entry<String, Long> entry: timings) {
|
||||||
if (!chunksSkipped.contains(entry.getKey())) {
|
if (!chunksSkipped.contains(entry.getKey())) {
|
||||||
if (entry.getValue() > 0) sender.sendMessage(" &c" + entry.getKey().replace("CraftChunk", "") + " - "
|
if (entry.getValue() > 0) sender.sendMessage(" &c" + entry.getKey().replace("CraftChunk", "") + " - "
|
||||||
+ (chunkItemCount.getOrDefault(entry.getKey(), 0)) + "x &7(" + entry.getValue() + "ms)");
|
+ (chunkItemCount.getOrDefault(entry.getKey(), 0)) + "x &7(" + toMillis(entry.getValue()) + ")");
|
||||||
else hidden++;
|
else hidden++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -317,6 +318,10 @@ public class TickerTask implements Runnable {
|
|||||||
public void halt() {
|
public void halt() {
|
||||||
halted = true;
|
halted = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String toMillis(long time) {
|
||||||
|
return decimalFormat.format(time / 1000000F) + "ms";
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String toString() {
|
public String toString() {
|
||||||
|
@ -16,7 +16,7 @@ public final class ItemEnergy {
|
|||||||
// "&c&o&8\u21E8 &e\u26A1 &70 / 50 J"
|
// "&c&o&8\u21E8 &e\u26A1 &70 / 50 J"
|
||||||
|
|
||||||
public static float getStoredEnergy(ItemStack item) {
|
public static float getStoredEnergy(ItemStack item) {
|
||||||
if (item == null || item.getType() == null || item.getType() == Material.AIR) return 0F;
|
if (item == null || item.getType() == Material.AIR || item.getAmount() < 1) return 0F;
|
||||||
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F;
|
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F;
|
||||||
|
|
||||||
for (String line: item.getItemMeta().getLore()) {
|
for (String line: item.getItemMeta().getLore()) {
|
||||||
@ -29,7 +29,7 @@ public final class ItemEnergy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static float getMaxEnergy(ItemStack item) {
|
public static float getMaxEnergy(ItemStack item) {
|
||||||
if (item == null || item.getType() == null || item.getType() == Material.AIR) return 0F;
|
if (item == null || item.getType() == Material.AIR || item.getAmount() < 1) return 0F;
|
||||||
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F;
|
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F;
|
||||||
|
|
||||||
for (String line: item.getItemMeta().getLore()) {
|
for (String line: item.getItemMeta().getLore()) {
|
||||||
@ -42,7 +42,7 @@ public final class ItemEnergy {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static float addStoredEnergy(ItemStack item, float energy) {
|
public static float addStoredEnergy(ItemStack item, float energy) {
|
||||||
if (item == null || item.getType() == null || item.getType() == Material.AIR) return 0F;
|
if (item == null || item.getType() == Material.AIR || item.getAmount() < 1) return 0F;
|
||||||
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F;
|
if (!item.hasItemMeta() || !item.getItemMeta().hasLore()) return 0F;
|
||||||
|
|
||||||
float rest = 0F;
|
float rest = 0F;
|
||||||
|
@ -25,7 +25,7 @@ public class PlayerAutoSaver implements Runnable {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (players > 0) {
|
if (players > 0) {
|
||||||
Slimefun.getLogger().log(Level.INFO, "Auto-Saved Player Data for " + players + " Player(s)!");
|
Slimefun.getLogger().log(Level.INFO, "Auto-Saved Player Data for {0} Player(s)!", players);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -5,9 +5,9 @@ import org.bukkit.entity.Player;
|
|||||||
|
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunGuide;
|
import me.mrCookieSlime.Slimefun.SlimefunGuide;
|
||||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||||
import me.mrCookieSlime.Slimefun.api.SlimefunGuideLayout;
|
|
||||||
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
|
import me.mrCookieSlime.Slimefun.commands.SlimefunCommand;
|
||||||
import me.mrCookieSlime.Slimefun.commands.SubCommand;
|
import me.mrCookieSlime.Slimefun.commands.SubCommand;
|
||||||
|
import me.mrCookieSlime.Slimefun.guides.SlimefunGuideLayout;
|
||||||
|
|
||||||
public class GuideCommand extends SubCommand {
|
public class GuideCommand extends SubCommand {
|
||||||
|
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user