1
mirror of https://github.com/StarWishsama/Slimefun4.git synced 2024-09-20 03:35:51 +00:00

Merge pull request #877 from SoSeDiK/lambda

Use lambda expressions
This commit is contained in:
TheBusyBiscuit 2019-04-07 11:44:42 +02:00 committed by GitHub
commit 33073a4100
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
38 changed files with 1499 additions and 2565 deletions

View File

@ -41,12 +41,9 @@ import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
import me.mrCookieSlime.CSCoreLibPlugin.general.Block.TreeCalculator;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuOpeningHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper.ChatHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
import me.mrCookieSlime.ExoticGarden.ExoticGarden;
@ -161,42 +158,30 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
public void newInstance(BlockMenu menu, final Block b) {
try {
menu.replaceExistingItem(15, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZTAxYzdiNTcyNjE3ODk3NGIzYjNhMDFiNDJhNTkwZTU0MzY2MDI2ZmQ0MzgwOGYyYTc4NzY0ODg0M2E3ZjVhIn19fQ=="), "&aStart/Continue"));
menu.addMenuClickHandler(15, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
Messages.local.sendTranslation(p, "robot.started", true);
BlockStorage.addBlockInfo(b, "paused", "false");
p.closeInventory();
return false;
}
menu.addMenuClickHandler(15, (p, slot, item, action) -> {
Messages.local.sendTranslation(p, "robot.started", true);
BlockStorage.addBlockInfo(b, "paused", "false");
p.closeInventory();
return false;
});
menu.replaceExistingItem(17, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYxMzlmZDFjNTY1NGU1NmU5ZTRlMmM4YmU3ZWIyYmQ1YjQ5OWQ2MzM2MTY2NjNmZWVlOTliNzQzNTJhZDY0In19fQ=="), "&4Pause"));
menu.addMenuClickHandler(17, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "paused", "true");
Messages.local.sendTranslation(p, "robot.stopped", true);
return false;
}
menu.addMenuClickHandler(17, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "paused", "true");
Messages.local.sendTranslation(p, "robot.stopped", true);
return false;
});
menu.replaceExistingItem(16, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&bMemory Core", "", "&8\u21E8 &7Click to open the Script Editor"));
menu.addMenuClickHandler(16, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
try {
BlockStorage.addBlockInfo(b, "paused", "true");
Messages.local.sendTranslation(p, "robot.stopped", true);
openScriptEditor(p, b);
} catch (Exception e) {
e.printStackTrace();
}
return false;
menu.addMenuClickHandler(16, (p, slot, item, action) -> {
try {
BlockStorage.addBlockInfo(b, "paused", "true");
Messages.local.sendTranslation(p, "robot.stopped", true);
openScriptEditor(p, b);
} catch (Exception e) {
e.printStackTrace();
}
return false;
});
} catch (Exception e) {
e.printStackTrace();
@ -485,7 +470,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
break;
}
case ATTACK_MOBS_ANIMALS: {
double damage = getTier() < 2 ? 20D: 4D * getTier();
double damage = getTier() < 2 ? 20D : 4D * getTier();
entities:
for (Entity n: AndroidStatusHologram.getNearbyEntities(b, 4D + getTier())) {
@ -537,7 +522,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
break;
}
case ATTACK_MOBS: {
double damage = getTier() < 2 ? 20D: 4D * getTier();
double damage = getTier() < 2 ? 20D : 4D * getTier();
entities:
for (Entity n: AndroidStatusHologram.getNearbyEntities(b, 4D + getTier())) {
@ -591,7 +576,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
}
case ATTACK_ANIMALS: {
double damage = getTier() < 2 ? 20D: 4D * getTier();
double damage = getTier() < 2 ? 20D : 4D * getTier();
entities:
for (Entity n: AndroidStatusHologram.getNearbyEntities(b, 4D + getTier())) {
@ -645,7 +630,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
}
case ATTACK_ANIMALS_ADULT: {
double damage = getTier() < 2 ? 20D: 4D * getTier();
double damage = getTier() < 2 ? 20D : 4D * getTier();
entities:
for (Entity n: AndroidStatusHologram.getNearbyEntities(b, 4D + getTier())) {
@ -805,7 +790,6 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
private void farm(Block b, Block block) {
switch (block.getType()) {
case WHEAT: {
if (isFullGrown(block)) {
ItemStack drop = new ItemStack(Material.WHEAT, CSCoreLib.randomizer().nextInt(3) + 1);
if (fits(b, drop)) {
@ -900,30 +884,18 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
}
private void constructMenu(BlockMenuPreset preset) throws Exception {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_out) {
for (int i : border_out) {
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: getOutputSlots()) {
for (int i : getOutputSlots()) {
preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() {
@Override
@ -940,33 +912,18 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
if (getTier() == 1) {
preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on solid Fuel", "&re.g. Coal, Wood, etc..."),
new MenuClickHandler() {
@Override
public boolean onClick(Player p, int slot, ItemStack stack, ClickAction action) {
return false;
}
});
(p, slot, item, action) -> false
);
}
else if (getTier() == 2){
preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on liquid Fuel", "&re.g. Lava, Oil, Fuel, etc..."),
new MenuClickHandler() {
@Override
public boolean onClick(Player p, int slot, ItemStack stack, ClickAction action) {
return false;
}
});
(p, slot, item, action) -> false
);
}
else {
preset.addItem(34, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&8\u21E9 &cFuel Input &8\u21E9", "", "&rThis Android runs on radioactive Fuel", "&re.g. Uranium, Neptunium or Boosted Uranium"),
new MenuClickHandler() {
@Override
public boolean onClick(Player p, int slot, ItemStack stack, ClickAction action) {
return false;
}
});
(p, slot, item, action) -> false
);
}
}
@ -974,46 +931,37 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
ChestMenu menu = new ChestMenu("&eScript Editor");
menu.addItem(2, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDliZjZkYjRhZWRhOWQ4ODIyYjlmNzM2NTM4ZThjMThiOWE0ODQ0Zjg0ZWI0NTUwNGFkZmJmZWU4N2ViIn19fQ=="), "&2> Edit Script", "", "&aEdits your current Script"),
new MenuClickHandler() {
@Override
public boolean onClick(Player p, int slot, ItemStack stack, ClickAction action) {
(pl, slot, item, action) -> {
try {
openScript(p, b, BlockStorage.getLocationInfo(b.getLocation(), "script"));
openScript(pl, b, BlockStorage.getLocationInfo(b.getLocation(), "script"));
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
});
);
menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxZDg5NzljMTg3OGEwNTk4N2E3ZmFmMjFiNTZkMWI3NDRmOWQwNjhjNzRjZmZjZGUxZWExZWRhZDU4NTIifX19"), "&4> Create new Script", "", "&cDeletes your current Script", "&cand creates a blank one"),
new MenuClickHandler() {
@Override
public boolean onClick(Player p, int slot, ItemStack stack, ClickAction action) {
(pl, slot, item, action) -> {
try {
openScript(p, b, "START-TURN_LEFT-REPEAT");
openScript(pl, b, "START-TURN_LEFT-REPEAT");
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
});
);
menu.addItem(6, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzAxNTg2ZTM5ZjZmZmE2M2I0ZmIzMDFiNjVjYTdkYThhOTJmNzM1M2FhYWI4OWQzODg2NTc5MTI1ZGZiYWY5In19fQ=="), "&6> Download a Script", "", "&eDownload a Script from the Server", "&eYou can edit or simply use it"),
new MenuClickHandler() {
@Override
public boolean onClick(Player p, int slot, ItemStack stack, ClickAction action) {
(pl, slot, item, action) -> {
try {
openScriptDownloader(p, b, 1);
openScriptDownloader(pl, b, 1);
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
});
);
menu.open(p);
}
@ -1023,13 +971,9 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
final String[] commands = script.split("-");
menu.addItem(0, ScriptPart.START.toItemStack());
menu.addMenuClickHandler(0, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(0,
(pl, slot, item, action) -> false
);
for (int i = 1; i < commands.length; i++) {
final int index = i;
@ -1038,84 +982,72 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
if (additional == 1) {
menu.addItem(i, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTcxZDg5NzljMTg3OGEwNTk4N2E3ZmFmMjFiNTZkMWI3NDRmOWQwNjhjNzRjZmZjZGUxZWExZWRhZDU4NTIifX19"), "&7> Add new Command"));
menu.addMenuClickHandler(i, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
try {
openScriptComponentEditor(p, b, script, index);
} catch (Exception e) {
e.printStackTrace();
}
return false;
menu.addMenuClickHandler(i, (pl, slot, item, action) -> {
try {
openScriptComponentEditor(pl, b, script, index);
} catch (Exception e) {
e.printStackTrace();
}
return false;
});
}
menu.addItem(i + additional, ScriptPart.REPEAT.toItemStack());
menu.addMenuClickHandler(i + additional, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(i + additional,
(pl, slot, item, action) -> false
);
}
else {
ItemStack stack = ScriptPart.valueOf(commands[i]).toItemStack();
menu.addItem(i, new CustomItem(stack, stack.getItemMeta().getDisplayName(), "", "&7\u21E8 &eLeft Click &7to edit", "&7\u21E8 &eRight Click &7to delete", "&7\u21E8 &eShift + Right Click &7to duplicate"));
menu.addMenuClickHandler(i, new MenuClickHandler() {
menu.addMenuClickHandler(i, (pl, slot, item, action) -> {
if (action.isRightClicked() && action.isShiftClicked()) {
if (commands.length == 54) return false;
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction action) {
if (action.isRightClicked() && action.isShiftClicked()) {
if (commands.length == 54) return false;
int i = 0;
StringBuilder builder = new StringBuilder("START-");
for (String command: commands) {
if (i > 0) {
if (i == index) {
builder.append(commands[i] + "-");
builder.append(commands[i] + "-");
}
else if (i < commands.length - 1) builder.append(command + "-");
int j = 0;
StringBuilder builder = new StringBuilder("START-");
for (String command : commands) {
if (j > 0) {
if (j == index) {
builder.append(commands[j] + "-");
builder.append(commands[j] + "-");
}
i++;
else if (j < commands.length - 1) builder.append(command + "-");
}
builder.append("REPEAT");
BlockStorage.addBlockInfo(b, "script", builder.toString());
j++;
}
builder.append("REPEAT");
BlockStorage.addBlockInfo(b, "script", builder.toString());
try {
openScript(p, b, builder.toString());
} catch (Exception e) {
e.printStackTrace();
}
try {
openScript(pl, b, builder.toString());
} catch (Exception e) {
e.printStackTrace();
}
else if (action.isRightClicked()) {
int i = 0;
StringBuilder builder = new StringBuilder("START-");
for (String command: commands) {
if (i != index && i > 0 && i < commands.length - 1) builder.append(command + "-");
i++;
}
builder.append("REPEAT");
BlockStorage.addBlockInfo(b, "script", builder.toString());
try {
openScript(p, b, builder.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
else {
try {
openScriptComponentEditor(p, b, script, index);
} catch (Exception e) {
e.printStackTrace();
}
}
return false;
}
else if (action.isRightClicked()) {
int j = 0;
StringBuilder builder = new StringBuilder("START-");
for (String command : commands) {
if (j != index && j > 0 && j < commands.length - 1) builder.append(command + "-");
j++;
}
builder.append("REPEAT");
BlockStorage.addBlockInfo(b, "script", builder.toString());
try {
openScript(pl, b, builder.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
else {
try {
openScriptComponentEditor(pl, b, script, index);
} catch (Exception e) {
e.printStackTrace();
}
}
return false;
});
}
}
@ -1126,13 +1058,9 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
private void openScriptDownloader(final Player p, final Block b, final int page) throws Exception {
final ChestMenu menu = new ChestMenu("Slimefun Guide");
menu.addMenuOpeningHandler(new MenuOpeningHandler() {
@Override
public void onOpen(Player p) {
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_HAT, 0.7F, 0.7F);
}
});
menu.addMenuOpeningHandler(
(pl) -> pl.playSound(pl.getLocation(), Sound.BLOCK_NOTE_BLOCK_HAT, 0.7F, 0.7F)
);
List<Config> scripts = getUploadedScripts();
@ -1141,100 +1069,80 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
for (int i = 45; i < 54; i++) {
menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "));
menu.addMenuClickHandler(i, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(i,
(pl, slot, item, action) -> false
);
}
menu.addItem(46, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), "&r\u21E6 Previous Page", "", "&7(" + page + " / " + pages + ")"));
menu.addMenuClickHandler(46, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
int next = page - 1;
if (next < 1) next = pages;
if (next != page) {
try {
openScriptDownloader(p, b, next);
} catch (Exception e) {
e.printStackTrace();
}
menu.addMenuClickHandler(46, (pl, slot, item, action) -> {
int next = page - 1;
if (next < 1) next = pages;
if (next != page) {
try {
openScriptDownloader(pl, b, next);
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
return false;
});
menu.addItem(49, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTA1YTJjYWI4YjY4ZWE1N2UzYWY5OTJhMzZlNDdjOGZmOWFhODdjYzg3NzYyODE5NjZmOGMzY2YzMWEzOCJ9fX0="), "&eUpload a Script", "", "&6Click &7to upload your Android's Script", "&7to the Database"));
menu.addMenuClickHandler(49, new MenuClickHandler() {
menu.addMenuClickHandler(49, (pl, slot, item, action) -> {
final String code = BlockStorage.getLocationInfo(b.getLocation(), "script");
int num = 1;
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
final String code = BlockStorage.getLocationInfo(b.getLocation(), "script");
int num = 1;
for (Config script: getUploadedScripts()) {
if (script.getString("author").equals(pl.getUniqueId().toString())) num++;
if (script.getString("code").equals(code)) {
Messages.local.sendTranslation(pl, "android.scripts.already-uploaded", true);
return false;
}
}
for (Config script: getUploadedScripts()) {
if (script.getString("author").equals(p.getUniqueId().toString())) num++;
if (script.getString("code").equals(code)) {
Messages.local.sendTranslation(p, "android.scripts.already-uploaded", true);
return false;
}
final int id = num;
pl.closeInventory();
Messages.local.sendTranslation(pl, "android.scripts.enter-name", true);
MenuHelper.awaitChatInput(pl, (player, message) -> {
Config script = new Config("plugins/Slimefun/scripts/" + getAndroidType().toString() + "/" + p.getName() + " " + id + ".sfs");
script.setValue("author", player.getUniqueId().toString());
script.setValue("author_name", player.getName());
script.setValue("name", ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', message)));
script.setValue("code", code);
script.setValue("downloads", 0);
script.setValue("android", getAndroidType().toString());
script.setValue("rating.positive", new ArrayList<String>());
script.setValue("rating.negative", new ArrayList<String>());
script.save();
try {
Messages.local.sendTranslation(player, "android.uploaded", true);
openScriptDownloader(player, b, page);
} catch (Exception e) {
e.printStackTrace();
}
final int id = num;
p.closeInventory();
Messages.local.sendTranslation(p, "android.scripts.enter-name", true);
MenuHelper.awaitChatInput(p, new ChatHandler() {
@Override
public boolean onChat(Player p, String message) {
Config script = new Config("plugins/Slimefun/scripts/" + getAndroidType().toString() + "/" + p.getName() + " " + id + ".sfs");
script.setValue("author", p.getUniqueId().toString());
script.setValue("author_name", p.getName());
script.setValue("name", ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', message)));
script.setValue("code", code);
script.setValue("downloads", 0);
script.setValue("android", getAndroidType().toString());
script.setValue("rating.positive", new ArrayList<String>());
script.setValue("rating.negative", new ArrayList<String>());
script.save();
try {
Messages.local.sendTranslation(p, "android.uploaded", true);
openScriptDownloader(p, b, page);
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
});
return false;
}
});
return false;
});
menu.addItem(52, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), "&rNext Page \u21E8", "", "&7(" + page + " / " + pages + ")"));
menu.addMenuClickHandler(52, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
int next = page + 1;
if (next > pages) next = 1;
if (next != page) {
try {
openScriptDownloader(p, b, next);
} catch (Exception e) {
e.printStackTrace();
}
menu.addMenuClickHandler(52, (pl, slot, item, action) -> {
int next = page + 1;
if (next > pages) next = 1;
if (next != page) {
try {
openScriptDownloader(pl, b, next);
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
return false;
});
int category_index = 45 * (page - 1);
@ -1254,66 +1162,62 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
menu.addItem(index, new CustomItem(this.getItem(), "&b" + script.getString("name"), "&7by &r" + author, "", "&7Downloads: &r" + script.getInt("downloads"), "&7Rating: " + getScriptRatingPercentage(script), "&a" + getScriptRating(script, true) + " \u263A &7- &4\u2639 " + getScriptRating(script, false), "", "&eLeft Click &rto download this Script", "&4(This will override your current Script)", "&eShift + Left Click &rto leave a positive Rating", "&eShift + Right Click &rto leave a negative Rating"));
}
menu.addMenuClickHandler(index, new MenuClickHandler() {
menu.addMenuClickHandler(index, (pl, slot, item, action) -> {
Config script2 = new Config(script.getFile());
@Override
public boolean onClick(Player p, int slot, ItemStack stack, ClickAction action) {
Config script2 = new Config(script.getFile());
if (action.isShiftClicked()) {
if (script2.getString("author").equals(pl.getUniqueId().toString())) {
Messages.local.sendTranslation(pl, "android.scripts.rating.own", true);
}
else if (action.isRightClicked()) {
if (!script2.getStringList("rating.negative").contains(pl.getUniqueId().toString()) && !script2.getStringList("rating.positive").contains(pl.getUniqueId().toString())) {
List<String> list = script2.getStringList("rating.negative");
list.add(p.getUniqueId().toString());
if (action.isShiftClicked()) {
if (script2.getString("author").equals(p.getUniqueId().toString())) {
Messages.local.sendTranslation(p, "android.scripts.rating.own", true);
}
else if (action.isRightClicked()) {
if (!script2.getStringList("rating.negative").contains(p.getUniqueId().toString()) && !script2.getStringList("rating.positive").contains(p.getUniqueId().toString())) {
List<String> list = script2.getStringList("rating.negative");
list.add(p.getUniqueId().toString());
script2.setValue("rating.negative", list);
script2.save();
script2.setValue("rating.negative", list);
script2.save();
try {
openScriptDownloader(p, b, page);
} catch (Exception e) {
e.printStackTrace();
}
}
else {
Messages.local.sendTranslation(p, "android.scripts.rating.already", true);
try {
openScriptDownloader(pl, b, page);
} catch (Exception e) {
e.printStackTrace();
}
}
else {
if (!script2.getStringList("rating.negative").contains(p.getUniqueId().toString()) && !script2.getStringList("rating.positive").contains(p.getUniqueId().toString())) {
List<String> list = script2.getStringList("rating.positive");
list.add(p.getUniqueId().toString());
script2.setValue("rating.positive", list);
script2.save();
try {
openScriptDownloader(p, b, page);
} catch (Exception e) {
e.printStackTrace();
}
}
else {
Messages.local.sendTranslation(p, "android.scripts.rating.already", true);
}
Messages.local.sendTranslation(pl, "android.scripts.rating.already", true);
}
}
else if (!action.isRightClicked()) {
try {
script2.setValue("downloads", script2.getInt("downloads") + 1);
else {
if (!script2.getStringList("rating.negative").contains(pl.getUniqueId().toString()) && !script2.getStringList("rating.positive").contains(pl.getUniqueId().toString())) {
List<String> list = script2.getStringList("rating.positive");
list.add(pl.getUniqueId().toString());
script2.setValue("rating.positive", list);
script2.save();
BlockStorage.addBlockInfo(b, "script", script2.getString("code"));
openScriptEditor(p, b);
} catch (Exception e) {
e.printStackTrace();
try {
openScriptDownloader(pl, b, page);
} catch (Exception e) {
e.printStackTrace();
}
}
else {
Messages.local.sendTranslation(pl, "android.scripts.rating.already", true);
}
}
return false;
}
else if (!action.isRightClicked()) {
try {
script2.setValue("downloads", script2.getInt("downloads") + 1);
script2.save();
BlockStorage.addBlockInfo(b, "script", script2.getString("code"));
openScriptEditor(pl, b);
} catch (Exception e) {
e.printStackTrace();
}
}
return false;
});
index++;
@ -1351,24 +1255,15 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
for (int i = 0; i < 9; i++) {
menu.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(pl, slot, item, action) -> false
);
}
menu.addItem(9, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMTYxMzlmZDFjNTY1NGU1NmU5ZTRlMmM4YmU3ZWIyYmQ1YjQ5OWQ2MzM2MTY2NjNmZWVlOTliNzQzNTJhZDY0In19fQ=="), "&rDo nothing"),
new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
(pl, slot, item, action) -> {
int i = 0;
StringBuilder builder = new StringBuilder("START-");
for (String command: commands) {
for (String command : commands) {
if (i != index && i > 0 && i < commands.length - 1) builder.append(command + "-");
i++;
}
@ -1381,36 +1276,33 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
}
return false;
}
});
);
int i = 10;
for (final ScriptPart part: getAccessibleScriptParts()) {
for (final ScriptPart part : getAccessibleScriptParts()) {
menu.addItem(i, part.toItemStack(),
new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
int i = 0;
StringBuilder builder = new StringBuilder("START-");
for (String command: commands) {
if (i > 0) {
if (i == index) builder.append(part.toString() + "-");
else if (i < commands.length - 1) builder.append(command + "-");
}
i++;
}
builder.append("REPEAT");
BlockStorage.addBlockInfo(b, "script", builder.toString());
try {
openScript(p, b, builder.toString());
} catch (Exception e) {
e.printStackTrace();
}
return false;
(pl, slot, item, action) -> {
int j = 0;
StringBuilder builder = new StringBuilder("START-");
for (String command : commands) {
if (j > 0) {
if (j == index) builder.append(part.toString() + "-");
else if (j < commands.length - 1) builder.append(command + "-");
}
});
i++;
j++;
}
builder.append("REPEAT");
BlockStorage.addBlockInfo(b, "script", builder.toString());
try {
openScript(pl, b, builder.toString());
} catch (Exception e) {
e.printStackTrace();
}
return false;
}
);
i++;
}
menu.open(p);
@ -1436,7 +1328,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
Inventory inv = inject(b);
inv.addItem(items);
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot));
}
}
@ -1477,7 +1369,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
File directory = new File("plugins/Slimefun/scripts/" + this.getAndroidType().toString());
if (!directory.exists()) directory.mkdirs();
for (File script: directory.listFiles()) {
for (File script : directory.listFiles()) {
if (script.getName().endsWith("sfs")) scripts.add(new Config(script));
}
@ -1485,7 +1377,7 @@ public abstract class ProgrammableAndroid extends SlimefunItem {
File directory2 = new File("plugins/Slimefun/scripts/NONE");
if (!directory2.exists()) directory2.mkdirs();
for (File script: directory2.listFiles()) {
for (File script : directory2.listFiles()) {
if (script.getName().endsWith("sfs")) scripts.add(new Config(script));
}
}

View File

@ -47,12 +47,8 @@ public class CSCoreLibLoader {
System.err.println(" ");
System.err.println("#################### - INFO - ####################");
System.err.println(" ");
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
@Override
public void run() {
if (connect()) install();
}
plugin.getServer().getScheduler().scheduleSyncDelayedTask(plugin, () -> {
if (connect()) install();
}, 10L);
return false;
}

View File

@ -13,11 +13,8 @@ import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage;
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage.HoverAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.CustomBookOverlay;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper.ChatHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Setup.Messages;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
@ -30,34 +27,26 @@ public class Elevator {
ChestMenu menu = new ChestMenu("Elevator Settings");
menu.addItem(4, new CustomItem(new ItemStack(Material.NAME_TAG), "&7Floor Name &e(Click to edit)", "", "&r" + ChatColor.translateAlternateColorCodes('&', BlockStorage.getLocationInfo(b.getLocation(), "floor"))));
menu.addMenuClickHandler(4, new MenuClickHandler() {
menu.addMenuClickHandler(4, (pl, slot, item, action) -> {
pl.closeInventory();
pl.sendMessage("");
pl.sendMessage(ChatColor.translateAlternateColorCodes('&', "&4&l>> &ePlease enter a Name for this Floor in your Chat!"));
pl.sendMessage(ChatColor.translateAlternateColorCodes('&', "&4&l>> &e(Chat Colors are supported!"));
pl.sendMessage("");
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
p.closeInventory();
p.sendMessage("");
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&4&l>> &ePlease enter a Name for this Floor in your Chat!"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&4&l>> &e(Chat Colors are supported!"));
p.sendMessage("");
MenuHelper.awaitChatInput(pl, (player, message) -> {
BlockStorage.addBlockInfo(b, "floor", message.replaceAll("&", "&"));
player.sendMessage("");
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&4&l>> &eSuccessfully named this Floor:"));
player.sendMessage(ChatColor.translateAlternateColorCodes('&', "&4&l>> &r" + ChatColor.translateAlternateColorCodes('&', message)));
player.sendMessage("");
openEditor(player, b);
MenuHelper.awaitChatInput(p, new ChatHandler() {
@Override
public boolean onChat(Player p, String message) {
BlockStorage.addBlockInfo(b, "floor", message.replaceAll("&", "&"));
p.sendMessage("");
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&4&l>> &eSuccessfully named this Floor:"));
p.sendMessage(ChatColor.translateAlternateColorCodes('&', "&4&l>> &r" + ChatColor.translateAlternateColorCodes('&', message)));
p.sendMessage("");
openEditor(p, b);
return false;
}
});
return false;
}
});
return false;
});
menu.open(p);

View File

@ -20,11 +20,7 @@ import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Variable;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuCloseHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper.ChatHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
@ -57,7 +53,7 @@ public class GPSNetwork {
public int getNetworkComplexity(UUID uuid) {
if (!transmitters.containsKey(uuid)) return 0;
int level = 0;
for (Location l: transmitters.get(uuid)) {
for (Location l : transmitters.get(uuid)) {
level = level + l.getBlockY();
}
return level;
@ -71,63 +67,41 @@ public class GPSNetwork {
public void openTransmitterControlPanel(Player p) throws Exception {
ChestMenu menu = new ChestMenu("&9Control Panel");
for (int slot: border) {
for (int slot : border) {
menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(pl, slotn, item, action) -> false
);
}
menu.addItem(2, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&7Transmitter Overview &e(Selected)"));
menu.addMenuClickHandler(2, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(2,
(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())));
menu.addMenuClickHandler(4, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(4,
(pl, slot, item, action) -> false
);
menu.addItem(6, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &r(Select)"));
menu.addMenuClickHandler(6, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
try {
openWaypointControlPanel(arg0);
} catch (Exception e) {
e.printStackTrace();
}
return false;
menu.addMenuClickHandler(6, (pl, slot, item, action) -> {
try {
openWaypointControlPanel(pl);
} catch (Exception e) {
e.printStackTrace();
}
return false;
});
int index = 0;
for (Location l: getTransmitters(p.getUniqueId())) {
for (Location l : getTransmitters(p.getUniqueId())) {
if (index >= inventory.length) break;
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.addMenuClickHandler(slot, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(slot,
(pl, slotn, item, action) -> false
);
index++;
}
@ -156,50 +130,32 @@ public class GPSNetwork {
for (int slot: border) {
menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(pl, slotn, item, action) -> false
);
}
menu.addItem(2, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjBjOWMxYTAyMmY0MGI3M2YxNGI0Y2JhMzdjNzE4YzZhNTMzZjNhMjg2NGI2NTM2ZDVmNDU2OTM0Y2MxZiJ9fX0="), "&7Transmitter Overview &r(Select)"));
menu.addMenuClickHandler(2, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
try {
openTransmitterControlPanel(arg0);
} catch (Exception e) {
e.printStackTrace();
}
return false;
menu.addMenuClickHandler(2, (pl, slot, item, action) -> {
try {
openTransmitterControlPanel(pl);
} catch (Exception e) {
e.printStackTrace();
}
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())));
menu.addMenuClickHandler(4, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(4,
(pl, slot, item, action) -> false
);
menu.addItem(6, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &e(Selected)"));
menu.addMenuClickHandler(6, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(6,
(pl, slot, item, action) -> false
);
int index = 0;
for (final Map.Entry<String, Location> entry: getWaypoints(p.getUniqueId()).entrySet()) {
for (final Map.Entry<String, Location> entry : getWaypoints(p.getUniqueId()).entrySet()) {
if (index >= inventory.length) break;
int slot = inventory[index];
@ -207,22 +163,18 @@ public class GPSNetwork {
ItemStack globe = getPlanet(entry);
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, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', entry.getKey())).toUpperCase().replace(" ", "_");
Config cfg = new Config("data-storage/Slimefun/waypoints/" + arg0.getUniqueId().toString() + ".yml");
cfg.setValue(id, null);
cfg.save();
arg0.playSound(arg0.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F);
try {
openWaypointControlPanel(arg0);
} catch (Exception e) {
e.printStackTrace();
}
return false;
menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> {
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', entry.getKey())).toUpperCase().replace(" ", "_");
Config cfg = new Config("data-storage/Slimefun/waypoints/" + pl.getUniqueId().toString() + ".yml");
cfg.setValue(id, null);
cfg.save();
pl.playSound(pl.getLocation(), Sound.UI_BUTTON_CLICK, 1F, 1F);
try {
openWaypointControlPanel(pl);
} catch (Exception e) {
e.printStackTrace();
}
return false;
});
index++;
@ -249,13 +201,9 @@ public class GPSNetwork {
}
Messages.local.sendTranslation(p, "gps.waypoint.new", true);
p.playSound(p.getLocation(), Sound.BLOCK_NOTE_BLOCK_PLING, 0.5F, 1F);
MenuHelper.awaitChatInput(p, new ChatHandler() {
@Override
public boolean onChat(Player p, String message) {
addWaypoint(p, message, l);
return false;
}
MenuHelper.awaitChatInput(p, (pl, message) -> {
addWaypoint(pl, message, l);
return false;
});
}
@ -290,13 +238,8 @@ public class GPSNetwork {
int supply = OreGenSystem.getSupplies(resource, chunk, true);
menu.addItem(index, new CustomItem(resource.getIcon(), "&7Resource: &e" + resource.getName(), "", "&7Scanned Chunk:", "&8\u21E8 &7X: " + chunk.getX() + " Z: " + chunk.getZ(), "", "&7Result: &e" + supply + " " + resource.getMeasurementUnit()),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(pl, slot, item, action) -> false
);
index++;
}
@ -314,34 +257,20 @@ public class GPSNetwork {
ChestMenu menu = new ChestMenu("&3Teleporter");
menu.addMenuCloseHandler(new MenuCloseHandler() {
@Override
public void onClose(Player p) {
TeleportationSequence.players.remove(p.getUniqueId());
}
});
menu.addMenuCloseHandler(
pl -> TeleportationSequence.players.remove(pl.getUniqueId())
);
for (int slot: teleporter_border) {
for (int slot : teleporter_border) {
menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(pl, slotn, item, action) -> false
);
}
menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzljODg4MWU0MjkxNWE5ZDI5YmI2MWExNmZiMjZkMDU5OTEzMjA0ZDI2NWRmNWI0MzliM2Q3OTJhY2Q1NiJ9fX0="), "&7Waypoint Overview &e(Select a Destination)"));
menu.addMenuClickHandler(4, new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(4,
(pl, slot, item, action) -> false
);
final Location source = new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + 2D, b.getZ() + 0.5D);
int index = 0;
@ -353,14 +282,10 @@ public class GPSNetwork {
ItemStack globe = getPlanet(entry);
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 &7Estimated Teleportation Time: &r" + (50 / TeleportationSequence.getSpeed(Slimefun.getGPSNetwork().getNetworkComplexity(uuid), source, l)) + "s", "", "&8\u21E8 &cClick to select"));
menu.addMenuClickHandler(slot, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
p.closeInventory();
TeleportationSequence.start(p.getUniqueId(), complexity, source, l, false);
menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> {
pl.closeInventory();
TeleportationSequence.start(pl.getUniqueId(), complexity, source, l, false);
return false;
}
});
index++;

View File

@ -4,15 +4,19 @@ import java.util.HashSet;
import java.util.Set;
import java.util.UUID;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder.TitleType;
import me.mrCookieSlime.Slimefun.SlimefunStartup;
import org.bukkit.*;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Location;
import org.bukkit.Particle;
import org.bukkit.Sound;
import org.bukkit.entity.Player;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.TitleBuilder.TitleType;
import me.mrCookieSlime.Slimefun.SlimefunStartup;
public class TeleportationSequence {
public static Set<UUID> players = new HashSet<UUID>();
@ -92,12 +96,8 @@ public class TeleportationSequence {
source.getWorld().spawnParticle(Particle.PORTAL, source, progress * 2, 0.2F, 0.8F, 0.2F);
source.getWorld().playSound(source, Sound.UI_BUTTON_CLICK, 1.7F, 0.6F);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
updateProgress(uuid, speed, progress + speed, source, destination, resistance);
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
updateProgress(uuid, speed, progress + speed, source, destination, resistance);
}, 10l);
}
} catch (Exception e) {

View File

@ -18,7 +18,6 @@ import org.bukkit.inventory.meta.ItemMeta;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
@ -76,20 +75,19 @@ public abstract class AContainer extends SlimefunItem {
@Override
public void onPlace(Player p, Block b, SlimefunItem item) {
}
@Override
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
BlockMenu inv = BlockStorage.getInventory(b);
if (inv != null) {
for (int slot: getInputSlots()) {
for (int slot : getInputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
}
}
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
@ -165,51 +163,27 @@ public abstract class AContainer extends SlimefunItem {
}
protected void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_in) {
for (int i : border_in) {
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_out) {
for (int i : border_out) {
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
for (int i: getOutputSlots()) {
for (int i : getOutputSlots()) {
preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() {
@Override
@ -261,9 +235,9 @@ public abstract class AContainer extends SlimefunItem {
int size = BlockStorage.getInventory(b).toInventory().getSize();
Inventory inv = Bukkit.createInventory(null, size);
for (int i = 0; i < size; i++) {
inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US", 0));
inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, "&4ALL YOUR PLACEHOLDERS ARE BELONG TO US", 0));
}
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot));
}
return inv;
@ -277,7 +251,7 @@ public abstract class AContainer extends SlimefunItem {
Inventory inv = inject(b);
inv.addItem(items);
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot));
}
}

View File

@ -46,38 +46,20 @@ public abstract class ADrill extends AContainer {
}
private void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_out) {
for (int i : border_out) {
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
for (int i: getOutputSlots()) {
preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() {

View File

@ -1,9 +1,17 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@ -18,15 +26,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public abstract class AFarm extends SlimefunItem {
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 36, 37, 38, 39, 40, 41, 42, 43, 44};
@ -62,14 +61,13 @@ public abstract class AFarm extends SlimefunItem {
@Override
public void onPlace(Player p, Block b, SlimefunItem item) {
}
@Override
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
BlockMenu inv = BlockStorage.getInventory(b);
if (inv != null) {
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
@ -111,7 +109,6 @@ public abstract class AFarm extends SlimefunItem {
@Override
public void onPlace(Player p, Block b, SlimefunItem item) {
}
@Override
@ -131,40 +128,22 @@ public abstract class AFarm extends SlimefunItem {
}
private void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_out) {
for (int i : border_out) {
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
for (int i: getOutputSlots()) {
for (int i : getOutputSlots()) {
preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() {
@Override

View File

@ -7,10 +7,20 @@ import java.util.List;
import java.util.Map;
import java.util.Set;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.ItemMeta;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
@ -28,17 +38,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.Damageable;
import org.bukkit.inventory.meta.ItemMeta;
public abstract class AGenerator extends SlimefunItem {
public static Map<Location, MachineFuel> processing = new HashMap<Location, MachineFuel>();
@ -80,20 +79,19 @@ public abstract class AGenerator extends SlimefunItem {
@Override
public void onPlace(Player p, Block b, SlimefunItem item) {
}
@Override
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
BlockMenu inv = BlockStorage.getInventory(b);
if (inv != null) {
for (int slot: getInputSlots()) {
for (int slot : getInputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
}
}
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
@ -139,20 +137,19 @@ public abstract class AGenerator extends SlimefunItem {
@Override
public void onPlace(Player p, Block b, SlimefunItem item) {
}
@Override
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
BlockMenu inv = BlockStorage.getInventory(b);
if (inv != null) {
for (int slot: getInputSlots()) {
for (int slot : getInputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
}
}
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
@ -169,38 +166,20 @@ public abstract class AGenerator extends SlimefunItem {
}
private void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_in) {
for (int i : border_in) {
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_out) {
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: getOutputSlots()) {
@ -219,14 +198,8 @@ public abstract class AGenerator extends SlimefunItem {
}
preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
public abstract String getInventoryTitle();
@ -352,13 +325,14 @@ public abstract class AGenerator extends SlimefunItem {
}
return inv;
}
protected void pushItems(Location l, ItemStack[] items) {
Inventory inv = inject(l);
inv.addItem(items);
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
BlockStorage.getInventory(l).replaceExistingItem(slot, inv.getItem(slot));
}
}
}

View File

@ -19,8 +19,6 @@ import org.bukkit.inventory.meta.ItemMeta;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
@ -84,26 +82,18 @@ public abstract class AReactor extends SlimefunItem {
}
if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "reactor-mode").equals("generator")) {
menu.replaceExistingItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTM0M2NlNThkYTU0Yzc5OTI0YTJjOTMzMWNmYzQxN2ZlOGNjYmJlYTliZTQ1YTdhYzg1ODYwYTZjNzMwIn19fQ=="), "&7Focus: &eElectricity", "", "&6Your Reactor will focus on Power Generation", "&6If your Energy Network doesn't need Power", "&6it will not produce any either", "", "&7> Click to change the Focus to &eProduction"));
menu.addMenuClickHandler(4, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "reactor-mode", "production");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(4, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "reactor-mode", "production");
newInstance(menu, b);
return false;
});
}
else {
menu.replaceExistingItem(4, new CustomItem(SlimefunItems.PLUTONIUM, "&7Focus: &eProduction", "", "&6Your Reactor will focus on producing goods", "&6If your Energy Network doesn't need Power", "&6it will continue to run and simply will", "&6not generate any Power in the mean time", "", "&7> Click to change the Focus to &ePower Generation"));
menu.addMenuClickHandler(4, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "reactor-mode", "generator");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(4, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "reactor-mode", "generator");
newInstance(menu, b);
return false;
});
}
} catch(Exception x) {
@ -125,26 +115,25 @@ public abstract class AReactor extends SlimefunItem {
@Override
public void onPlace(Player p, Block b, SlimefunItem item) {
}
@Override
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
BlockMenu inv = BlockStorage.getInventory(b);
if (inv != null) {
for (int slot: getFuelSlots()) {
for (int slot : getFuelSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
}
}
for (int slot: getCoolantSlots()) {
for (int slot : getCoolantSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
}
}
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
@ -162,72 +151,36 @@ public abstract class AReactor extends SlimefunItem {
}
private void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_1) {
for (int i : border_1) {
preset.addItem(i, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_3) {
for (int i : border_3) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GREEN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
preset.addItem(1, new CustomItem(SlimefunItems.URANIUM, "&7Fuel Slot", "", "&rThis Slot accepts radioactive Fuel such as:", "&2Uranium &ror &aNeptunium"),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
for (int i : border_2) {
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
if (needsCooling()) {
@ -238,13 +191,8 @@ public abstract class AReactor extends SlimefunItem {
for (int i : border_4) {
preset.addItem(i, new CustomItem(new ItemStack(Material.BARRIER), "&cNo Coolant Required"),
new MenuClickHandler() {
@Override
public boolean onClick(Player player, int i, ItemStack itemStack, ClickAction clickAction) {
return false;
}
});
(p, slot, item, action) -> false
);
}
}
}
@ -314,15 +262,10 @@ public abstract class AReactor extends SlimefunItem {
if (space >= produced || !BlockStorage.getLocationInfo(l, "reactor-mode").equals("generator")) {
progress.put(l, timeleft - 1);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
if (!l.getBlock().getRelative(cooling[CSCoreLib.randomizer().nextInt(cooling.length)]).isLiquid()) explode.add(l);
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
if (!l.getBlock().getRelative(cooling[CSCoreLib.randomizer().nextInt(cooling.length)]).isLiquid()) explode.add(l);
});
ItemStack item = getProgressBar().clone();
ItemMeta im = item.getItemMeta();
im.setDisplayName(" ");
@ -433,11 +376,8 @@ public abstract class AReactor extends SlimefunItem {
if (explosion) {
BlockStorage.getInventory(l).close();
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
ReactorHologram.remove(l);
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
ReactorHologram.remove(l);
}, 0);
explode.remove(l);
@ -457,7 +397,7 @@ public abstract class AReactor extends SlimefunItem {
for (int i = 0; i < size; i++) {
inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US", 0));
}
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
inv.setItem(slot, BlockStorage.getInventory(l).getItemInSlot(slot));
}
return inv;
@ -469,7 +409,7 @@ public abstract class AReactor extends SlimefunItem {
for (int i = 0; i < size; i++) {
inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US", 0));
}
for (int slot: slots) {
for (int slot : slots) {
inv.setItem(slot, BlockStorage.getInventory(l).getItemInSlot(slot));
}
return inv;
@ -488,11 +428,11 @@ public abstract class AReactor extends SlimefunItem {
Inventory inv = inject(l, slots);
Map<Integer, ItemStack> map = inv.addItem(item);
for (int slot: slots) {
for (int slot : slots) {
BlockStorage.getInventory(l).replaceExistingItem(slot, inv.getItem(slot));
}
for (Map.Entry<Integer, ItemStack> entry: map.entrySet()) {
for (Map.Entry<Integer, ItemStack> entry : map.entrySet()) {
return entry.getValue();
}
@ -510,4 +450,5 @@ public abstract class AReactor extends SlimefunItem {
if (BlockStorage.check(portL, "REACTOR_ACCESS_PORT")) return BlockStorage.getInventory(portL);
return null;
}
}

View File

@ -1,14 +1,12 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@ -25,7 +23,7 @@ import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
public class AdvancedCargoOutputNode extends SlimefunItem {
private static final int[] border = {0, 1, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 17, 18, 22, 23, 24, 26, 27, 31, 32, 33, 34, 35, 36, 40, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
public AdvancedCargoOutputNode(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe, ItemStack recipeOutput) {
@ -43,136 +41,96 @@ public class AdvancedCargoOutputNode extends SlimefunItem {
try {
if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-type") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-type").equals("whitelist")) {
menu.replaceExistingItem(15, new CustomItem(new ItemStack(Material.WHITE_WOOL), "&7Type: &rWhitelist", "", "&e> Click to change it to Blacklist"));
menu.addMenuClickHandler(15, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "filter-type", "blacklist");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(15, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "filter-type", "blacklist");
newInstance(menu, b);
return false;
});
}
else {
menu.replaceExistingItem(15, new CustomItem(new ItemStack(Material.BLACK_WOOL), "&7Type: &8Blacklist", "", "&e> Click to change it to Whitelist"));
menu.addMenuClickHandler(15, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "filter-type", "whitelist");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(15, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "filter-type", "whitelist");
newInstance(menu, b);
return false;
});
}
if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-durability") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-durability").equals("false")) {
menu.replaceExistingItem(16, new CustomItem(new ItemStack(Material.STONE_SWORD, (byte) 20), "&7Include Sub-IDs/Durability: &4\u2718", "", "&e> Click to toggle whether the Durability has to match"));
menu.addMenuClickHandler(16, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "filter-durability", "true");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(16, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "filter-durability", "true");
newInstance(menu, b);
return false;
});
}
else {
menu.replaceExistingItem(16, new CustomItem(new ItemStack(Material.GOLDEN_SWORD, (byte) 20), "&7Include Sub-IDs/Durability: &2\u2714", "", "&e> Click to toggle whether the Durability has to match"));
menu.addMenuClickHandler(16, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "filter-durability", "false");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(16, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "filter-durability", "false");
newInstance(menu, b);
return false;
});
}
if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-lore") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-lore").equals("true")) {
menu.replaceExistingItem(25, new CustomItem(new ItemStack(Material.MAP), "&7Include Lore: &2\u2714", "", "&e> Click to toggle whether the Lore has to match"));
menu.addMenuClickHandler(25, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "filter-lore", "false");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(25, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "filter-lore", "false");
newInstance(menu, b);
return false;
});
}
else {
menu.replaceExistingItem(25, new CustomItem(new ItemStack(Material.MAP), "&7Include Lore: &4\u2718", "", "&e> Click to toggle whether the Lore has to match"));
menu.addMenuClickHandler(25, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "filter-lore", "true");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(25, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "filter-lore", "true");
newInstance(menu, b);
return false;
});
}
menu.replaceExistingItem(41, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1OTliZDk4NjY1OWI4Y2UyYzQ5ODg1MjVjOTRlMTlkZGQzOWZhZDA4YTM4Mjg0YTE5N2YxYjcwNjc1YWNjIn19fQ=="), "&bChannel", "", "&e> Click to decrease the Channel ID by 1"));
menu.addMenuClickHandler(41, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1;
if (channel < 0) {
if (CargoNet.EXTRA_CHANNELS) channel = 16;
else channel = 15;
}
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
menu.addMenuClickHandler(41, (p, slot, item, action) -> {
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1;
if (channel < 0) {
if (CargoNet.EXTRA_CHANNELS) channel = 16;
else channel = 15;
}
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
});
int channel = ((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? 0: (Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency"))));
if (channel == 16) {
menu.replaceExistingItem(42, new CustomItem(SlimefunItems.CHEST_TERMINAL, "&bChannel ID: &3" + (channel + 1)));
menu.addMenuClickHandler(42, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(42,
(p, slot, item, action) -> false
);
}
else {
menu.replaceExistingItem(42, new CustomItem(new ItemStack(MaterialHelper.WoolColours[channel]), "&bChannel ID: &3" + (channel + 1)));
menu.addMenuClickHandler(42, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(42,
(p, slot, item, action) -> false
);
}
menu.replaceExistingItem(43, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzJmOTEwYzQ3ZGEwNDJlNGFhMjhhZjZjYzgxY2Y0OGFjNmNhZjM3ZGFiMzVmODhkYjk5M2FjY2I5ZGZlNTE2In19fQ=="), "&bChannel", "", "&e> Click to increase the Channel ID by 1"));
menu.addMenuClickHandler(43, new MenuClickHandler() {
menu.addMenuClickHandler(43, (p, slot, item, action) -> {
int channeln = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1;
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1;
if (CargoNet.EXTRA_CHANNELS) {
if (channel > 16) channel = 0;
}
else {
if (channel > 15) channel = 0;
}
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
if (CargoNet.EXTRA_CHANNELS) {
if (channeln > 16) channeln = 0;
}
else {
if (channeln > 15) channeln = 0;
}
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channeln));
newInstance(menu, b);
return false;
});
} catch (Exception e) {
@ -224,30 +182,19 @@ public class AdvancedCargoOutputNode extends SlimefunItem {
}
protected void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
preset.addItem(2, new CustomItem(new ItemStack(Material.PAPER), "&3Items", "", "&bPut in all Items you want to", "&bblacklist/whitelist"),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
public int[] getInputSlots() {
return new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39};
}
}

View File

@ -2,8 +2,6 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@ -71,7 +69,7 @@ public class AnimalGrowthAccelerator extends SlimefunItem {
me.mrCookieSlime.Slimefun.holograms.AnimalGrowthAccelerator.getArmorStand(b).remove();
BlockMenu inv = BlockStorage.getInventory(b);
if (inv != null) {
for (int slot: getInputSlots()) {
for (int slot : getInputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
@ -84,16 +82,10 @@ public class AnimalGrowthAccelerator extends SlimefunItem {
}
protected void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
}
@ -132,7 +124,7 @@ public class AnimalGrowthAccelerator extends SlimefunItem {
}
protected void tick(Block b) throws Exception {
for (Entity n: me.mrCookieSlime.Slimefun.holograms.AnimalGrowthAccelerator.getArmorStand(b).getNearbyEntities(3D, 3D, 3D)) {
for (Entity n : me.mrCookieSlime.Slimefun.holograms.AnimalGrowthAccelerator.getArmorStand(b).getNearbyEntities(3D, 3D, 3D)) {
if (n instanceof Ageable && !((Ageable) n).isAdult()) {
for (int slot: getInputSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.ORGANIC_FOOD, false)) {

View File

@ -1,9 +1,15 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
import org.bukkit.Material;
import org.bukkit.Particle;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.Animals;
@ -21,14 +27,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
import org.bukkit.Material;
import org.bukkit.Particle;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.LivingEntity;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public class AutoBreeder extends SlimefunItem {
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
@ -63,7 +61,6 @@ public class AutoBreeder extends SlimefunItem {
@Override
public void onPlace(Player p, Block b, SlimefunItem item) {
}
@Override
@ -71,7 +68,7 @@ public class AutoBreeder extends SlimefunItem {
me.mrCookieSlime.Slimefun.holograms.AutoBreeder.getArmorStand(b).remove();
BlockMenu inv = BlockStorage.getInventory(b);
if (inv != null) {
for (int slot: getInputSlots()) {
for (int slot : getInputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
@ -84,16 +81,10 @@ public class AutoBreeder extends SlimefunItem {
}
protected void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
}
@ -132,9 +123,9 @@ public class AutoBreeder extends SlimefunItem {
}
protected void tick(Block b) throws Exception {
for (Entity n: me.mrCookieSlime.Slimefun.holograms.AutoBreeder.getArmorStand(b).getNearbyEntities(4D, 2D, 4D)) {
for (Entity n : me.mrCookieSlime.Slimefun.holograms.AutoBreeder.getArmorStand(b).getNearbyEntities(4D, 2D, 4D)) {
if (Animals.isFeedable(n)) {
for (int slot: getInputSlots()) {
for (int slot : getInputSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.ORGANIC_FOOD, false)) {
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
ChargableBlock.addCharge(b, -getEnergyConsumption());

View File

@ -17,7 +17,6 @@ import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
@ -58,26 +57,18 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem {
public void newInstance(final BlockMenu menu, final Block b) {
if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "enabled") == null || BlockStorage.getLocationInfo(b.getLocation(), "enabled").equals("false")) {
menu.replaceExistingItem(6, new CustomItem(new ItemStack(Material.GUNPOWDER), "&7Enabled: &4\u2718", "", "&e> Click to enable this Machine"));
menu.addMenuClickHandler(6, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "enabled", "true");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(6, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "enabled", "true");
newInstance(menu, b);
return false;
});
}
else {
menu.replaceExistingItem(6, new CustomItem(new ItemStack(Material.REDSTONE), "&7Enabled: &2\u2714", "", "&e> Click to disable this Machine"));
menu.addMenuClickHandler(6, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "enabled", "false");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(6, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "enabled", "false");
newInstance(menu, b);
return false;
});
}
}
@ -97,7 +88,7 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem {
if (flow.equals(ItemTransportFlow.WITHDRAW)) return getOutputSlots();
List<Integer> slots = new ArrayList<Integer>();
for (int slot: getInputSlots()) {
for (int slot : getInputSlots()) {
if (menu.getItemInSlot(slot) != null) slots.add(slot);
}
Collections.sort(slots, new RecipeSorter(menu));
@ -142,41 +133,23 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem {
}
protected void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_in) {
for (int i : border_in) {
preset.addItem(i, new CustomItem(new ItemStack(Material.BLUE_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_out) {
for (int i : border_out) {
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: getOutputSlots()) {
for (int i : getOutputSlots()) {
preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() {
@Override
@ -192,14 +165,8 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem {
}
preset.addItem(2, new CustomItem(new ItemStack(Material.CRAFTING_TABLE), "&eRecipe", "", "&bPut in the Recipe you want to craft", "&4Enhanced Crafting Table Recipes ONLY"),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
public abstract int getEnergyConsumption();
@ -218,7 +185,7 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem {
for (int i = 0; i < size; i++) {
inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US", 0));
}
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot));
}
return inv;
@ -232,7 +199,7 @@ public abstract class AutomatedCraftingChamber extends SlimefunItem {
Inventory inv = inject(b);
inv.addItem(items);
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot));
}
}

View File

@ -1,14 +1,12 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@ -40,38 +38,26 @@ public class CargoCraftingNode extends SlimefunItem {
public void newInstance(final BlockMenu menu, final Block b) {
try {
menu.replaceExistingItem(41, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1OTliZDk4NjY1OWI4Y2UyYzQ5ODg1MjVjOTRlMTlkZGQzOWZhZDA4YTM4Mjg0YTE5N2YxYjcwNjc1YWNjIn19fQ=="), "&bChannel", "", "&e> Click to decrease the Channel ID by 1"));
menu.addMenuClickHandler(41, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1;
if (channel < 0) channel = 15;
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(41, (p, slot, item, action) -> {
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1;
if (channel < 0) channel = 15;
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
});
menu.replaceExistingItem(42, new CustomItem(new ItemStack(((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? Material.WHITE_WOOL: MaterialHelper.WoolColours[(Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")))])), "&bChannel ID: &3" + (((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? 0: (Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")))) + 1)));
menu.addMenuClickHandler(42, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.replaceExistingItem(42, new CustomItem(new ItemStack(((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? Material.WHITE_WOOL : MaterialHelper.WoolColours[(Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")))])), "&bChannel ID: &3" + (((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? 0: (Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")))) + 1)));
menu.addMenuClickHandler(42,
(p, slot, item, action) -> false
);
menu.replaceExistingItem(43, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzJmOTEwYzQ3ZGEwNDJlNGFhMjhhZjZjYzgxY2Y0OGFjNmNhZjM3ZGFiMzVmODhkYjk5M2FjY2I5ZGZlNTE2In19fQ=="), "&bChannel", "", "&e> Click to increase the Channel ID by 1"));
menu.addMenuClickHandler(43, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1;
if (channel > 15) channel = 0;
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(43, (p, slot, item, action) -> {
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1;
if (channel > 15) channel = 0;
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
});
} catch (Exception e) {
@ -106,7 +92,7 @@ public class CargoCraftingNode extends SlimefunItem {
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
BlockMenu inv = BlockStorage.getInventory(b);
if (inv != null) {
for (int slot: getInputSlots()) {
for (int slot : getInputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
@ -119,30 +105,19 @@ public class CargoCraftingNode extends SlimefunItem {
}
protected void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
preset.addItem(2, new CustomItem(new ItemStack(Material.CRAFTING_TABLE), "&eRecipe", "", "&bPut in the Recipe you want to craft"),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
public int[] getInputSlots() {
return new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39};
}
}

View File

@ -7,8 +7,6 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@ -43,161 +41,113 @@ public class CargoInputNode extends SlimefunItem {
try {
if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-type") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-type").equals("whitelist")) {
menu.replaceExistingItem(15, new CustomItem(new ItemStack(Material.WHITE_WOOL), "&7Type: &rWhitelist", "", "&e> Click to change it to Blacklist"));
menu.addMenuClickHandler(15, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "filter-type", "blacklist");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(15, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "filter-type", "blacklist");
newInstance(menu, b);
return false;
});
}
else {
menu.replaceExistingItem(15, new CustomItem(new ItemStack(Material.BLACK_WOOL), "&7Type: &8Blacklist", "", "&e> Click to change it to Whitelist"));
menu.addMenuClickHandler(15, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "filter-type", "whitelist");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(15, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "filter-type", "whitelist");
newInstance(menu, b);
return false;
});
}
if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-durability") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-durability").equals("false")) {
menu.replaceExistingItem(16, new CustomItem(new ItemStack(Material.STONE_SWORD, (byte) 20), "&7Include Sub-IDs/Durability: &4\u2718", "", "&e> Click to toggle whether the Durability has to match"));
menu.addMenuClickHandler(16, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "filter-durability", "true");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(16, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "filter-durability", "true");
newInstance(menu, b);
return false;
});
}
else {
menu.replaceExistingItem(16, new CustomItem(new ItemStack(Material.GOLDEN_SWORD, (byte) 20), "&7Include Sub-IDs/Durability: &2\u2714", "", "&e> Click to toggle whether the Durability has to match"));
menu.addMenuClickHandler(16, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "filter-durability", "false");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(16, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "filter-durability", "false");
newInstance(menu, b);
return false;
});
}
if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "round-robin") == null || BlockStorage.getLocationInfo(b.getLocation(), "round-robin").equals("false")) {
menu.replaceExistingItem(24, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&7Round-Robin Mode: &4\u2718", "", "&e> Click to enable Round Robin Mode", "&e(Items will be equally distributed on the Channel)"));
menu.addMenuClickHandler(24, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "round-robin", "true");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(24, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "round-robin", "true");
newInstance(menu, b);
return false;
});
}
else {
menu.replaceExistingItem(24, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZDc4ZjJiN2U1ZTc1NjM5ZWE3ZmI3OTZjMzVkMzY0YzRkZjI4YjQyNDNlNjZiNzYyNzdhYWRjZDYyNjEzMzcifX19"), "&7Round-Robin Mode: &2\u2714", "", "&e> Click to disable Round Robin Mode", "&e(Items will be equally distributed on the Channel)"));
menu.addMenuClickHandler(24, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "round-robin", "false");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(24, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "round-robin", "false");
newInstance(menu, b);
return false;
});
}
if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "filter-lore") == null || BlockStorage.getLocationInfo(b.getLocation(), "filter-lore").equals("true")) {
menu.replaceExistingItem(25, new CustomItem(new ItemStack(Material.MAP), "&7Include Lore: &2\u2714", "", "&e> Click to toggle whether the Lore has to match"));
menu.addMenuClickHandler(25, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "filter-lore", "false");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(25, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "filter-lore", "false");
newInstance(menu, b);
return false;
});
}
else {
menu.replaceExistingItem(25, new CustomItem(new ItemStack(Material.MAP), "&7Include Lore: &4\u2718", "", "&e> Click to toggle whether the Lore has to match"));
menu.addMenuClickHandler(25, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "filter-lore", "true");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(25, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "filter-lore", "true");
newInstance(menu, b);
return false;
});
}
menu.replaceExistingItem(41, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1OTliZDk4NjY1OWI4Y2UyYzQ5ODg1MjVjOTRlMTlkZGQzOWZhZDA4YTM4Mjg0YTE5N2YxYjcwNjc1YWNjIn19fQ=="), "&bChannel", "", "&e> Click to decrease the Channel ID by 1"));
menu.addMenuClickHandler(41, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1;
if (channel < 0) {
if (CargoNet.EXTRA_CHANNELS) channel = 16;
else channel = 15;
}
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
menu.addMenuClickHandler(41, (p, slot, item, action) -> {
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1;
if (channel < 0) {
if (CargoNet.EXTRA_CHANNELS) channel = 16;
else channel = 15;
}
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
});
int channel = ((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? 0: (Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency"))));
if (channel == 16) {
menu.replaceExistingItem(42, new CustomItem(SlimefunItems.CHEST_TERMINAL, "&bChannel ID: &3" + (channel + 1)));
menu.addMenuClickHandler(42, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(42,
(p, slot, item, action) -> false
);
}
else {
menu.replaceExistingItem(42, new CustomItem(new ItemStack(MaterialHelper.WoolColours[channel]), "&bChannel ID: &3" + (channel + 1)));
menu.addMenuClickHandler(42, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(42,
(p, slot, item, action) -> false
);
}
menu.replaceExistingItem(43, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzJmOTEwYzQ3ZGEwNDJlNGFhMjhhZjZjYzgxY2Y0OGFjNmNhZjM3ZGFiMzVmODhkYjk5M2FjY2I5ZGZlNTE2In19fQ=="), "&bChannel", "", "&e> Click to increase the Channel ID by 1"));
menu.addMenuClickHandler(43, new MenuClickHandler() {
menu.addMenuClickHandler(43, (p, slot, item, action) -> {
int channeln = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1;
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1;
if (CargoNet.EXTRA_CHANNELS) {
if (channel > 16) channel = 0;
}
else {
if (channel > 15) channel = 0;
}
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
if (CargoNet.EXTRA_CHANNELS) {
if (channeln > 16) channeln = 0;
}
else {
if (channeln > 15) channeln = 0;
}
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
});
} catch (Exception e) {
@ -237,7 +187,7 @@ public class CargoInputNode extends SlimefunItem {
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
BlockMenu inv = BlockStorage.getInventory(b);
if (inv != null) {
for (int slot: getInputSlots()) {
for (int slot : getInputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
@ -250,30 +200,19 @@ public class CargoInputNode extends SlimefunItem {
}
protected void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
preset.addItem(2, new CustomItem(new ItemStack(Material.PAPER), "&3Items", "", "&bPut in all Items you want to", "&bblacklist/whitelist"),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
public int[] getInputSlots() {
return new int[] {19, 20, 21, 28, 29, 30, 37, 38, 39};
}
}

View File

@ -1,14 +1,12 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.compatibility.MaterialHelper;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@ -44,62 +42,46 @@ public class CargoOutputNode extends SlimefunItem {
try {
menu.replaceExistingItem(12, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvZjI1OTliZDk4NjY1OWI4Y2UyYzQ5ODg1MjVjOTRlMTlkZGQzOWZhZDA4YTM4Mjg0YTE5N2YxYjcwNjc1YWNjIn19fQ=="), "&bChannel", "", "&e> Click to decrease the Channel ID by 1"));
menu.addMenuClickHandler(12, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1;
if (channel < 0) {
if (CargoNet.EXTRA_CHANNELS) channel = 16;
else channel = 15;
}
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
menu.addMenuClickHandler(12, (p, slot, item, action) -> {
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) - 1;
if (channel < 0) {
if (CargoNet.EXTRA_CHANNELS) channel = 16;
else channel = 15;
}
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
});
int channel = ((!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "frequency") == null) ? 0: (Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency"))));
if (channel == 16) {
menu.replaceExistingItem(13, new CustomItem(SlimefunItems.CHEST_TERMINAL, "&bChannel ID: &3" + (channel + 1)));
menu.addMenuClickHandler(13, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(13,
(p, slot, item, action) -> false
);
}
else {
menu.replaceExistingItem(13, new CustomItem(new ItemStack(MaterialHelper.WoolColours[channel]), "&bChannel ID: &3" + (channel + 1)));
menu.addMenuClickHandler(13, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
menu.addMenuClickHandler(13,
(p, slot, item, action) -> false
);
}
menu.replaceExistingItem(14, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYzJmOTEwYzQ3ZGEwNDJlNGFhMjhhZjZjYzgxY2Y0OGFjNmNhZjM3ZGFiMzVmODhkYjk5M2FjY2I5ZGZlNTE2In19fQ=="), "&bChannel", "", "&e> Click to increase the Channel ID by 1"));
menu.addMenuClickHandler(14, new MenuClickHandler() {
menu.addMenuClickHandler(14, (p, slot, item, action) -> {
int channeln = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1;
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
int channel = Integer.parseInt(BlockStorage.getLocationInfo(b.getLocation(), "frequency")) + 1;
if (CargoNet.EXTRA_CHANNELS) {
if (channel > 16) channel = 0;
}
else {
if (channel > 15) channel = 0;
}
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
if (CargoNet.EXTRA_CHANNELS) {
if (channeln > 16) channeln = 0;
}
else {
if (channeln > 15) channeln = 0;
}
BlockStorage.addBlockInfo(b, "frequency", String.valueOf(channel));
newInstance(menu, b);
return false;
});
} catch (Exception e) {
@ -138,16 +120,11 @@ public class CargoOutputNode extends SlimefunItem {
}
protected void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
}
}

View File

@ -3,10 +3,15 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
import java.util.HashMap;
import java.util.Map;
import org.bukkit.Material;
import org.bukkit.Particle;
import org.bukkit.block.Block;
import org.bukkit.block.data.Ageable;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@ -23,13 +28,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
import org.bukkit.Material;
import org.bukkit.Particle;
import org.bukkit.block.Block;
import org.bukkit.block.data.Ageable;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public abstract class CropGrowthAccelerator extends SlimefunItem {
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
@ -75,7 +73,6 @@ public abstract class CropGrowthAccelerator extends SlimefunItem {
@Override
public void onPlace(Player p, Block b, SlimefunItem item) {
}
@Override
@ -95,16 +92,10 @@ public abstract class CropGrowthAccelerator extends SlimefunItem {
}
protected void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
}
@ -171,7 +162,7 @@ public abstract class CropGrowthAccelerator extends SlimefunItem {
}
if (work > 0) {
for (int slot: getInputSlots()) {
for (int slot : getInputSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), SlimefunItems.FERTILIZER, false)) {
BlockStorage.getInventory(b).replaceExistingItem(slot, InvUtils.decreaseItem(BlockStorage.getInventory(b).getItemInSlot(slot), 1));
break;

View File

@ -14,7 +14,6 @@ import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
@ -72,7 +71,7 @@ public abstract class ElectricSmeltery extends AContainer {
List<Integer> slots = new ArrayList<Integer>();
for (int slot: getInputSlots()) {
for (int slot : getInputSlots()) {
if (SlimefunManager.isItemSimiliar(menu.getItemInSlot(slot), item, true)) {
slots.add(slot);
}
@ -99,20 +98,19 @@ public abstract class ElectricSmeltery extends AContainer {
@Override
public void onPlace(Player p, Block b, SlimefunItem item) {
}
@Override
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
BlockMenu inv = BlockStorage.getInventory(b);
if (inv != null) {
for (int slot: getInputSlots()) {
for (int slot : getInputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
}
}
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
@ -129,51 +127,27 @@ public abstract class ElectricSmeltery extends AContainer {
}
protected void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_in) {
for (int i : border_in) {
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_out) {
for (int i : border_out) {
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
preset.addItem(22, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
for (int i: getOutputSlots()) {
for (int i : getOutputSlots()) {
preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() {
@Override

View File

@ -5,11 +5,20 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Block.Vein;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.AdvancedMenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
@ -25,16 +34,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.entity.Player;
import org.bukkit.event.inventory.InventoryClickEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class FluidPump extends SlimefunItem{
public static Map<Block, MachineRecipe> processing = new HashMap<Block, MachineRecipe>();
@ -72,41 +71,23 @@ public class FluidPump extends SlimefunItem{
}
protected void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_in) {
for (int i : border_in) {
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_out) {
for (int i : border_out) {
preset.addItem(i, new CustomItem(new ItemStack(Material.ORANGE_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: getOutputSlots()) {
for (int i : getOutputSlots()) {
preset.addMenuClickHandler(i, new AdvancedMenuClickHandler() {
@Override
@ -137,7 +118,7 @@ public class FluidPump extends SlimefunItem{
protected void tick(Block b) {
Block fluid = b.getRelative(BlockFace.DOWN);
if (fluid.getType().equals(Material.LAVA)) {
for (int slot: getInputSlots()) {
for (int slot : getInputSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) {
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
@ -159,7 +140,7 @@ public class FluidPump extends SlimefunItem{
}
}
else if (fluid.getType().equals(Material.WATER)) {
for (int slot: getInputSlots()) {
for (int slot : getInputSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.BUCKET), true)) {
if (ChargableBlock.getCharge(b) < getEnergyConsumption()) return;
@ -211,7 +192,7 @@ public class FluidPump extends SlimefunItem{
for (int i = 0; i < size; i++) {
inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US", 0));
}
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot));
}
return inv;

View File

@ -2,9 +2,15 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
import java.util.Map;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
@ -18,14 +24,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class ReactorAccessPort extends SlimefunItem {
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 12, 13, 14, 21, 23};
@ -72,26 +70,25 @@ public class ReactorAccessPort extends SlimefunItem {
@Override
public void onPlace(Player p, Block b, SlimefunItem item) {
}
@Override
public boolean onBreak(Player p, Block b, SlimefunItem item, UnregisterReason reason) {
BlockMenu inv = BlockStorage.getInventory(b);
if (inv != null) {
for (int slot: getFuelSlots()) {
for (int slot : getFuelSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
}
}
for (int slot: getCoolantSlots()) {
for (int slot : getCoolantSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
}
}
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
@ -104,93 +101,45 @@ public class ReactorAccessPort extends SlimefunItem {
}
private void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_1) {
for (int i : border_1) {
preset.addItem(i, new CustomItem(new ItemStack(Material.LIME_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_2) {
for (int i : border_2) {
preset.addItem(i, new CustomItem(new ItemStack(Material.CYAN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_3) {
for (int i : border_3) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GREEN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
preset.addItem(1, new CustomItem(SlimefunItems.URANIUM, "&7Fuel Slot", "", "&rThis Slot accepts radioactive Fuel such as:", "&2Uranium &ror &aNeptunium"),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
preset.addItem(22, new CustomItem(SlimefunItems.PLUTONIUM, "&7Byproduct Slot", "", "&rThis Slot contains the Reactor's Byproduct", "&rsuch as &aNeptunium &ror &7Plutonium"),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
preset.addItem(7, new CustomItem(SlimefunItems.REACTOR_COOLANT_CELL, "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells", "&4Without any Coolant Cells, your Reactor", "&4will explode"),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
preset.addItem(7, new CustomItem(SlimefunItems.REACTOR_COOLANT_CELL, "&bCoolant Slot", "", "&rThis Slot accepts Coolant Cells", "&4Without any Coolant Cells, your Reactor", "&4will explode"),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
public String getInventoryTitle() {
@ -219,7 +168,7 @@ public class ReactorAccessPort extends SlimefunItem {
for (int i = 0; i < size; i++) {
inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US", 0));
}
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
inv.setItem(slot, BlockStorage.getInventory(l).getItemInSlot(slot));
}
return inv;
@ -238,4 +187,5 @@ public class ReactorAccessPort extends SlimefunItem {
}
return null;
}
}

View File

@ -1,8 +1,11 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
@ -13,11 +16,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public class TrashCan extends SlimefunItem {
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};
@ -50,16 +48,10 @@ public class TrashCan extends SlimefunItem {
}
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), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
}
@ -95,4 +87,5 @@ public class TrashCan extends SlimefunItem {
super.register(slimefun);
}
}

View File

@ -1,9 +1,15 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.InvUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
@ -22,14 +28,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
public class WitherAssembler extends SlimefunItem {
private static int lifetime = 0;
@ -53,41 +51,29 @@ public class WitherAssembler extends SlimefunItem {
try {
if (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "enabled") == null || BlockStorage.getLocationInfo(b.getLocation(), "enabled").equals("false")) {
menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.GUNPOWDER), "&7Enabled: &4\u2718", "", "&e> Click to enable this Machine"));
menu.addMenuClickHandler(22, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "enabled", "true");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(22, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "enabled", "true");
newInstance(menu, b);
return false;
});
}
else {
menu.replaceExistingItem(22, new CustomItem(new ItemStack(Material.REDSTONE), "&7Enabled: &2\u2714", "", "&e> Click to disable this Machine"));
menu.addMenuClickHandler(22, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
BlockStorage.addBlockInfo(b, "enabled", "false");
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(22, (p, slot, item, action) -> {
BlockStorage.addBlockInfo(b, "enabled", "false");
newInstance(menu, b);
return false;
});
}
double offset = (!BlockStorage.hasBlockInfo(b) || BlockStorage.getLocationInfo(b.getLocation(), "offset") == null) ? 3.0F: Double.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "offset"));
menu.replaceExistingItem(31, new CustomItem(new ItemStack(Material.PISTON), "&7Offset: &3" + offset + " Block(s)", "", "&rLeft Click: &7+0.1", "&rRight Click: &7-0.1"));
menu.addMenuClickHandler(31, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
double offset = DoubleHandler.fixDouble(Double.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "offset")) + (arg3.isRightClicked() ? -0.1F: 0.1F));
BlockStorage.addBlockInfo(b, "offset", String.valueOf(offset));
newInstance(menu, b);
return false;
}
menu.addMenuClickHandler(31, (p, slot, item, action) -> {
double offsetv = DoubleHandler.fixDouble(Double.valueOf(BlockStorage.getLocationInfo(b.getLocation(), "offset")) + (action.isRightClicked() ? -0.1F : 0.1F));
BlockStorage.addBlockInfo(b, "offset", String.valueOf(offsetv));
newInstance(menu, b);
return false;
});
} catch(Exception x) {
x.printStackTrace();
@ -134,7 +120,7 @@ public class WitherAssembler extends SlimefunItem {
inv.replaceExistingItem(slot, null);
}
}
for (int slot: getWitherSkullSlots()) {
for (int slot : getWitherSkullSlots()) {
if (inv.getItemInSlot(slot) != null) {
b.getWorld().dropItemNaturally(b.getLocation(), inv.getItemInSlot(slot));
inv.replaceExistingItem(slot, null);
@ -147,71 +133,35 @@ public class WitherAssembler extends SlimefunItem {
}
private void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_1) {
for (int i : border_1) {
preset.addItem(i, new CustomItem(new ItemStack(Material.BLACK_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
for (int i: border_2) {
for (int i : border_2) {
preset.addItem(i, new CustomItem(new ItemStack(Material.BROWN_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
preset.addItem(1, new CustomItem(new ItemStack(Material.WITHER_SKELETON_SKULL, (byte) 1), "&7Wither Skull Slot", "", "&rThis Slot accepts Wither Skeleton Skulls"),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
preset.addItem(7, new CustomItem(new ItemStack(Material.SOUL_SAND), "&7Soul Sand Slot", "", "&rThis Slot accepts Soul Sand"),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
preset.addItem(13, new CustomItem(new ItemStack(Material.CLOCK), "&7Cooldown: &b30 Seconds", "", "&rThis Machine takes up to half a Minute to operate", "&rso give it some Time!"),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
public String getInventoryTitle() {
@ -243,7 +193,7 @@ public class WitherAssembler extends SlimefunItem {
int soulsand = 0;
int skulls = 0;
for (int slot: getSoulSandSlots()) {
for (int slot : getSoulSandSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.SOUL_SAND), true, DataType.ALWAYS)) {
soulsand = soulsand + BlockStorage.getInventory(b).getItemInSlot(slot).getAmount();
if (soulsand > 3) {
@ -253,7 +203,7 @@ public class WitherAssembler extends SlimefunItem {
}
}
for (int slot: getWitherSkullSlots()) {
for (int slot : getWitherSkullSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.WITHER_SKELETON_SKULL), true, DataType.ALWAYS)) {
skulls = skulls + BlockStorage.getInventory(b).getItemInSlot(slot).getAmount();
if (skulls > 2) {
@ -264,7 +214,7 @@ public class WitherAssembler extends SlimefunItem {
}
if (soulsand > 3 && skulls > 2) {
for (int slot: getSoulSandSlots()) {
for (int slot : getSoulSandSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.SOUL_SAND), true, DataType.ALWAYS)) {
final int amount = BlockStorage.getInventory(b).getItemInSlot(slot).getAmount();
if (amount >= soulsand) {
@ -278,7 +228,7 @@ public class WitherAssembler extends SlimefunItem {
}
}
for (int slot: getWitherSkullSlots()) {
for (int slot : getWitherSkullSlots()) {
if (SlimefunManager.isItemSimiliar(BlockStorage.getInventory(b).getItemInSlot(slot), new ItemStack(Material.WITHER_SKELETON_SKULL), true, DataType.ALWAYS)) {
final int amount = BlockStorage.getInventory(b).getItemInSlot(slot).getAmount();
if (amount >= skulls) {
@ -296,12 +246,8 @@ public class WitherAssembler extends SlimefunItem {
final double offset = Double.parseDouble(BlockStorage.getLocationInfo(b.getLocation(), "offset"));
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
b.getWorld().spawnEntity(new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + offset, b.getZ() + 0.5D), EntityType.WITHER);
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
b.getWorld().spawnEntity(new Location(b.getWorld(), b.getX() + 0.5D, b.getY() + offset, b.getZ() + 0.5D), EntityType.WITHER);
});
return;
@ -326,4 +272,5 @@ public class WitherAssembler extends SlimefunItem {
public int getEnergyConsumption() {
return 4096;
}
}

View File

@ -2,10 +2,17 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines;
import java.util.Iterator;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.ExperienceOrb;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
@ -19,15 +26,6 @@ import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Entity;
import org.bukkit.entity.ExperienceOrb;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;
public class XPCollector extends SlimefunItem {
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26};
@ -88,7 +86,7 @@ public class XPCollector extends SlimefunItem {
for (int i = 0; i < size; i++) {
inv.setItem(i, new CustomItem(Material.COMMAND_BLOCK, " &4ALL YOUR PLACEHOLDERS ARE BELONG TO US", 0));
}
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
inv.setItem(slot, BlockStorage.getInventory(b).getItemInSlot(slot));
}
return inv;
@ -102,7 +100,7 @@ public class XPCollector extends SlimefunItem {
Inventory inv = inject(b);
inv.addItem(items);
for (int slot: getOutputSlots()) {
for (int slot : getOutputSlots()) {
BlockStorage.getInventory(b).replaceExistingItem(slot, inv.getItem(slot));
}
}
@ -112,16 +110,10 @@ public class XPCollector extends SlimefunItem {
}
protected void constructMenu(BlockMenuPreset preset) {
for (int i: border) {
for (int i : border) {
preset.addItem(i, new CustomItem(new ItemStack(Material.PURPLE_STAINED_GLASS_PANE), " "),
new MenuClickHandler() {
@Override
public boolean onClick(Player arg0, int arg1, ItemStack arg2, ClickAction arg3) {
return false;
}
});
(p, slot, item, action) -> false
);
}
}

File diff suppressed because it is too large Load Diff

View File

@ -81,116 +81,107 @@ public class TickerTask implements Runnable {
try {
item.getBlockTicker().update();
if (item.getBlockTicker().isSynchronized()) {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
try {
long timestamp3 = System.currentTimeMillis();
item.getBlockTicker().tick(b, item, BlockStorage.getLocationInfo(l));
map_machinetime.put(item.getID(), (map_machinetime.containsKey(item.getID()) ? map_machinetime.get(item.getID()): 0) + (System.currentTimeMillis() - timestamp3));
map_chunk.put(c, (map_chunk.containsKey(c) ? map_chunk.get(c): 0) + 1);
map_machine.put(item.getID(), (map_machine.containsKey(item.getID()) ? map_machine.get(item.getID()): 0) + 1);
block_timings.put(l, System.currentTimeMillis() - timestamp3);
} catch (Exception x) {
int errors = 0;
if (bugged.containsKey(l)) errors = bugged.get(l);
errors++;
if (errors == 1) {
int try_count = 1;
File file = new File("plugins/Slimefun/error-reports/" + Clock.getFormattedTime() + ".err");
while (file.exists()) {
try_count += 1;
file = new File("plugins/Slimefun/error-reports/" + Clock.getFormattedTime() + "(" + try_count + ").err");
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
try {
long timestamp3 = System.currentTimeMillis();
item.getBlockTicker().tick(b, item, BlockStorage.getLocationInfo(l));
map_machinetime.put(item.getID(), (map_machinetime.containsKey(item.getID()) ? map_machinetime.get(item.getID()): 0) + (System.currentTimeMillis() - timestamp3));
map_chunk.put(c, (map_chunk.containsKey(c) ? map_chunk.get(c): 0) + 1);
map_machine.put(item.getID(), (map_machine.containsKey(item.getID()) ? map_machine.get(item.getID()): 0) + 1);
block_timings.put(l, System.currentTimeMillis() - timestamp3);
} catch (Exception x) {
int errors = 0;
if (bugged.containsKey(l)) errors = bugged.get(l);
errors++;
if (errors == 1) {
int try_count = 1;
File file = new File("plugins/Slimefun/error-reports/" + Clock.getFormattedTime() + ".err");
while (file.exists()) {
try_count += 1;
file = new File("plugins/Slimefun/error-reports/" + Clock.getFormattedTime() + "(" + try_count + ").err");
}
try {
PrintStream stream = new PrintStream(file);
stream.println();
stream.println("Server Software: " + Bukkit.getName());
stream.println(" Build: " + Bukkit.getVersion());
stream.println(" Minecraft: " + Bukkit.getBukkitVersion());
stream.println();
stream.println("Slimefun Environment:");
stream.println(" CS-CoreLib v" + CSCoreLib.getLib().getDescription().getVersion());
stream.println(" Slimefun v" + SlimefunStartup.instance.getDescription().getVersion());
stream.println();
List<String> plugins = new ArrayList<>();
List<String> addons = new ArrayList<>();
for (Plugin p: Bukkit.getPluginManager().getPlugins()) {
if (Bukkit.getPluginManager().isPluginEnabled(p)) {
plugins.add(" + " + p.getName() + " " + p.getDescription().getVersion());
if (p.getDescription().getDepend().contains("Slimefun") || p.getDescription().getSoftDepend().contains("Slimefun"))
addons.add(" + " + p.getName() + " " + p.getDescription().getVersion());
}
else {
plugins.add(" - " + p.getName() + " " + p.getDescription().getVersion());
if (p.getDescription().getDepend().contains("Slimefun") || p.getDescription().getSoftDepend().contains("Slimefun"))
addons.add(" - " + p.getName() + " " + p.getDescription().getVersion());
}
}
try {
PrintStream stream = new PrintStream(file);
stream.println();
stream.println("Server Software: " + Bukkit.getName());
stream.println(" Build: " + Bukkit.getVersion());
stream.println(" Minecraft: " + Bukkit.getBukkitVersion());
stream.println();
stream.println("Slimefun Environment:");
stream.println(" CS-CoreLib v" + CSCoreLib.getLib().getDescription().getVersion());
stream.println(" Slimefun v" + SlimefunStartup.instance.getDescription().getVersion());
stream.println();
List<String> plugins = new ArrayList<>();
List<String> addons = new ArrayList<>();
for (Plugin p: Bukkit.getPluginManager().getPlugins()) {
if (Bukkit.getPluginManager().isPluginEnabled(p)) {
plugins.add(" + " + p.getName() + " " + p.getDescription().getVersion());
if (p.getDescription().getDepend().contains("Slimefun") || p.getDescription().getSoftDepend().contains("Slimefun"))
addons.add(" + " + p.getName() + " " + p.getDescription().getVersion());
}
else {
plugins.add(" - " + p.getName() + " " + p.getDescription().getVersion());
if (p.getDescription().getDepend().contains("Slimefun") || p.getDescription().getSoftDepend().contains("Slimefun"))
addons.add(" - " + p.getName() + " " + p.getDescription().getVersion());
}
}
stream.println(" Installed Addons (" + addons.size() + ")");
for (String addon : addons) {
stream.println(addon);
}
stream.println();
stream.println("Installed Plugins (" + plugins.size() + "):");
for (String plugin : plugins) {
stream.println(plugin);
}
stream.println();
stream.println("Ticked Block:");
stream.println(" World: " + l.getWorld().getName());
stream.println(" X: " + l.getBlockX());
stream.println(" Y: " + l.getBlockY());
stream.println(" Z: " + l.getBlockZ());
stream.println();
stream.println("Slimefun Data:");
stream.println(" ID: " + item.getID());
stream.println(" Inventory: " + BlockStorage.getStorage(l.getWorld()).hasInventory(l));
stream.println(" Data: " + BlockStorage.getBlockInfoAsJson(l));
stream.println();
stream.println("Stacktrace:");
stream.println();
x.printStackTrace(stream);
stream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
stream.println(" Installed Addons (" + addons.size() + ")");
for (String addon : addons) {
stream.println(addon);
}
stream.println();
stream.println("Installed Plugins (" + plugins.size() + "):");
for (String plugin : plugins) {
stream.println(plugin);
}
stream.println();
stream.println("Ticked Block:");
stream.println(" World: " + l.getWorld().getName());
stream.println(" X: " + l.getBlockX());
stream.println(" Y: " + l.getBlockY());
stream.println(" Z: " + l.getBlockZ());
stream.println();
stream.println("Slimefun Data:");
stream.println(" ID: " + item.getID());
stream.println(" Inventory: " + BlockStorage.getStorage(l.getWorld()).hasInventory(l));
stream.println(" Data: " + BlockStorage.getBlockInfoAsJson(l));
stream.println();
stream.println("Stacktrace:");
stream.println();
x.printStackTrace(stream);
System.err.println("[Slimefun] Exception caught while ticking a Block:" + x.getClass().getName());
System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ());
System.err.println("[Slimefun] Saved as: ");
System.err.println("[Slimefun] /plugins/Slimefun/error-reports/" + file.getName());
System.err.println("[Slimefun] Please consider sending this File to the developer(s) of Slimefun, sending this Error won't get you any help though.");
System.err.println("[Slimefun] ");
bugged_blocks.put(l, errors);
}
else if (errors == 4) {
System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + "(" + item.getID() + ")");
System.err.println("[Slimefun] has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated.");
System.err.println("[Slimefun] Check your /plugins/Slimefun/error-reports/ folder for details.");
System.err.println("[Slimefun] ");
BlockStorage._integrated_removeBlockInfo(l, true);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
l.getBlock().setType(Material.AIR);
}
});
}
else {
bugged_blocks.put(l, errors);
stream.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
}
System.err.println("[Slimefun] Exception caught while ticking a Block:" + x.getClass().getName());
System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ());
System.err.println("[Slimefun] Saved as: ");
System.err.println("[Slimefun] /plugins/Slimefun/error-reports/" + file.getName());
System.err.println("[Slimefun] Please consider sending this File to the developer(s) of Slimefun, sending this Error won't get you any help though.");
System.err.println("[Slimefun] ");
bugged_blocks.put(l, errors);
}
else if (errors == 4) {
System.err.println("[Slimefun] X: " + l.getBlockX() + " Y: " + l.getBlockY() + " Z: " + l.getBlockZ() + "(" + item.getID() + ")");
System.err.println("[Slimefun] has thrown 4 Exceptions in the last 4 Ticks, the Block has been terminated.");
System.err.println("[Slimefun] Check your /plugins/Slimefun/error-reports/ folder for details.");
System.err.println("[Slimefun] ");
BlockStorage._integrated_removeBlockInfo(l, true);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
l.getBlock().setType(Material.AIR);
});
}
else {
bugged_blocks.put(l, errors);
}
}
});
@ -273,13 +264,8 @@ public class TickerTask implements Runnable {
BlockStorage._integrated_removeBlockInfo(l, true);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
l.getBlock().setType(Material.AIR);
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
l.getBlock().setType(Material.AIR);
});
}
else {
@ -300,7 +286,7 @@ public class TickerTask implements Runnable {
map_chunktime.put(c, System.currentTimeMillis() - timestamp2);
}
}
for (Map.Entry<Location, Location> entry: move.entrySet()) {
BlockStorage._integrated_moveLocationInfo(entry.getKey(), entry.getValue());
}

View File

@ -106,22 +106,18 @@ public class ChargableBlock {
}
private static void updateTexture(final Location l) throws Exception {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
try {
Block b = l.getBlock();
int charge = getCharge(b), capacity = getMaxCharge(b);
if (b.getState() instanceof Skull) {
if (charge < (int) (capacity * 0.25D)) CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ==");
else if (charge < (int) (capacity * 0.5D)) CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzA1MzIzMzk0YTdkOTFiZmIzM2RmMDZkOTJiNjNjYjQxNGVmODBmMDU0ZDA0NzM0ZWEwMTVhMjNjNTM5In19fQ==");
else if (charge < (int) (capacity * 0.75D)) CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19");
else CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2EyNTY5NDE1YzE0ZTMxYzk4ZWM5OTNhMmY5OWU2ZDY0ODQ2ZGIzNjdhMTNiMTk5OTY1YWQ5OWM0MzhjODZjIn19fQ==");
}
} catch (Exception e) {
e.printStackTrace();
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
try {
Block b = l.getBlock();
int charge = getCharge(b), capacity = getMaxCharge(b);
if (b.getState() instanceof Skull) {
if (charge < (int) (capacity * 0.25D)) CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvOTEzNjFlNTc2YjQ5M2NiZmRmYWUzMjg2NjFjZWRkMWFkZDU1ZmFiNGU1ZWI0MThiOTJjZWJmNjI3NWY4YmI0In19fQ==");
else if (charge < (int) (capacity * 0.5D)) CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMzA1MzIzMzk0YTdkOTFiZmIzM2RmMDZkOTJiNjNjYjQxNGVmODBmMDU0ZDA0NzM0ZWEwMTVhMjNjNTM5In19fQ==");
else if (charge < (int) (capacity * 0.75D)) CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTU4NDQzMmFmNmYzODIxNjcxMjAyNThkMWVlZThjODdjNmU3NWQ5ZTQ3OWU3YjBkNGM3YjZhZDQ4Y2ZlZWYifX19");
else CustomSkull.setSkull(b, "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvN2EyNTY5NDE1YzE0ZTMxYzk4ZWM5OTNhMmY5OWU2ZDY0ODQ2ZGIzNjdhMTNiMTk5OTY1YWQ5OWM0MzhjODZjIn19fQ==");
}
} catch (Exception e) {
e.printStackTrace();
}
});
}

View File

@ -148,13 +148,9 @@ public class EnergyNet extends Network {
if (item.getEnergyTicker().explode(source)) {
BlockStorage.clearBlockInfo(source);
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
source.getBlock().setType(Material.LAVA);
source.getWorld().createExplosion(source, 0F, false);
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
source.getBlock().setType(Material.LAVA);
source.getWorld().createExplosion(source, 0F, false);
});
}
else {

View File

@ -157,10 +157,8 @@ public abstract class BlockMenuPreset extends ChestMenu {
}
public void newInstance(final BlockMenu menu, final Location l) {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
public void run() {
newInstance(menu, l.getBlock());
}
Bukkit.getScheduler().runTask(SlimefunStartup.instance, () -> {
newInstance(menu, l.getBlock());
});
}

View File

@ -16,14 +16,12 @@ import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.block.data.Directional;
import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.InventoryHolder;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
import me.mrCookieSlime.Slimefun.SlimefunStartup;
@ -49,13 +47,7 @@ public class CargoNet extends Network {
private static final ChestTerminalSorter sorter = new ChestTerminalSorter();
public static final int[] terminal_slots = new int[] {0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 12, 13, 14, 15, 18, 19, 20, 21, 22, 23, 24, 27, 28, 29, 30, 31, 32, 33, 36, 37, 38, 39, 40, 41, 42};
private static final ItemStack terminal_noitem_item = new CustomItem(new ItemStack(Material.BARRIER), "&4No Item cached");
private static final MenuClickHandler terminal_noitem_handler = new MenuClickHandler() {
@Override
public boolean onClick(Player p, int slot, ItemStack stack, ClickAction action) {
return false;
}
};
private static final MenuClickHandler terminal_noitem_handler = (p, slot, item, action) -> false;
public static CargoNet getNetworkFromLocation(Location l) {
return getNetworkFromLocation(l, CargoNet.class);
@ -195,210 +187,246 @@ public class CargoNet extends Network {
CargoNet self = this;
final BlockStorage storage = BlockStorage.getStorage(b.getWorld());
SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
if (BlockStorage.getLocationInfo(b.getLocation(), "visualizer") == null) {
self.display();
}
//Chest Terminal Code
if (EXTRA_CHANNELS) {
for (Location bus : imports) {
BlockMenu menu = BlockStorage.getInventory(bus);
@Override
public void run() {
if (BlockStorage.getLocationInfo(b.getLocation(), "visualizer") == null) {
self.display();
if (menu.getItemInSlot(17) == null) {
Block target = getAttachedBlock(bus.getBlock());
ItemSlot stack = CargoManager.withdraw(bus.getBlock(), storage, target, -1);
if (stack != null) {
menu.replaceExistingItem(17, stack.getItem());
}
}
if (menu.getItemInSlot(17) != null) {
requests.add(new ItemRequest(bus, 17, menu.getItemInSlot(17), ItemTransportFlow.INSERT));
}
}
//Chest Terminal Code
if (EXTRA_CHANNELS) {
for (Location bus: imports) {
BlockMenu menu = BlockStorage.getInventory(bus);
if (menu.getItemInSlot(17) == null) {
Block target = getAttachedBlock(bus.getBlock());
ItemSlot stack = CargoManager.withdraw(bus.getBlock(), storage, target, -1);
for (Location bus : exports) {
BlockMenu menu = BlockStorage.getInventory(bus);
if (menu.getItemInSlot(17) != null) {
Block target = getAttachedBlock(bus.getBlock());
menu.replaceExistingItem(17, CargoManager.insert(bus.getBlock(), storage, target, menu.getItemInSlot(17), -1));
}
if (menu.getItemInSlot(17) == null) {
List<ItemStack> items = new ArrayList<ItemStack>();
for (int slot: slots) {
ItemStack template = menu.getItemInSlot(slot);
if (template != null) items.add(new CustomItem(template, 1));
}
if (!items.isEmpty()) {
int index = Integer.parseInt(BlockStorage.getLocationInfo(bus, "index"));
index++;
if (index > (items.size() - 1)) index = 0;
BlockStorage.addBlockInfo(bus, "index", String.valueOf(index));
requests.add(new ItemRequest(bus, 17, items.get(index), ItemTransportFlow.WITHDRAW));
}
}
}
Iterator<ItemRequest> iterator = requests.iterator();
while (iterator.hasNext()) {
ItemRequest request = iterator.next();
if (terminals.contains(request.getTerminal()) || imports.contains(request.getTerminal()) || exports.contains(request.getTerminal())) {
BlockMenu menu = BlockStorage.getInventory(request.getTerminal());
switch (request.getDirection()) {
case INSERT: {
ItemStack stack = request.getItem();
nodes:
for (Location l: destinations) {
Block target = getAttachedBlock(l.getBlock());
stack = CargoManager.insert(l.getBlock(), storage, target, stack, -1);
if (stack == null) {
menu.replaceExistingItem(request.getSlot(), null);
break nodes;
}
}
if (stack != null) {
menu.replaceExistingItem(17, stack.getItem());
}
}
if (menu.getItemInSlot(17) != null) {
requests.add(new ItemRequest(bus, 17, menu.getItemInSlot(17), ItemTransportFlow.INSERT));
}
}
for (Location bus: exports) {
BlockMenu menu = BlockStorage.getInventory(bus);
if (menu.getItemInSlot(17) != null) {
Block target = getAttachedBlock(bus.getBlock());
menu.replaceExistingItem(17, CargoManager.insert(bus.getBlock(), storage, target, menu.getItemInSlot(17), -1));
}
if (menu.getItemInSlot(17) == null) {
List<ItemStack> items = new ArrayList<ItemStack>();
for (int slot: slots) {
ItemStack template = menu.getItemInSlot(slot);
if (template != null) items.add(new CustomItem(template, 1));
menu.replaceExistingItem(request.getSlot(), stack);
}
if (!items.isEmpty()) {
int index = Integer.parseInt(BlockStorage.getLocationInfo(bus, "index"));
index++;
if (index > (items.size() - 1)) index = 0;
BlockStorage.addBlockInfo(bus, "index", String.valueOf(index));
requests.add(new ItemRequest(bus, 17, items.get(index), ItemTransportFlow.WITHDRAW));
}
iterator.remove();
break;
}
}
case WITHDRAW: {
int slot = request.getSlot();
ItemStack prevStack = menu.getItemInSlot(slot);
if (!(prevStack == null || (prevStack.getAmount() + request.getItem().getAmount() <= prevStack.getMaxStackSize() && SlimefunManager.isItemSimiliar(prevStack, new CustomItem(request.getItem(), 1), true, DataType.ALWAYS)))) {
iterator.remove();
break;
}
Iterator<ItemRequest> iterator = requests.iterator();
while (iterator.hasNext()) {
ItemRequest request = iterator.next();
if (terminals.contains(request.getTerminal()) || imports.contains(request.getTerminal()) || exports.contains(request.getTerminal())) {
BlockMenu menu = BlockStorage.getInventory(request.getTerminal());
switch (request.getDirection()) {
case INSERT: {
ItemStack stack = request.getItem();
nodes:
for (Location l: destinations) {
Block target = getAttachedBlock(l.getBlock());
stack = CargoManager.insert(l.getBlock(), storage, target, stack, -1);
ItemStack stack = null;
ItemStack requested = request.getItem();
nodes:
for (Location l : providers) {
Block target = getAttachedBlock(l.getBlock());
ItemStack is = CargoManager.withdraw(l.getBlock(), storage, target, requested);
if (is != null) {
if (stack == null) {
menu.replaceExistingItem(request.getSlot(), null);
stack = is;
}
else {
stack = new CustomItem(stack, stack.getAmount() + is.getAmount());
}
if (is.getAmount() == requested.getAmount()) {
break nodes;
}
else {
requested = new CustomItem(requested, requested.getAmount() - is.getAmount());
}
}
if (stack != null) {
menu.replaceExistingItem(request.getSlot(), stack);
}
iterator.remove();
break;
}
case WITHDRAW: {
int slot = request.getSlot();
ItemStack prevStack = menu.getItemInSlot(slot);
if (!(prevStack == null || (prevStack.getAmount() + request.getItem().getAmount() <= prevStack.getMaxStackSize() && SlimefunManager.isItemSimiliar(prevStack, new CustomItem(request.getItem(), 1), true, DataType.ALWAYS)))) {
iterator.remove();
break;
}
ItemStack stack = null;
ItemStack requested = request.getItem();
nodes:
for (Location l: providers) {
Block target = getAttachedBlock(l.getBlock());
ItemStack is = CargoManager.withdraw(l.getBlock(), storage, target, requested);
if (is != null) {
if (stack == null) {
stack = is;
}
else {
stack = new CustomItem(stack, stack.getAmount() + is.getAmount());
}
if (stack != null) {
ItemStack prev = menu.getItemInSlot(slot);
if (is.getAmount() == requested.getAmount()) {
break nodes;
}
else {
requested = new CustomItem(requested, requested.getAmount() - is.getAmount());
}
if (prev == null) menu.replaceExistingItem(slot, stack);
else menu.replaceExistingItem(slot, new CustomItem(stack, stack.getAmount() + prev.getAmount()));
}
iterator.remove();
break;
}
default: {
break;
}
}
}
}
}
// All operations happen here: Everything gets iterated from the Input Nodes. (Apart from ChestTerminal Buses)
for (Location input: inputNodes) {
Integer frequency = getFrequency(input);
if (frequency < 0 || frequency > 15) {
continue;
}
Block inputTarget = getAttachedBlock(input.getBlock());
ItemStack stack = null;
int previousSlot = -1;
boolean roundrobin = BlockStorage.getLocationInfo(input, "round-robin").equals("true");
if (inputTarget != null) {
ItemSlot slot = CargoManager.withdraw(input.getBlock(), storage, inputTarget, Integer.parseInt(BlockStorage.getLocationInfo(input, "index")));
if (slot != null) {
stack = slot.getItem();
previousSlot = slot.getSlot();
}
}
if (stack != null && output.containsKey(frequency)) {
List<Location> outputlist = new ArrayList<Location>(output.get(frequency));
if (roundrobin) {
if (!round_robin.containsKey(input)) {
round_robin.put(input, 0);
}
int c_index = round_robin.get(input);
if (c_index < outputlist.size()) {
for (int i = 0; i < c_index; i++) {
final Location temp = outputlist.get(0);
outputlist.remove(temp);
outputlist.add(temp);
}
c_index++;
}
else c_index = 1;
round_robin.put(input, c_index);
}
destinations:
for (Location out : outputlist) {
Block target = getAttachedBlock(out.getBlock());
if (target != null) {
stack = CargoManager.insert(out.getBlock(), storage, target, stack, -1);
if (stack == null) break destinations;
}
}
}
if (stack != null && previousSlot > -1) {
if (storage.hasUniversalInventory(inputTarget)) {
UniversalBlockMenu menu = storage.getUniversalInventory(inputTarget);
menu.replaceExistingItem(previousSlot, stack);
}
else if (storage.hasInventory(inputTarget.getLocation())) {
BlockMenu menu = BlockStorage.getInventory(inputTarget.getLocation());
menu.replaceExistingItem(previousSlot, stack);
}
else if (inputTarget.getState() instanceof InventoryHolder) {
Inventory inv = ((InventoryHolder) inputTarget.getState()).getInventory();
inv.setItem(previousSlot, stack);
}
}
}
//Chest Terminal Code
if (EXTRA_CHANNELS) {
List<StoredItem> items = new ArrayList<StoredItem>();
for (Location l: providers) {
Block target = getAttachedBlock(l.getBlock());
if (storage.hasUniversalInventory(target)) {
UniversalBlockMenu menu = storage.getUniversalInventory(target);
for (int slot: menu.getPreset().getSlotsAccessedByItemTransport(menu, ItemTransportFlow.WITHDRAW, null)) {
ItemStack is = menu.getItemInSlot(slot);
if (is != null && CargoManager.matchesFilter(l.getBlock(), is, -1)) {
boolean add = true;
for (StoredItem item: items) {
if (SlimefunManager.isItemSimiliar(is, item.getItem(), true, DataType.ALWAYS)) {
add = false;
item.add(is.getAmount());
}
}
if (stack != null) {
ItemStack prev = menu.getItemInSlot(slot);
if (prev == null) menu.replaceExistingItem(slot, stack);
else menu.replaceExistingItem(slot, new CustomItem(stack, stack.getAmount() + prev.getAmount()));
if (add) {
items.add(new StoredItem(new CustomItem(is, 1), is.getAmount()));
}
iterator.remove();
break;
}
default: {
break;
}
}
}
}
}
// All operations happen here: Everything gets iterated from the Input Nodes. (Apart from ChestTerminal Buses)
for (Location input: inputNodes) {
Integer frequency = getFrequency(input);
if (frequency < 0 || frequency > 15) {
continue;
}
Block inputTarget = getAttachedBlock(input.getBlock());
ItemStack stack = null;
int previousSlot = -1;
else if (storage.hasInventory(target.getLocation())) {
BlockMenu menu = BlockStorage.getInventory(target.getLocation());
if (BlockStorage.checkID(target.getLocation()).startsWith("BARREL_") && BlockStorage.getLocationInfo(target.getLocation(), "storedItems") != null) {
int stored = Integer.valueOf(BlockStorage.getLocationInfo(target.getLocation(), "storedItems"));
for (int slot: menu.getPreset().getSlotsAccessedByItemTransport(menu, ItemTransportFlow.WITHDRAW, null)) {
ItemStack is = menu.getItemInSlot(slot);
if (is != null && CargoManager.matchesFilter(l.getBlock(), is, -1)) {
boolean add = true;
for (StoredItem item: items) {
if (SlimefunManager.isItemSimiliar(is, item.getItem(), true, DataType.ALWAYS)) {
add = false;
item.add(is.getAmount() + stored);
}
}
boolean roundrobin = BlockStorage.getLocationInfo(input, "round-robin").equals("true");
if (inputTarget != null) {
ItemSlot slot = CargoManager.withdraw(input.getBlock(), storage, inputTarget, Integer.parseInt(BlockStorage.getLocationInfo(input, "index")));
if (slot != null) {
stack = slot.getItem();
previousSlot = slot.getSlot();
}
}
if (stack != null && output.containsKey(frequency)) {
List<Location> outputlist = new ArrayList<Location>(output.get(frequency));
if (roundrobin) {
if (!round_robin.containsKey(input)) {
round_robin.put(input, 0);
}
int c_index = round_robin.get(input);
if (c_index < outputlist.size()) {
for (int i = 0; i < c_index; i++) {
final Location temp = outputlist.get(0);
outputlist.remove(temp);
outputlist.add(temp);
if (add) {
items.add(new StoredItem(new CustomItem(is, 1), is.getAmount() + stored));
}
}
c_index++;
}
else c_index = 1;
round_robin.put(input, c_index);
}
destinations:
for (Location out: outputlist) {
Block target = getAttachedBlock(out.getBlock());
if (target != null) {
stack = CargoManager.insert(out.getBlock(), storage, target, stack, -1);
if (stack == null) break destinations;
}
}
}
if (stack != null && previousSlot > -1) {
if (storage.hasUniversalInventory(inputTarget)) {
UniversalBlockMenu menu = storage.getUniversalInventory(inputTarget);
menu.replaceExistingItem(previousSlot, stack);
}
else if (storage.hasInventory(inputTarget.getLocation())) {
BlockMenu menu = BlockStorage.getInventory(inputTarget.getLocation());
menu.replaceExistingItem(previousSlot, stack);
}
else if (inputTarget.getState() instanceof InventoryHolder) {
Inventory inv = ((InventoryHolder) inputTarget.getState()).getInventory();
inv.setItem(previousSlot, stack);
}
}
}
//Chest Terminal Code
if (EXTRA_CHANNELS) {
List<StoredItem> items = new ArrayList<StoredItem>();
for (Location l: providers) {
Block target = getAttachedBlock(l.getBlock());
if (storage.hasUniversalInventory(target)) {
UniversalBlockMenu menu = storage.getUniversalInventory(target);
else {
for (int slot: menu.getPreset().getSlotsAccessedByItemTransport(menu, ItemTransportFlow.WITHDRAW, null)) {
ItemStack is = menu.getItemInSlot(slot);
if (is != null && CargoManager.matchesFilter(l.getBlock(), is, -1)) {
@ -416,120 +444,75 @@ public class CargoNet extends Network {
}
}
}
else if (storage.hasInventory(target.getLocation())) {
BlockMenu menu = BlockStorage.getInventory(target.getLocation());
if (BlockStorage.checkID(target.getLocation()).startsWith("BARREL_") && BlockStorage.getLocationInfo(target.getLocation(), "storedItems") != null) {
int stored = Integer.valueOf(BlockStorage.getLocationInfo(target.getLocation(), "storedItems"));
for (int slot: menu.getPreset().getSlotsAccessedByItemTransport(menu, ItemTransportFlow.WITHDRAW, null)) {
ItemStack is = menu.getItemInSlot(slot);
if (is != null && CargoManager.matchesFilter(l.getBlock(), is, -1)) {
boolean add = true;
for (StoredItem item: items) {
if (SlimefunManager.isItemSimiliar(is, item.getItem(), true, DataType.ALWAYS)) {
add = false;
item.add(is.getAmount() + stored);
}
}
if (add) {
items.add(new StoredItem(new CustomItem(is, 1), is.getAmount() + stored));
}
}
}
}
else {
for (int slot: menu.getPreset().getSlotsAccessedByItemTransport(menu, ItemTransportFlow.WITHDRAW, null)) {
ItemStack is = menu.getItemInSlot(slot);
if (is != null && CargoManager.matchesFilter(l.getBlock(), is, -1)) {
boolean add = true;
for (StoredItem item: items) {
if (SlimefunManager.isItemSimiliar(is, item.getItem(), true, DataType.ALWAYS)) {
add = false;
item.add(is.getAmount());
}
}
if (add) {
items.add(new StoredItem(new CustomItem(is, 1), is.getAmount()));
}
}
}
}
}
else if (target.getState() instanceof InventoryHolder) {
Inventory inv = ((InventoryHolder) target.getState()).getInventory();
for (ItemStack is: inv.getContents()) {
if (is != null && CargoManager.matchesFilter(l.getBlock(), is, -1)) {
boolean add = true;
for (StoredItem item: items) {
if (SlimefunManager.isItemSimiliar(is, item.getItem(), true, DataType.ALWAYS)) {
add = false;
item.add(is.getAmount());
}
}
if (add) {
items.add(new StoredItem(new CustomItem(is, 1), is.getAmount()));
}
}
}
}
}
Collections.sort(items, sorter);
for (final Location l: terminals) {
BlockMenu menu = BlockStorage.getInventory(l);
int page = Integer.parseInt(BlockStorage.getLocationInfo(l, "page"));
if (!items.isEmpty() && items.size() < (page - 1) * terminal_slots.length + 1) {
page = 1;
BlockStorage.addBlockInfo(l, "page", String.valueOf(1));
}
for (int i = 0; i < terminal_slots.length; i++) {
int slot = terminal_slots[i];
if (items.size() > i + (terminal_slots.length * (page - 1))) {
final StoredItem item = items.get(i + (terminal_slots.length * (page - 1)));
ItemStack stack = item.getItem().clone();
ItemMeta im = stack.getItemMeta();
List<String> lore = new ArrayList<String>();
lore.add("");
lore.add(ChatColor.translateAlternateColorCodes('&', "&7Stored Items: &r" + DoubleHandler.getFancyDouble(item.getAmount())));
if (stack.getMaxStackSize() > 1) lore.add(ChatColor.translateAlternateColorCodes('&', "&7<Left Click: Request 1 | Right Click: Request " + (item.getAmount() > stack.getMaxStackSize() ? stack.getMaxStackSize(): item.getAmount()) + ">"));
else lore.add(ChatColor.translateAlternateColorCodes('&', "&7<Left Click: Request 1>"));
lore.add("");
if (im.hasLore()) {
for (String line: im.getLore()) {
lore.add(line);
else if (target.getState() instanceof InventoryHolder) {
Inventory inv = ((InventoryHolder) target.getState()).getInventory();
for (ItemStack is: inv.getContents()) {
if (is != null && CargoManager.matchesFilter(l.getBlock(), is, -1)) {
boolean add = true;
for (StoredItem item: items) {
if (SlimefunManager.isItemSimiliar(is, item.getItem(), true, DataType.ALWAYS)) {
add = false;
item.add(is.getAmount());
}
}
im.setLore(lore);
stack.setItemMeta(im);
menu.replaceExistingItem(slot, stack);
menu.addMenuClickHandler(slot, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int slot, ItemStack is, ClickAction action) {
requests.add(new ItemRequest(l, 44, new CustomItem(item.getItem(), action.isRightClicked() ? (item.getAmount() > item.getItem().getMaxStackSize() ? item.getItem().getMaxStackSize(): item.getAmount()): 1), ItemTransportFlow.WITHDRAW));
return false;
}
});
if (add) {
items.add(new StoredItem(new CustomItem(is, 1), is.getAmount()));
}
}
else {
menu.replaceExistingItem(slot, terminal_noitem_item);
menu.addMenuClickHandler(slot, terminal_noitem_handler);
}
}
ItemStack sent_item = menu.getItemInSlot(17);
if (sent_item != null) {
requests.add(new ItemRequest(l, 17, sent_item, ItemTransportFlow.INSERT));
}
}
}
Collections.sort(items, sorter);
for (final Location l: terminals) {
BlockMenu menu = BlockStorage.getInventory(l);
int page = Integer.parseInt(BlockStorage.getLocationInfo(l, "page"));
if (!items.isEmpty() && items.size() < (page - 1) * terminal_slots.length + 1) {
page = 1;
BlockStorage.addBlockInfo(l, "page", String.valueOf(1));
}
for (int i = 0; i < terminal_slots.length; i++) {
int slot = terminal_slots[i];
if (items.size() > i + (terminal_slots.length * (page - 1))) {
final StoredItem item = items.get(i + (terminal_slots.length * (page - 1)));
ItemStack stack = item.getItem().clone();
ItemMeta im = stack.getItemMeta();
List<String> lore = new ArrayList<String>();
lore.add("");
lore.add(ChatColor.translateAlternateColorCodes('&', "&7Stored Items: &r" + DoubleHandler.getFancyDouble(item.getAmount())));
if (stack.getMaxStackSize() > 1) lore.add(ChatColor.translateAlternateColorCodes('&', "&7<Left Click: Request 1 | Right Click: Request " + (item.getAmount() > stack.getMaxStackSize() ? stack.getMaxStackSize(): item.getAmount()) + ">"));
else lore.add(ChatColor.translateAlternateColorCodes('&', "&7<Left Click: Request 1>"));
lore.add("");
if (im.hasLore()) {
for (String line: im.getLore()) {
lore.add(line);
}
}
im.setLore(lore);
stack.setItemMeta(im);
menu.replaceExistingItem(slot, stack);
menu.addMenuClickHandler(slot, (p, sl, is, action) -> {
requests.add(new ItemRequest(l, 44, new CustomItem(item.getItem(), action.isRightClicked() ? (item.getAmount() > item.getItem().getMaxStackSize() ? item.getItem().getMaxStackSize(): item.getAmount()): 1), ItemTransportFlow.WITHDRAW));
return false;
});
}
else {
menu.replaceExistingItem(slot, terminal_noitem_item);
menu.addMenuClickHandler(slot, terminal_noitem_handler);
}
}
ItemStack sent_item = menu.getItemInSlot(17);
if (sent_item != null) {
requests.add(new ItemRequest(l, 17, sent_item, ItemTransportFlow.INSERT));
}
}
}
});
}
@ -549,4 +532,5 @@ public class CargoNet extends Network {
} catch (Exception e) {}
return freq;
}
}

View File

@ -13,13 +13,9 @@ import me.mrCookieSlime.Slimefun.SlimefunStartup;
public class CargoHologram {
public static void update(final Block b, final String name) {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
ArmorStand hologram = getArmorStand(b);
hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', name));
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
ArmorStand hologram = getArmorStand(b);
hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', name));
});
}
@ -31,7 +27,7 @@ public class CargoHologram {
private static ArmorStand getArmorStand(Block b) {
Location l = new Location(b.getWorld(), b.getX() + 0.5, b.getY() - 0.7F, b.getZ() + 0.5);
for (Entity n: l.getChunk().getEntities()) {
for (Entity n : l.getChunk().getEntities()) {
if (n instanceof ArmorStand) {
if (n.getCustomName() != null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n;
}

View File

@ -18,31 +18,23 @@ public class EnergyHologram {
}
public static void update(final Block b, final String name) {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
ArmorStand hologram = getArmorStand(b);
hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', name));
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
ArmorStand hologram = getArmorStand(b);
hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', name));
});
}
public static void remove(final Block b) {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
ArmorStand hologram = getArmorStand(b);
hologram.remove();
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
ArmorStand hologram = getArmorStand(b);
hologram.remove();
});
}
private static ArmorStand getArmorStand(Block b) {
Location l = new Location(b.getWorld(), b.getX() + 0.5, b.getY() - 0.7F, b.getZ() + 0.5);
for (Entity n: l.getChunk().getEntities()) {
for (Entity n : l.getChunk().getEntities()) {
if (n instanceof ArmorStand) {
if (n.getCustomName() != null && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n;
}

View File

@ -10,10 +10,7 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu.MenuClickHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ClickAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.MenuHelper.ChatHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.ArmorStandFactory;
@ -27,7 +24,7 @@ public class Projector {
double offset = Double.valueOf(BlockStorage.getLocationInfo(projector.getLocation(), "offset"));
Location l = new Location(projector.getWorld(), projector.getX() + 0.5, projector.getY() + offset, projector.getZ() + 0.5);
for (Entity n: l.getChunk().getEntities()) {
for (Entity n : l.getChunk().getEntities()) {
if (n instanceof ArmorStand) {
if (n.getCustomName() != null && n.getCustomName().equals(nametag) && l.distanceSquared(n.getLocation()) < 0.4D) return (ArmorStand) n;
}
@ -42,40 +39,28 @@ public class Projector {
ChestMenu menu = new ChestMenu("Hologram Settings");
menu.addItem(0, new CustomItem(new ItemStack(Material.NAME_TAG), "&7Text &e(Click to edit)", "", "&r" + ChatColor.translateAlternateColorCodes('&', BlockStorage.getLocationInfo(projector.getLocation(), "text"))));
menu.addMenuClickHandler(0, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
p.closeInventory();
Messages.local.sendTranslation(p, "machines.HOLOGRAM_PROJECTOR.enter-text", true);
MenuHelper.awaitChatInput(p, new ChatHandler() {
@Override
public boolean onChat(Player p, String message) {
ArmorStand hologram = getArmorStand(projector);
hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', message));
BlockStorage.addBlockInfo(projector, "text", message);
openEditor(p, projector);
return false;
}
});
menu.addMenuClickHandler(0, (pl, slot, item, action) -> {
pl.closeInventory();
Messages.local.sendTranslation(pl, "machines.HOLOGRAM_PROJECTOR.enter-text", true);
MenuHelper.awaitChatInput(pl, (player, message) -> {
ArmorStand hologram = getArmorStand(projector);
hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', message));
BlockStorage.addBlockInfo(projector, "text", message);
openEditor(player, projector);
return false;
}
});
return false;
});
menu.addItem(1, new CustomItem(new ItemStack(Material.CLOCK), "&7Offset: &e" + DoubleHandler.fixDouble(Double.valueOf(BlockStorage.getLocationInfo(projector.getLocation(), "offset")) + 1.0D), "", "&rLeft Click: &7+0.1", "&rRight Click: &7-0.1"));
menu.addMenuClickHandler(1, new MenuClickHandler() {
@Override
public boolean onClick(Player p, int arg1, ItemStack arg2, ClickAction arg3) {
double offset = DoubleHandler.fixDouble(Double.valueOf(BlockStorage.getLocationInfo(projector.getLocation(), "offset")) + (arg3.isRightClicked() ? -0.1F: 0.1F));
ArmorStand hologram = getArmorStand(projector);
Location l = new Location(projector.getWorld(), projector.getX() + 0.5, projector.getY() + offset, projector.getZ() + 0.5);
hologram.teleport(l);
BlockStorage.addBlockInfo(projector, "offset", String.valueOf(offset));
openEditor(p, projector);
return false;
}
menu.addMenuClickHandler(1, (pl, slot, item, action) -> {
double offset = DoubleHandler.fixDouble(Double.valueOf(BlockStorage.getLocationInfo(projector.getLocation(), "offset")) + (action.isRightClicked() ? -0.1F : 0.1F));
ArmorStand hologram = getArmorStand(projector);
Location l = new Location(projector.getWorld(), projector.getX() + 0.5, projector.getY() + offset, projector.getZ() + 0.5);
hologram.teleport(l);
BlockStorage.addBlockInfo(projector, "offset", String.valueOf(offset));
openEditor(pl, projector);
return false;
});
menu.open(p);

View File

@ -28,14 +28,10 @@ public class ReactorHologram {
}
public static void update(final Location l, final String name) {
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
ArmorStand hologram = getArmorStand(l);
if (!hologram.isCustomNameVisible()) hologram.setCustomNameVisible(true);
hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', name));
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
ArmorStand hologram = getArmorStand(l);
if (!hologram.isCustomNameVisible()) hologram.setCustomNameVisible(true);
hologram.setCustomName(ChatColor.translateAlternateColorCodes('&', name));
});
}

View File

@ -6,18 +6,6 @@ import java.util.List;
import java.util.Set;
import java.util.UUID;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Variable;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils;
import me.mrCookieSlime.Slimefun.SlimefunStartup;
import me.mrCookieSlime.Slimefun.AncientAltar.Pedestals;
import me.mrCookieSlime.Slimefun.AncientAltar.RitualAnimation;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Setup.Messages;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.Variables;
import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.Sound;
@ -36,6 +24,18 @@ import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.metadata.FixedMetadataValue;
import org.bukkit.util.Vector;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Variable;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.Player.PlayerInventory;
import me.mrCookieSlime.CSCoreLibPlugin.general.String.StringUtils;
import me.mrCookieSlime.Slimefun.SlimefunStartup;
import me.mrCookieSlime.Slimefun.AncientAltar.Pedestals;
import me.mrCookieSlime.Slimefun.AncientAltar.RitualAnimation;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
import me.mrCookieSlime.Slimefun.Setup.Messages;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
import me.mrCookieSlime.Slimefun.Variables;
public class AncientAltarListener implements Listener {
public AncientAltarListener(SlimefunStartup plugin) {
@ -45,7 +45,7 @@ public class AncientAltarListener implements Listener {
List<Block> altars = new ArrayList<Block>();
Set<UUID> removed_items = new HashSet<UUID>();
@EventHandler(priority=EventPriority.HIGH, ignoreCancelled = true)
@EventHandler(priority = EventPriority.HIGH, ignoreCancelled = true)
public void onInteract(PlayerInteractEvent e) {
if (e.getAction() != Action.RIGHT_CLICK_BLOCK) return;
Block b = e.getClickedBlock();
@ -70,12 +70,8 @@ public class AncientAltarListener implements Listener {
final UUID uuid = stack.getUniqueId();
removed_items.add(uuid);
SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
removed_items.remove(uuid);
}
SlimefunStartup.instance.getServer().getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
removed_items.remove(uuid);
}, 30L);
stack.remove();
@ -180,7 +176,7 @@ public class AncientAltarListener implements Listener {
}
}
@EventHandler (priority = EventPriority.HIGHEST, ignoreCancelled = true)
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onBlockPlace(BlockPlaceEvent e) {
Block b = e.getBlockPlaced().getRelative(0, -1, 0);
SlimefunItem item = BlockStorage.check(b);
@ -190,4 +186,5 @@ public class AncientAltarListener implements Listener {
e.setCancelled(true);
}
}
}

View File

@ -26,24 +26,21 @@ public class AndroidKillingListener implements Listener {
plugin.getServer().getPluginManager().registerEvents(this, plugin);
}
@EventHandler(priority=EventPriority.HIGHEST)
@EventHandler(priority = EventPriority.HIGHEST)
public void onDeath(final EntityDeathEvent e) {
if (e.getEntity().hasMetadata("android_killer")) {
for (MetadataValue value: e.getEntity().getMetadata("android_killer")) {
final AndroidObject obj = (AndroidObject) value.value();
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
List<ItemStack> items = new ArrayList<ItemStack>();
for (Entity n: e.getEntity().getNearbyEntities(0.5D, 0.5D, 0.5D)) {
if (n instanceof Item && !n.hasMetadata("no_pickup")) {
items.add(((Item) n).getItemStack());
n.remove();
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
List<ItemStack> items = new ArrayList<ItemStack>();
for (Entity n : e.getEntity().getNearbyEntities(0.5D, 0.5D, 0.5D)) {
if (n instanceof Item && !n.hasMetadata("no_pickup")) {
items.add(((Item) n).getItemStack());
n.remove();
}
switch (e.getEntityType()) {
}
switch (e.getEntityType()) {
case BLAZE: {
items.add(new ItemStack(Material.BLAZE_ROD, 1 + CSCoreLib.randomizer().nextInt(2)));
break;
@ -58,12 +55,11 @@ public class AndroidKillingListener implements Listener {
}
default:
break;
}
obj.getAndroid().addItems(obj.getBlock(), items.toArray(new ItemStack[items.size()]));
ExperienceOrb exp = (ExperienceOrb) e.getEntity().getWorld().spawnEntity(e.getEntity().getLocation(), EntityType.EXPERIENCE_ORB);
exp.setExperience(1 + CSCoreLib.randomizer().nextInt(6));
}
obj.getAndroid().addItems(obj.getBlock(), items.toArray(new ItemStack[items.size()]));
ExperienceOrb exp = (ExperienceOrb) e.getEntity().getWorld().spawnEntity(e.getEntity().getLocation(), EntityType.EXPERIENCE_ORB);
exp.setExperience(1 + CSCoreLib.randomizer().nextInt(6));
}, 1L);
return;
}

View File

@ -84,13 +84,9 @@ public class BowListener implements Listener {
n.remove();
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
Variables.jump.remove(p.getUniqueId());
Variables.remove.remove(p.getUniqueId());
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
Variables.jump.remove(p.getUniqueId());
Variables.remove.remove(p.getUniqueId());
}, 20L);
}
}

View File

@ -204,7 +204,13 @@ public class ItemListener implements Listener {
for (ItemHandler handler : SlimefunItem.getHandlers("ItemInteractionHandler")) {
if (((ItemInteractionHandler) handler).onRightClick(e, p, item)) return;
}
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.DURALUMIN_MULTI_TOOL, false) || SlimefunManager.isItemSimiliar(item, SlimefunItems.SOLDER_MULTI_TOOL, false) || SlimefunManager.isItemSimiliar(item, SlimefunItems.BILLON_MULTI_TOOL, false) || SlimefunManager.isItemSimiliar(item, SlimefunItems.STEEL_MULTI_TOOL, false) || SlimefunManager.isItemSimiliar(item, SlimefunItems.DAMASCUS_STEEL_MULTI_TOOL, false) || SlimefunManager.isItemSimiliar(item, SlimefunItems.REINFORCED_ALLOY_MULTI_TOOL, false) || SlimefunManager.isItemSimiliar(item, SlimefunItems.CARBONADO_MULTI_TOOL, false)) {
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.DURALUMIN_MULTI_TOOL, false)
|| SlimefunManager.isItemSimiliar(item, SlimefunItems.SOLDER_MULTI_TOOL, false)
|| SlimefunManager.isItemSimiliar(item, SlimefunItems.BILLON_MULTI_TOOL, false)
|| SlimefunManager.isItemSimiliar(item, SlimefunItems.STEEL_MULTI_TOOL, false)
|| SlimefunManager.isItemSimiliar(item, SlimefunItems.DAMASCUS_STEEL_MULTI_TOOL, false)
|| SlimefunManager.isItemSimiliar(item, SlimefunItems.REINFORCED_ALLOY_MULTI_TOOL, false)
|| SlimefunManager.isItemSimiliar(item, SlimefunItems.CARBONADO_MULTI_TOOL, false)) {
e.setCancelled(true);
ItemStack tool = null;
for (ItemStack mTool : new ItemStack[] {SlimefunItems.DURALUMIN_MULTI_TOOL, SlimefunItems.SOLDER_MULTI_TOOL, SlimefunItems.BILLON_MULTI_TOOL, SlimefunItems.STEEL_MULTI_TOOL, SlimefunItems.DAMASCUS_STEEL_MULTI_TOOL, SlimefunItems.REINFORCED_ALLOY_MULTI_TOOL, SlimefunItems.CARBONADO_MULTI_TOOL}) {
@ -329,15 +335,10 @@ public class ItemListener implements Listener {
// Remove the glass bottle once drunk
final int m = mode;
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, new Runnable() {
@Override
public void run() {
if (m == 0) p.getEquipment().setItemInMainHand(null);
else if (m == 1) p.getEquipment().setItemInOffHand(null);
else if (m == 2) p.getInventory().removeItem(new ItemStack(Material.GLASS_BOTTLE, 1));
}
Bukkit.getScheduler().scheduleSyncDelayedTask(SlimefunStartup.instance, () -> {
if (m == 0) p.getEquipment().setItemInMainHand(null);
else if (m == 1) p.getEquipment().setItemInOffHand(null);
else if (m == 2) p.getInventory().removeItem(new ItemStack(Material.GLASS_BOTTLE, 1));
}, 0L);
}
}