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

Merge pull request #3603 from Sefiraat/java16

Java16 Sonar Changes
This commit is contained in:
TheBusyBiscuit 2022-07-03 12:02:28 +02:00 committed by GitHub
commit 261bc443e9
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
107 changed files with 522 additions and 657 deletions

View File

@ -111,8 +111,8 @@ public class GPSNetwork {
for (Location l : locations) { for (Location l : locations) {
SlimefunItem item = BlockStorage.check(l); SlimefunItem item = BlockStorage.check(l);
if (item instanceof GPSTransmitter) { if (item instanceof GPSTransmitter transmitter) {
level += ((GPSTransmitter) item).getMultiplier(Math.max(l.getBlockY(), 0)); level += transmitter.getMultiplier(Math.max(l.getBlockY(), 0));
} }
} }
@ -172,10 +172,10 @@ public class GPSNetwork {
SlimefunItem sfi = BlockStorage.check(l); SlimefunItem sfi = BlockStorage.check(l);
if (sfi instanceof GPSTransmitter) { if (sfi instanceof GPSTransmitter transmitter) {
int slot = inventory[index]; int slot = inventory[index];
menu.addItem(slot, new CustomItemStack(SlimefunItems.GPS_TRANSMITTER, "&bGPS Transmitter", "&8\u21E8 &7World: &f" + l.getWorld().getName(), "&8\u21E8 &7X: &f" + l.getX(), "&8\u21E8 &7Y: &f" + l.getY(), "&8\u21E8 &7Z: &f" + l.getZ(), "", "&8\u21E8 &7Signal Strength: &f" + ((GPSTransmitter) sfi).getMultiplier(l.getBlockY()), "&8\u21E8 &7Ping: &f" + NumberUtils.roundDecimalNumber(1000D / l.getY()) + "ms")); menu.addItem(slot, new CustomItemStack(SlimefunItems.GPS_TRANSMITTER, "&bGPS Transmitter", "&8\u21E8 &7World: &f" + l.getWorld().getName(), "&8\u21E8 &7X: &f" + l.getX(), "&8\u21E8 &7Y: &f" + l.getY(), "&8\u21E8 &7Z: &f" + l.getZ(), "", "&8\u21E8 &7Signal Strength: &f" + transmitter.getMultiplier(l.getBlockY()), "&8\u21E8 &7Ping: &f" + NumberUtils.roundDecimalNumber(1000D / l.getY()) + "ms"));
menu.addMenuClickHandler(slot, ChestMenuUtils.getEmptyClickHandler()); menu.addMenuClickHandler(slot, ChestMenuUtils.getEmptyClickHandler());
index++; index++;

View File

@ -61,8 +61,8 @@ public final class HashedArmorpiece {
this.hash = copy.hashCode(); this.hash = copy.hashCode();
} }
if (item instanceof SlimefunArmorPiece) { if (item instanceof SlimefunArmorPiece armorPiece) {
this.item = Optional.of((SlimefunArmorPiece) item); this.item = Optional.of(armorPiece);
} else { } else {
this.item = Optional.empty(); this.item = Optional.empty();
} }

View File

@ -128,12 +128,12 @@ public class SlimefunItemStack extends ItemStack {
im.setLore(lines); im.setLore(lines);
} }
if (im instanceof LeatherArmorMeta) { if (im instanceof LeatherArmorMeta leatherArmorMeta) {
((LeatherArmorMeta) im).setColor(color); leatherArmorMeta.setColor(color);
} }
if (im instanceof PotionMeta) { if (im instanceof PotionMeta potionMeta) {
((PotionMeta) im).setColor(color); potionMeta.setColor(color);
} }
}); });
} }
@ -154,9 +154,9 @@ public class SlimefunItemStack extends ItemStack {
im.setLore(lines); im.setLore(lines);
} }
if (im instanceof PotionMeta) { if (im instanceof PotionMeta potionMeta) {
((PotionMeta) im).setColor(color); potionMeta.setColor(color);
((PotionMeta) im).addCustomEffect(effect, true); potionMeta.addCustomEffect(effect, true);
if (effect.getType().equals(PotionEffectType.SATURATION)) { if (effect.getType().equals(PotionEffectType.SATURATION)) {
im.addItemFlags(ItemFlag.HIDE_POTION_EFFECTS); im.addItemFlags(ItemFlag.HIDE_POTION_EFFECTS);

View File

@ -487,9 +487,7 @@ public class PlayerProfile {
if (!armorPiece.isPresent()) { if (!armorPiece.isPresent()) {
setId = null; setId = null;
} else if (armorPiece.get() instanceof ProtectiveArmor) { } else if (armorPiece.get() instanceof ProtectiveArmor protectedArmor) {
ProtectiveArmor protectedArmor = (ProtectiveArmor) armorPiece.get();
if (setId == null && protectedArmor.isFullSetRequired()) { if (setId == null && protectedArmor.isFullSetRequired()) {
setId = protectedArmor.getArmorSetId(); setId = protectedArmor.getArmorSetId();
} }

View File

@ -99,8 +99,8 @@ public class RecipeType implements Keyed {
this.key = key; this.key = key;
this.consumer = callback; this.consumer = callback;
if (item instanceof SlimefunItemStack) { if (item instanceof SlimefunItemStack slimefunItemStack) {
this.machine = ((SlimefunItemStack) item).getItemId(); this.machine = slimefunItemStack.getItemId();
} else { } else {
this.machine = ""; this.machine = "";
} }
@ -109,7 +109,7 @@ public class RecipeType implements Keyed {
public RecipeType(NamespacedKey key, ItemStack item) { public RecipeType(NamespacedKey key, ItemStack item) {
this.key = key; this.key = key;
this.item = item; this.item = item;
this.machine = item instanceof SlimefunItemStack ? ((SlimefunItemStack) item).getItemId() : ""; this.machine = item instanceof SlimefunItemStack slimefunItemStack ? slimefunItemStack.getItemId() : "";
} }
public RecipeType(MinecraftRecipe<?> recipe) { public RecipeType(MinecraftRecipe<?> recipe) {
@ -124,8 +124,8 @@ public class RecipeType implements Keyed {
} else { } else {
SlimefunItem slimefunItem = SlimefunItem.getById(this.machine); SlimefunItem slimefunItem = SlimefunItem.getById(this.machine);
if (slimefunItem instanceof MultiBlockMachine) { if (slimefunItem instanceof MultiBlockMachine mbm) {
((MultiBlockMachine) slimefunItem).addRecipe(recipe, result); mbm.addRecipe(recipe, result);
} }
} }
} }
@ -149,8 +149,8 @@ public class RecipeType implements Keyed {
@Override @Override
public final boolean equals(Object obj) { public final boolean equals(Object obj) {
if (obj instanceof RecipeType) { if (obj instanceof RecipeType recipeType) {
return ((RecipeType) obj).getKey().equals(this.getKey()); return recipeType.getKey().equals(this.getKey());
} else { } else {
return false; return false;
} }

View File

@ -80,10 +80,9 @@ public abstract class SubCommand {
* *
* @return A possibly localized description of this {@link SubCommand} * @return A possibly localized description of this {@link SubCommand}
*/ */
@Nonnull public @Nonnull String getDescription(@Nonnull CommandSender sender) {
public String getDescription(@Nonnull CommandSender sender) { if (sender instanceof Player player) {
if (sender instanceof Player) { return Slimefun.getLocalization().getMessage(player, getDescription());
return Slimefun.getLocalization().getMessage((Player) sender, getDescription());
} else { } else {
return Slimefun.getLocalization().getMessage(getDescription()); return Slimefun.getLocalization().getMessage(getDescription());
} }

View File

@ -40,7 +40,7 @@ class BackpackCommand extends SubCommand {
@Override @Override
public void onExecute(CommandSender sender, String[] args) { public void onExecute(CommandSender sender, String[] args) {
if (sender instanceof Player) { if (sender instanceof Player player) {
if (sender.hasPermission("slimefun.command.backpack")) { if (sender.hasPermission("slimefun.command.backpack")) {
if (args.length != 3) { if (args.length != 3) {
Slimefun.getLocalization().sendMessage(sender, "messages.usage", true, msg -> msg.replace("%usage%", "/sf backpack <Player> <ID>")); Slimefun.getLocalization().sendMessage(sender, "messages.usage", true, msg -> msg.replace("%usage%", "/sf backpack <Player> <ID>"));
@ -71,7 +71,7 @@ class BackpackCommand extends SubCommand {
Slimefun.runSync(() -> { Slimefun.runSync(() -> {
ItemStack item = SlimefunItems.RESTORED_BACKPACK.clone(); ItemStack item = SlimefunItems.RESTORED_BACKPACK.clone();
Slimefun.getBackpackListener().setBackpackId(backpackOwner, item, 2, id); Slimefun.getBackpackListener().setBackpackId(backpackOwner, item, 2, id);
((Player) sender).getInventory().addItem(item); player.getInventory().addItem(item);
Slimefun.getLocalization().sendMessage(sender, "commands.backpack.restored-backpack-given"); Slimefun.getLocalization().sendMessage(sender, "commands.backpack.restored-backpack-given");
}); });
}); });

View File

@ -33,14 +33,12 @@ class ChargeCommand extends SubCommand {
@Override @Override
public void onExecute(CommandSender sender, String[] args) { public void onExecute(CommandSender sender, String[] args) {
if (sender instanceof Player) { if (sender instanceof Player player) {
if (sender.hasPermission("slimefun.command.charge")) { if (sender.hasPermission("slimefun.command.charge")) {
Player p = (Player) sender; ItemStack item = player.getInventory().getItemInMainHand();
ItemStack item = p.getInventory().getItemInMainHand();
SlimefunItem slimefunItem = SlimefunItem.getByItem(item); SlimefunItem slimefunItem = SlimefunItem.getByItem(item);
if (slimefunItem instanceof Rechargeable) { if (slimefunItem instanceof Rechargeable rechargeableItem) {
Rechargeable rechargeableItem = (Rechargeable) slimefunItem;
rechargeableItem.setItemCharge(item, rechargeableItem.getMaxItemCharge(item)); rechargeableItem.setItemCharge(item, rechargeableItem.getMaxItemCharge(item));
Slimefun.getLocalization().sendMessage(sender, "commands.charge.charge-success", true); Slimefun.getLocalization().sendMessage(sender, "commands.charge.charge-success", true);
} else { } else {

View File

@ -19,9 +19,9 @@ class CheatCommand extends SubCommand {
@Override @Override
public void onExecute(CommandSender sender, String[] args) { public void onExecute(CommandSender sender, String[] args) {
if (sender instanceof Player) { if (sender instanceof Player player) {
if (sender.hasPermission("slimefun.cheat.items")) { if (sender.hasPermission("slimefun.cheat.items")) {
SlimefunGuide.openCheatMenu((Player) sender); SlimefunGuide.openCheatMenu(player);
} else { } else {
Slimefun.getLocalization().sendMessage(sender, "messages.no-permission", true); Slimefun.getLocalization().sendMessage(sender, "messages.no-permission", true);
} }

View File

@ -19,8 +19,8 @@ class DebugFishCommand extends SubCommand {
@Override @Override
public void onExecute(CommandSender sender, String[] args) { public void onExecute(CommandSender sender, String[] args) {
if (sender instanceof Player && sender.hasPermission("slimefun.debugging")) { if (sender instanceof Player player && sender.hasPermission("slimefun.debugging")) {
((Player) sender).getInventory().addItem(SlimefunItems.DEBUG_FISH.clone()); player.getInventory().addItem(SlimefunItems.DEBUG_FISH.clone());
} else { } else {
Slimefun.getLocalization().sendMessage(sender, "messages.no-permission", true); Slimefun.getLocalization().sendMessage(sender, "messages.no-permission", true);
} }

View File

@ -20,10 +20,10 @@ class GuideCommand extends SubCommand {
@Override @Override
public void onExecute(CommandSender sender, String[] args) { public void onExecute(CommandSender sender, String[] args) {
if (sender instanceof Player) { if (sender instanceof Player player) {
if (sender.hasPermission("slimefun.command.guide")) { if (sender.hasPermission("slimefun.command.guide")) {
SlimefunGuideMode design = SlimefunGuide.getDefaultMode(); SlimefunGuideMode design = SlimefunGuide.getDefaultMode();
((Player) sender).getInventory().addItem(SlimefunGuide.getItem(design).clone()); player.getInventory().addItem(SlimefunGuide.getItem(design).clone());
} else { } else {
Slimefun.getLocalization().sendMessage(sender, "messages.no-permission", true); Slimefun.getLocalization().sendMessage(sender, "messages.no-permission", true);
} }

View File

@ -21,9 +21,9 @@ class OpenGuideCommand extends SubCommand {
@Override @Override
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
public void onExecute(CommandSender sender, String[] args) { public void onExecute(CommandSender sender, String[] args) {
if (sender instanceof Player) { if (sender instanceof Player player) {
if (sender.hasPermission("slimefun.command.open_guide")) { if (sender.hasPermission("slimefun.command.open_guide")) {
SlimefunGuide.openGuide((Player) sender, SlimefunGuideMode.SURVIVAL_MODE); SlimefunGuide.openGuide(player, SlimefunGuideMode.SURVIVAL_MODE);
} else { } else {
Slimefun.getLocalization().sendMessage(sender, "messages.no-permission", true); Slimefun.getLocalization().sendMessage(sender, "messages.no-permission", true);
} }

View File

@ -23,11 +23,11 @@ class SearchCommand extends SubCommand {
@Override @Override
public void onExecute(CommandSender sender, String[] args) { public void onExecute(CommandSender sender, String[] args) {
if (sender instanceof Player) { if (sender instanceof Player player) {
if (sender.hasPermission("slimefun.command.search")) { if (sender.hasPermission("slimefun.command.search")) {
if (args.length > 1) { if (args.length > 1) {
String query = String.join(" ", Arrays.copyOfRange(args, 1, args.length)); String query = String.join(" ", Arrays.copyOfRange(args, 1, args.length));
PlayerProfile.get((Player) sender, profile -> SlimefunGuide.openSearch(profile, query, SlimefunGuideMode.SURVIVAL_MODE, true)); PlayerProfile.get(player, profile -> SlimefunGuide.openSearch(profile, query, SlimefunGuideMode.SURVIVAL_MODE, true));
} else { } else {
Slimefun.getLocalization().sendMessage(sender, "messages.usage", true, msg -> msg.replace("%usage%", "/sf search <SearchTerm>")); Slimefun.getLocalization().sendMessage(sender, "messages.usage", true, msg -> msg.replace("%usage%", "/sf search <SearchTerm>"));
} }

View File

@ -35,8 +35,8 @@ class StatsCommand extends SubCommand {
} else { } else {
Slimefun.getLocalization().sendMessage(sender, "messages.no-permission", true); Slimefun.getLocalization().sendMessage(sender, "messages.no-permission", true);
} }
} else if (sender instanceof Player) { } else if (sender instanceof Player player) {
PlayerProfile.get((Player) sender, profile -> profile.sendStats(sender)); PlayerProfile.get(player, profile -> profile.sendStats(sender));
} else { } else {
Slimefun.getLocalization().sendMessage(sender, "messages.only-players", true); Slimefun.getLocalization().sendMessage(sender, "messages.only-players", true);
} }

View File

@ -21,18 +21,17 @@ class TeleporterCommand extends SubCommand {
@Override @Override
public void onExecute(CommandSender sender, String[] args) { public void onExecute(CommandSender sender, String[] args) {
if (sender instanceof Player) { if (sender instanceof Player player) {
if (sender.hasPermission("slimefun.command.teleporter")) { if (sender.hasPermission("slimefun.command.teleporter")) {
if (args.length == 1) { if (args.length == 1) {
Player p = (Player) sender; Slimefun.getGPSNetwork().getTeleportationManager().openTeleporterGUI(player, player.getUniqueId(), player.getLocation().getBlock().getRelative(BlockFace.DOWN), 999999999);
Slimefun.getGPSNetwork().getTeleportationManager().openTeleporterGUI(p, p.getUniqueId(), p.getLocation().getBlock().getRelative(BlockFace.DOWN), 999999999);
} else if (args.length == 2) { } else if (args.length == 2) {
@SuppressWarnings("deprecation") @SuppressWarnings("deprecation")
OfflinePlayer player = Bukkit.getOfflinePlayer(args[1]); OfflinePlayer targetPlayer = Bukkit.getOfflinePlayer(args[1]);
if (player.getName() != null) { if (targetPlayer.getName() != null) {
Slimefun.getGPSNetwork().getTeleportationManager().openTeleporterGUI((Player) sender, player.getUniqueId(), ((Player) sender).getLocation().getBlock().getRelative(BlockFace.DOWN), 999999999); Slimefun.getGPSNetwork().getTeleportationManager().openTeleporterGUI(player, targetPlayer.getUniqueId(), player.getLocation().getBlock().getRelative(BlockFace.DOWN), 999999999);
} else { } else {
Slimefun.getLocalization().sendMessage(sender, "messages.unknown-player", msg -> msg.replace("%player%", args[1])); Slimefun.getLocalization().sendMessage(sender, "messages.unknown-player", msg -> msg.replace("%player%", args[1]));
} }

View File

@ -88,8 +88,8 @@ class TimingsCommand extends SubCommand {
@Nonnull @Nonnull
private PerformanceInspector inspectorOf(@Nonnull CommandSender sender, boolean verbose) { private PerformanceInspector inspectorOf(@Nonnull CommandSender sender, boolean verbose) {
if (sender instanceof Player) { if (sender instanceof Player player) {
return new PlayerPerformanceInspector((Player) sender); return new PlayerPerformanceInspector(player);
} else { } else {
return new ConsolePerformanceInspector(sender, verbose); return new ConsolePerformanceInspector(sender, verbose);
} }

View File

@ -76,10 +76,10 @@ public class RainbowTickHandler extends BlockTicker {
} }
for (Material type : materials) { for (Material type : materials) {
/** /*
* This BlockData is purely virtual and only created on startup, it should have This BlockData is purely virtual and only created on startup, it should have
* no impact on performance, in fact it should save performance as it preloads no impact on performance, in fact it should save performance as it preloads
* the data but also saves heavy calls for other Materials the data but also saves heavy calls for other Materials
*/ */
if (type.createBlockData() instanceof GlassPane) { if (type.createBlockData() instanceof GlassPane) {
return true; return true;
@ -92,9 +92,9 @@ public class RainbowTickHandler extends BlockTicker {
@Override @Override
public void tick(Block b, SlimefunItem item, Config data) { public void tick(Block b, SlimefunItem item, Config data) {
if (b.getType() == Material.AIR) { if (b.getType() == Material.AIR) {
/** /*
* The block was broken, setting the Material now would result in a The block was broken, setting the Material now would result in a
* duplication glitch duplication glitch
*/ */
return; return;
} }
@ -102,12 +102,9 @@ public class RainbowTickHandler extends BlockTicker {
if (glassPanes) { if (glassPanes) {
BlockData blockData = b.getBlockData(); BlockData blockData = b.getBlockData();
if (blockData instanceof GlassPane) { if (blockData instanceof GlassPane previousData) {
BlockData block = material.createBlockData(bd -> { BlockData block = material.createBlockData(bd -> {
if (bd instanceof GlassPane) { if (bd instanceof GlassPane nextData) {
GlassPane previousData = (GlassPane) blockData;
GlassPane nextData = (GlassPane) bd;
nextData.setWaterlogged(previousData.isWaterlogged()); nextData.setWaterlogged(previousData.isWaterlogged());
for (BlockFace face : previousData.getAllowedFaces()) { for (BlockFace face : previousData.getAllowedFaces()) {

View File

@ -94,21 +94,14 @@ public class CargoNet extends AbstractItemNetwork implements HologramOwner {
return null; return null;
} }
switch (id) { return switch (id) {
case "CARGO_MANAGER": case "CARGO_MANAGER" -> NetworkComponent.REGULATOR;
return NetworkComponent.REGULATOR; case "CARGO_NODE" -> NetworkComponent.CONNECTOR;
case "CARGO_NODE": case "CARGO_NODE_INPUT",
return NetworkComponent.CONNECTOR; "CARGO_NODE_OUTPUT",
case "CARGO_NODE_INPUT": "CARGO_NODE_OUTPUT_ADVANCED" -> NetworkComponent.TERMINUS;
case "CARGO_NODE_OUTPUT": default -> null;
case "CARGO_NODE_OUTPUT_ADVANCED": };
case "CT_IMPORT_BUS":
case "CT_EXPORT_BUS":
case "CHEST_TERMINAL":
return NetworkComponent.TERMINUS;
default:
return null;
}
} }
@Override @Override
@ -123,15 +116,10 @@ public class CargoNet extends AbstractItemNetwork implements HologramOwner {
if (to == NetworkComponent.TERMINUS) { if (to == NetworkComponent.TERMINUS) {
String id = BlockStorage.checkID(l); String id = BlockStorage.checkID(l);
switch (id) { switch (id) {
case "CARGO_NODE_INPUT": case "CARGO_NODE_INPUT" -> inputNodes.add(l);
inputNodes.add(l); case "CARGO_NODE_OUTPUT",
break; "CARGO_NODE_OUTPUT_ADVANCED" -> outputNodes.add(l);
case "CARGO_NODE_OUTPUT": default -> {}
case "CARGO_NODE_OUTPUT_ADVANCED":
outputNodes.add(l);
break;
default:
break;
} }
} }
} }

View File

@ -70,21 +70,20 @@ final class CargoUtils {
Material type = block.getType(); Material type = block.getType();
switch (type) { // TODO: Add designated SlimefunTag
case CHEST: return switch (type) {
case TRAPPED_CHEST: case CHEST,
case FURNACE: TRAPPED_CHEST,
case DISPENSER: FURNACE,
case DROPPER: DISPENSER,
case HOPPER: DROPPER,
case BREWING_STAND: HOPPER,
case BARREL: BREWING_STAND,
case BLAST_FURNACE: BARREL,
case SMOKER: BLAST_FURNACE,
return true; SMOKER -> true;
default: default -> SlimefunTag.SHULKER_BOXES.isTagged(type);
return SlimefunTag.SHULKER_BOXES.isTagged(type); };
}
} }
@Nonnull @Nonnull
@ -145,8 +144,8 @@ final class CargoUtils {
BlockState state = PaperLib.getBlockState(target, false).getState(); BlockState state = PaperLib.getBlockState(target, false).getState();
if (state instanceof InventoryHolder) { if (state instanceof InventoryHolder inventoryHolder) {
inventory = ((InventoryHolder) state).getInventory(); inventory = inventoryHolder.getInventory();
inventories.put(target.getLocation(), inventory); inventories.put(target.getLocation(), inventory);
return withdrawFromVanillaInventory(network, node, template, inventory); return withdrawFromVanillaInventory(network, node, template, inventory);
} }
@ -230,8 +229,8 @@ final class CargoUtils {
BlockState state = PaperLib.getBlockState(target, false).getState(); BlockState state = PaperLib.getBlockState(target, false).getState();
if (state instanceof InventoryHolder) { if (state instanceof InventoryHolder inventoryHolder) {
inventory = ((InventoryHolder) state).getInventory(); inventory = inventoryHolder.getInventory();
inventories.put(target.getLocation(), inventory); inventories.put(target.getLocation(), inventory);
return withdrawFromVanillaInventory(network, node, inventory); return withdrawFromVanillaInventory(network, node, inventory);
} }
@ -278,8 +277,8 @@ final class CargoUtils {
BlockState state = PaperLib.getBlockState(target, false).getState(); BlockState state = PaperLib.getBlockState(target, false).getState();
if (state instanceof InventoryHolder) { if (state instanceof InventoryHolder inventoryHolder) {
inventory = ((InventoryHolder) state).getInventory(); inventory = inventoryHolder.getInventory();
inventories.put(target.getLocation(), inventory); inventories.put(target.getLocation(), inventory);
return insertIntoVanillaInventory(stack, wrapper, smartFill, inventory); return insertIntoVanillaInventory(stack, wrapper, smartFill, inventory);
} }

View File

@ -75,16 +75,13 @@ public class EnergyNet extends Network implements HologramOwner {
if (component == null) { if (component == null) {
return null; return null;
} else { } else {
switch (component.getEnergyComponentType()) { return switch (component.getEnergyComponentType()) {
case CONNECTOR: case CONNECTOR,
case CAPACITOR: CAPACITOR -> NetworkComponent.CONNECTOR;
return NetworkComponent.CONNECTOR; case CONSUMER,
case CONSUMER: GENERATOR -> NetworkComponent.TERMINUS;
case GENERATOR: default -> null;
return NetworkComponent.TERMINUS; };
default:
return null;
}
} }
} }
@ -106,10 +103,10 @@ public class EnergyNet extends Network implements HologramOwner {
consumers.put(l, component); consumers.put(l, component);
break; break;
case GENERATOR: case GENERATOR:
if (component instanceof EnergyNetProvider) { if (component instanceof EnergyNetProvider provider) {
generators.put(l, (EnergyNetProvider) component); generators.put(l, provider);
} else if (component instanceof SlimefunItem) { } else if (component instanceof SlimefunItem item) {
((SlimefunItem) component).warn("This Item is marked as a GENERATOR but does not implement the interface EnergyNetProvider!"); item.warn("This Item is marked as a GENERATOR but does not implement the interface EnergyNetProvider!");
} }
break; break;
default: default:
@ -275,8 +272,8 @@ public class EnergyNet extends Network implements HologramOwner {
private static EnergyNetComponent getComponent(@Nonnull Location l) { private static EnergyNetComponent getComponent(@Nonnull Location l) {
SlimefunItem item = BlockStorage.check(l); SlimefunItem item = BlockStorage.check(l);
if (item instanceof EnergyNetComponent) { if (item instanceof EnergyNetComponent component) {
return ((EnergyNetComponent) item); return component;
} }
return null; return null;

View File

@ -72,9 +72,9 @@ public class BlockDataService implements Keyed {
*/ */
BlockState state = b.getState(); BlockState state = b.getState();
if (state instanceof TileState) { if (state instanceof TileState tileState) {
try { try {
PersistentDataContainer container = ((TileState) state).getPersistentDataContainer(); PersistentDataContainer container = tileState.getPersistentDataContainer();
container.set(namespacedKey, PersistentDataType.STRING, value); container.set(namespacedKey, PersistentDataType.STRING, value);
state.update(); state.update();
} catch (Exception x) { } catch (Exception x) {
@ -111,8 +111,8 @@ public class BlockDataService implements Keyed {
@Nullable @Nullable
private PersistentDataContainer getPersistentDataContainer(@Nonnull BlockState state) { private PersistentDataContainer getPersistentDataContainer(@Nonnull BlockState state) {
if (state instanceof TileState) { if (state instanceof TileState tileState) {
return ((TileState) state).getPersistentDataContainer(); return tileState.getPersistentDataContainer();
} else { } else {
return null; return null;
} }
@ -137,31 +137,32 @@ public class BlockDataService implements Keyed {
return false; return false;
} }
switch (type) { // TODO: Add designated SlimefunTag
case PLAYER_HEAD: return switch (type) {
case PLAYER_WALL_HEAD: case PLAYER_HEAD,
case CHEST: PLAYER_WALL_HEAD,
case DISPENSER: CHEST,
case BREWING_STAND: DISPENSER,
case DROPPER: BREWING_STAND,
case FURNACE: DROPPER,
case BLAST_FURNACE: FURNACE,
case HOPPER: BLAST_FURNACE,
case LECTERN: HOPPER,
case JUKEBOX: LECTERN,
case ENDER_CHEST: JUKEBOX,
case ENCHANTING_TABLE: ENDER_CHEST,
case DAYLIGHT_DETECTOR: ENCHANTING_TABLE,
case SMOKER: DAYLIGHT_DETECTOR,
case BARREL: SMOKER,
case SPAWNER: BARREL,
case BEACON: SPAWNER,
BEACON ->
// All of the above Materials are Tile Entities // All of the above Materials are Tile Entities
return true; true;
default: default ->
// Otherwise we assume they're not Tile Entities // Otherwise we assume they're not Tile Entities
return false; false;
} };
} }
} }

View File

@ -82,7 +82,7 @@ class GitHubTask implements Runnable {
} }
for (GitHubConnector connector : gitHubService.getConnectors()) { for (GitHubConnector connector : gitHubService.getConnectors()) {
if (connector instanceof ContributionsConnector && !((ContributionsConnector) connector).hasFinished()) { if (connector instanceof ContributionsConnector contributionsConnector && !contributionsConnector.hasFinished()) {
return; return;
} }
} }

View File

@ -62,9 +62,9 @@ class Hologram {
ArmorStand getArmorStand() { ArmorStand getArmorStand() {
Entity n = Bukkit.getEntity(uniqueId); Entity n = Bukkit.getEntity(uniqueId);
if (n instanceof ArmorStand && n.isValid()) { if (n instanceof ArmorStand armorStand && n.isValid()) {
this.lastAccess = System.currentTimeMillis(); this.lastAccess = System.currentTimeMillis();
return (ArmorStand) n; return armorStand;
} else { } else {
this.lastAccess = 0; this.lastAccess = 0;
return null; return null;

View File

@ -191,11 +191,9 @@ public class HologramsService {
* @return Whether this could be a hologram * @return Whether this could be a hologram
*/ */
private boolean isHologram(@Nonnull Entity n) { private boolean isHologram(@Nonnull Entity n) {
if (n instanceof ArmorStand) { if (n instanceof ArmorStand armorStand) {
ArmorStand armorstand = (ArmorStand) n;
// The absolute minimum requirements to count as a hologram // The absolute minimum requirements to count as a hologram
return !armorstand.isVisible() && armorstand.isSilent() && !armorstand.hasGravity(); return !armorStand.isVisible() && armorStand.isSilent() && !armorStand.hasGravity();
} else { } else {
return false; return false;
} }
@ -216,22 +214,20 @@ public class HologramsService {
*/ */
@Nullable @Nullable
private Hologram getAsHologram(@Nonnull BlockPosition position, @Nonnull Entity entity, @Nonnull PersistentDataContainer container) { private Hologram getAsHologram(@Nonnull BlockPosition position, @Nonnull Entity entity, @Nonnull PersistentDataContainer container) {
if (entity instanceof ArmorStand) { if (entity instanceof ArmorStand armorStand) {
ArmorStand armorstand = (ArmorStand) entity; armorStand.setVisible(false);
armorStand.setInvulnerable(true);
armorstand.setVisible(false); armorStand.setSilent(true);
armorstand.setInvulnerable(true); armorStand.setMarker(true);
armorstand.setSilent(true); armorStand.setAI(false);
armorstand.setMarker(true); armorStand.setGravity(false);
armorstand.setAI(false); armorStand.setRemoveWhenFarAway(false);
armorstand.setGravity(false);
armorstand.setRemoveWhenFarAway(false);
// Set a persistent tag to re-identify the correct hologram later // Set a persistent tag to re-identify the correct hologram later
container.set(persistentDataKey, PersistentDataType.LONG, position.getPosition()); container.set(persistentDataKey, PersistentDataType.LONG, position.getPosition());
// Store in cache for faster access // Store in cache for faster access
Hologram hologram = new Hologram(armorstand.getUniqueId()); Hologram hologram = new Hologram(armorStand.getUniqueId());
cache.put(position, hologram); cache.put(position, hologram);
return hologram; return hologram;

View File

@ -348,8 +348,8 @@ public abstract class SlimefunLocalization implements Keyed {
String prefix = addPrefix ? getChatPrefix() : ""; String prefix = addPrefix ? getChatPrefix() : "";
if (recipient instanceof Player) { if (recipient instanceof Player player) {
recipient.sendMessage(ChatColors.color(prefix + getMessage((Player) recipient, key))); recipient.sendMessage(ChatColors.color(prefix + getMessage(player, key)));
} else { } else {
recipient.sendMessage(ChatColor.stripColor(ChatColors.color(prefix + getMessage(key)))); recipient.sendMessage(ChatColor.stripColor(ChatColors.color(prefix + getMessage(key))));
} }
@ -383,8 +383,8 @@ public abstract class SlimefunLocalization implements Keyed {
String prefix = addPrefix ? getChatPrefix() : ""; String prefix = addPrefix ? getChatPrefix() : "";
if (recipient instanceof Player) { if (recipient instanceof Player player) {
recipient.sendMessage(ChatColors.color(prefix + function.apply(getMessage((Player) recipient, key)))); recipient.sendMessage(ChatColors.color(prefix + function.apply(getMessage(player, key))));
} else { } else {
recipient.sendMessage(ChatColor.stripColor(ChatColors.color(prefix + function.apply(getMessage(key))))); recipient.sendMessage(ChatColor.stripColor(ChatColors.color(prefix + function.apply(getMessage(key)))));
} }
@ -393,8 +393,8 @@ public abstract class SlimefunLocalization implements Keyed {
public void sendMessages(@Nonnull CommandSender recipient, @Nonnull String key) { public void sendMessages(@Nonnull CommandSender recipient, @Nonnull String key) {
String prefix = getChatPrefix(); String prefix = getChatPrefix();
if (recipient instanceof Player) { if (recipient instanceof Player player) {
for (String translation : getMessages((Player) recipient, key)) { for (String translation : getMessages(player, key)) {
String message = ChatColors.color(prefix + translation); String message = ChatColors.color(prefix + translation);
recipient.sendMessage(message); recipient.sendMessage(message);
} }
@ -410,8 +410,8 @@ public abstract class SlimefunLocalization implements Keyed {
public void sendMessages(CommandSender recipient, String key, boolean addPrefix, UnaryOperator<String> function) { public void sendMessages(CommandSender recipient, String key, boolean addPrefix, UnaryOperator<String> function) {
String prefix = addPrefix ? getChatPrefix() : ""; String prefix = addPrefix ? getChatPrefix() : "";
if (recipient instanceof Player) { if (recipient instanceof Player player) {
for (String translation : getMessages((Player) recipient, key)) { for (String translation : getMessages(player, key)) {
String message = ChatColors.color(prefix + function.apply(translation)); String message = ChatColors.color(prefix + function.apply(translation));
recipient.sendMessage(message); recipient.sendMessage(message);
} }

View File

@ -95,9 +95,9 @@ class PerformanceSummary {
List<Entry<String, Long>> results = stream.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())).collect(Collectors.toList()); List<Entry<String, Long>> results = stream.sorted(Map.Entry.comparingByValue(Comparator.reverseOrder())).collect(Collectors.toList());
String prefix = count + " " + name + (count != 1 ? 's' : ""); String prefix = count + " " + name + (count != 1 ? 's' : "");
if (inspector instanceof PlayerPerformanceInspector) { if (inspector instanceof PlayerPerformanceInspector playerPerformanceInspector) {
TextComponent component = summarizeAsTextComponent(count, prefix, results, formatter); TextComponent component = summarizeAsTextComponent(count, prefix, results, formatter);
((PlayerPerformanceInspector) inspector).sendMessage(component); playerPerformanceInspector.sendMessage(component);
} else { } else {
String text = summarizeAsString(inspector, count, prefix, results, formatter); String text = summarizeAsString(inspector, count, prefix, results, formatter);
inspector.sendMessage(text); inspector.sendMessage(text);

View File

@ -143,9 +143,8 @@ final class ProfiledBlock {
@Override @Override
public boolean equals(Object obj) { public boolean equals(Object obj) {
if (obj instanceof ProfiledBlock) { if (obj instanceof ProfiledBlock profiledBlock) {
ProfiledBlock block = (ProfiledBlock) obj; return position == profiledBlock.position && Objects.equals(world, profiledBlock.world);
return position == block.position && Objects.equals(world, block.world);
} }
return false; return false;

View File

@ -54,7 +54,7 @@ public class CheatSheetSlimefunGuide extends SurvivalSlimefunGuide {
List<ItemGroup> groups = new LinkedList<>(); List<ItemGroup> groups = new LinkedList<>();
for (ItemGroup group : Slimefun.getRegistry().getAllItemGroups()) { for (ItemGroup group : Slimefun.getRegistry().getAllItemGroups()) {
if (!(group instanceof FlexItemGroup) || ((FlexItemGroup) group).isVisible(p, profile, getMode())) { if (!(group instanceof FlexItemGroup flexItemGroup) || flexItemGroup.isVisible(p, profile, getMode())) {
groups.add(group); groups.add(group);
} }
} }

View File

@ -119,8 +119,8 @@ public class SurvivalSlimefunGuide implements SlimefunGuideImplementation {
for (ItemGroup group : Slimefun.getRegistry().getAllItemGroups()) { for (ItemGroup group : Slimefun.getRegistry().getAllItemGroups()) {
try { try {
if (group instanceof FlexItemGroup) { if (group instanceof FlexItemGroup flexItemGroup) {
if (((FlexItemGroup) group).isVisible(p, profile, getMode())) { if (flexItemGroup.isVisible(p, profile, getMode())) {
groups.add(group); groups.add(group);
} }
} else if (!group.isHidden(p)) { } else if (!group.isHidden(p)) {
@ -233,8 +233,8 @@ public class SurvivalSlimefunGuide implements SlimefunGuideImplementation {
return; return;
} }
if (itemGroup instanceof FlexItemGroup) { if (itemGroup instanceof FlexItemGroup flexItemGroup) {
((FlexItemGroup) itemGroup).open(p, profile, getMode()); flexItemGroup.open(p, profile, getMode());
return; return;
} }
@ -493,19 +493,19 @@ public class SurvivalSlimefunGuide implements SlimefunGuideImplementation {
private <T extends Recipe> void showRecipeChoices(T recipe, ItemStack[] recipeItems, AsyncRecipeChoiceTask task) { private <T extends Recipe> void showRecipeChoices(T recipe, ItemStack[] recipeItems, AsyncRecipeChoiceTask task) {
RecipeChoice[] choices = Slimefun.getMinecraftRecipeService().getRecipeShape(recipe); RecipeChoice[] choices = Slimefun.getMinecraftRecipeService().getRecipeShape(recipe);
if (choices.length == 1 && choices[0] instanceof MaterialChoice) { if (choices.length == 1 && choices[0] instanceof MaterialChoice materialChoice) {
recipeItems[4] = new ItemStack(((MaterialChoice) choices[0]).getChoices().get(0)); recipeItems[4] = new ItemStack(materialChoice.getChoices().get(0));
if (((MaterialChoice) choices[0]).getChoices().size() > 1) { if (materialChoice.getChoices().size() > 1) {
task.add(recipeSlots[4], (MaterialChoice) choices[0]); task.add(recipeSlots[4], materialChoice);
} }
} else { } else {
for (int i = 0; i < choices.length; i++) { for (int i = 0; i < choices.length; i++) {
if (choices[i] instanceof MaterialChoice) { if (choices[i] instanceof MaterialChoice materialChoice) {
recipeItems[i] = new ItemStack(((MaterialChoice) choices[i]).getChoices().get(0)); recipeItems[i] = new ItemStack(materialChoice.getChoices().get(0));
if (((MaterialChoice) choices[i]).getChoices().size() > 1) { if (materialChoice.getChoices().size() > 1) {
task.add(recipeSlots[i], (MaterialChoice) choices[i]); task.add(recipeSlots[i], materialChoice);
} }
} }
} }
@ -545,8 +545,8 @@ public class SurvivalSlimefunGuide implements SlimefunGuideImplementation {
displayItem(menu, profile, p, item, result, recipeType, recipe, task); displayItem(menu, profile, p, item, result, recipeType, recipe, task);
if (item instanceof RecipeDisplayItem) { if (item instanceof RecipeDisplayItem recipeDisplayItem) {
displayRecipes(p, profile, menu, (RecipeDisplayItem) item, 0); displayRecipes(p, profile, menu, recipeDisplayItem, 0);
} }
menu.open(p); menu.open(p);

View File

@ -78,8 +78,8 @@ public class VanillaInventoryDropHandler<T extends BlockState & InventoryHolder>
@Nonnull @Nonnull
protected Inventory getInventory(@Nonnull T inventoryHolder) { protected Inventory getInventory(@Nonnull T inventoryHolder) {
if (inventoryHolder instanceof Chest) { if (inventoryHolder instanceof Chest chest) {
return ((Chest) inventoryHolder).getBlockInventory(); return chest.getBlockInventory();
} else { } else {
return inventoryHolder.getInventory(); return inventoryHolder.getInventory();
} }

View File

@ -86,8 +86,8 @@ public class AncientPedestal extends SimpleSlimefunItem<BlockDispenseHandler> {
Location l = pedestal.getLocation().add(0.5, 1.2, 0.5); Location l = pedestal.getLocation().add(0.5, 1.2, 0.5);
for (Entity n : l.getWorld().getNearbyEntities(l, 0.5, 0.5, 0.5, this::testItem)) { for (Entity n : l.getWorld().getNearbyEntities(l, 0.5, 0.5, 0.5, this::testItem)) {
if (n instanceof Item) { if (n instanceof Item item) {
return Optional.of((Item) n); return Optional.of(item);
} }
} }
@ -95,8 +95,7 @@ public class AncientPedestal extends SimpleSlimefunItem<BlockDispenseHandler> {
} }
private boolean testItem(@Nullable Entity n) { private boolean testItem(@Nullable Entity n) {
if (n instanceof Item && n.isValid()) { if (n instanceof Item item && n.isValid()) {
Item item = (Item) n;
ItemMeta meta = item.getItemStack().getItemMeta(); ItemMeta meta = item.getItemStack().getItemMeta();
return meta.hasDisplayName() && meta.getDisplayName().startsWith(ITEM_PREFIX); return meta.hasDisplayName() && meta.getDisplayName().startsWith(ITEM_PREFIX);

View File

@ -34,24 +34,15 @@ public class ButcherAndroid extends ProgrammableAndroid {
double damage = getTier() >= 3 ? 20D : 4D * getTier(); double damage = getTier() >= 3 ? 20D : 4D * getTier();
double radius = 4.0 + getTier(); double radius = 4.0 + getTier();
for (Entity n : b.getWorld().getNearbyEntities(b.getLocation(), radius, radius, radius, n -> n instanceof LivingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.isValid() && predicate.test((LivingEntity) n))) { for (Entity n : b.getWorld().getNearbyEntities(b.getLocation(), radius, radius, radius, n -> n instanceof LivingEntity livingEntity && !(n instanceof ArmorStand) && !(n instanceof Player) && n.isValid() && predicate.test(livingEntity))) {
boolean attack = false; boolean attack = false;
switch (face) { switch (face) {
case NORTH: case NORTH -> attack = n.getLocation().getZ() < b.getZ();
attack = n.getLocation().getZ() < b.getZ(); case EAST -> attack = n.getLocation().getX() > b.getX();
break; case SOUTH -> attack = n.getLocation().getZ() > b.getZ();
case EAST: case WEST -> attack = n.getLocation().getX() < b.getX();
attack = n.getLocation().getX() > b.getX(); default -> {}
break;
case SOUTH:
attack = n.getLocation().getZ() > b.getZ();
break;
case WEST:
attack = n.getLocation().getX() < b.getX();
break;
default:
break;
} }
if (attack) { if (attack) {

View File

@ -42,7 +42,7 @@ public class FarmerAndroid extends ProgrammableAndroid {
return; return;
} }
if (data instanceof Ageable && ((Ageable) data).getAge() >= ((Ageable) data).getMaximumAge()) { if (data instanceof Ageable ageable && ageable.getAge() >= ageable.getMaximumAge()) {
drop = getDropFromCrop(blockType); drop = getDropFromCrop(blockType);
} }
@ -57,8 +57,8 @@ public class FarmerAndroid extends ProgrammableAndroid {
if (drop != null && menu.pushItem(drop, getOutputSlots()) == null) { if (drop != null && menu.pushItem(drop, getOutputSlots()) == null) {
block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, blockType); block.getWorld().playEffect(block.getLocation(), Effect.STEP_SOUND, blockType);
if (data instanceof Ageable) { if (data instanceof Ageable ageable) {
((Ageable) data).setAge(0); ageable.setAge(0);
block.setBlockData(data); block.setBlockData(data);
} }
} }
@ -68,24 +68,16 @@ public class FarmerAndroid extends ProgrammableAndroid {
private ItemStack getDropFromCrop(Material crop) { private ItemStack getDropFromCrop(Material crop) {
Random random = ThreadLocalRandom.current(); Random random = ThreadLocalRandom.current();
switch (crop) { return switch (crop) {
case WHEAT: case WHEAT -> new ItemStack(Material.WHEAT, random.nextInt(2) + 1);
return new ItemStack(Material.WHEAT, random.nextInt(2) + 1); case POTATOES -> new ItemStack(Material.POTATO, random.nextInt(3) + 1);
case POTATOES: case CARROTS -> new ItemStack(Material.CARROT, random.nextInt(3) + 1);
return new ItemStack(Material.POTATO, random.nextInt(3) + 1); case BEETROOTS -> new ItemStack(Material.BEETROOT, random.nextInt(3) + 1);
case CARROTS: case COCOA -> new ItemStack(Material.COCOA_BEANS, random.nextInt(3) + 1);
return new ItemStack(Material.CARROT, random.nextInt(3) + 1); case NETHER_WART -> new ItemStack(Material.NETHER_WART, random.nextInt(3) + 1);
case BEETROOTS: case SWEET_BERRY_BUSH -> new ItemStack(Material.SWEET_BERRIES, random.nextInt(3) + 1);
return new ItemStack(Material.BEETROOT, random.nextInt(3) + 1); default -> null;
case COCOA: };
return new ItemStack(Material.COCOA_BEANS, random.nextInt(3) + 1);
case NETHER_WART:
return new ItemStack(Material.NETHER_WART, random.nextInt(3) + 1);
case SWEET_BERRY_BUSH:
return new ItemStack(Material.SWEET_BERRIES, random.nextInt(3) + 1);
default:
return null;
}
} }
} }

View File

@ -156,8 +156,8 @@ public class ProgrammableAndroid extends SlimefunItem implements InventoryBlock,
BlockStorage.addBlockInfo(b, "paused", "true"); BlockStorage.addBlockInfo(b, "paused", "true");
BlockData blockData = Material.PLAYER_HEAD.createBlockData(data -> { BlockData blockData = Material.PLAYER_HEAD.createBlockData(data -> {
if (data instanceof Rotatable) { if (data instanceof Rotatable rotatable) {
((Rotatable) data).setRotation(p.getFacing()); rotatable.setRotation(p.getFacing());
} }
}); });
@ -207,16 +207,12 @@ public class ProgrammableAndroid extends SlimefunItem implements InventoryBlock,
* @return The required type of fuel * @return The required type of fuel
*/ */
public AndroidFuelSource getFuelSource() { public AndroidFuelSource getFuelSource() {
switch (getTier()) { return switch (getTier()) {
case 1: case 1 -> AndroidFuelSource.SOLID;
return AndroidFuelSource.SOLID; case 2 -> AndroidFuelSource.LIQUID;
case 2: case 3 -> AndroidFuelSource.NUCLEAR;
return AndroidFuelSource.LIQUID; default -> throw new IllegalStateException("Cannot convert the following Android tier to a fuel type: " + getTier());
case 3: };
return AndroidFuelSource.NUCLEAR;
default:
throw new IllegalStateException("Cannot convert the following Android tier to a fuel type: " + getTier());
}
} }
@Override @Override
@ -602,7 +598,7 @@ public class ProgrammableAndroid extends SlimefunItem implements InventoryBlock,
private void registerDefaultFuelTypes() { private void registerDefaultFuelTypes() {
switch (getFuelSource()) { switch (getFuelSource()) {
case SOLID: case SOLID -> {
registerFuelType(new MachineFuel(80, new ItemStack(Material.COAL_BLOCK))); registerFuelType(new MachineFuel(80, new ItemStack(Material.COAL_BLOCK)));
registerFuelType(new MachineFuel(45, new ItemStack(Material.BLAZE_ROD))); registerFuelType(new MachineFuel(45, new ItemStack(Material.BLAZE_ROD)));
registerFuelType(new MachineFuel(70, new ItemStack(Material.DRIED_KELP_BLOCK))); registerFuelType(new MachineFuel(70, new ItemStack(Material.DRIED_KELP_BLOCK)));
@ -620,20 +616,18 @@ public class ProgrammableAndroid extends SlimefunItem implements InventoryBlock,
for (Material mat : Tag.PLANKS.getValues()) { for (Material mat : Tag.PLANKS.getValues()) {
registerFuelType(new MachineFuel(1, new ItemStack(mat))); registerFuelType(new MachineFuel(1, new ItemStack(mat)));
} }
}
break; case LIQUID -> {
case LIQUID:
registerFuelType(new MachineFuel(100, new ItemStack(Material.LAVA_BUCKET))); registerFuelType(new MachineFuel(100, new ItemStack(Material.LAVA_BUCKET)));
registerFuelType(new MachineFuel(200, SlimefunItems.OIL_BUCKET)); registerFuelType(new MachineFuel(200, SlimefunItems.OIL_BUCKET));
registerFuelType(new MachineFuel(500, SlimefunItems.FUEL_BUCKET)); registerFuelType(new MachineFuel(500, SlimefunItems.FUEL_BUCKET));
break; }
case NUCLEAR: case NUCLEAR -> {
registerFuelType(new MachineFuel(2500, SlimefunItems.URANIUM)); registerFuelType(new MachineFuel(2500, SlimefunItems.URANIUM));
registerFuelType(new MachineFuel(1200, SlimefunItems.NEPTUNIUM)); registerFuelType(new MachineFuel(1200, SlimefunItems.NEPTUNIUM));
registerFuelType(new MachineFuel(3000, SlimefunItems.BOOSTED_URANIUM)); registerFuelType(new MachineFuel(3000, SlimefunItems.BOOSTED_URANIUM));
break; }
default: default -> throw new IllegalStateException("Unhandled Fuel Source: " + getFuelSource());
throw new IllegalStateException("Unhandled Fuel Source: " + getFuelSource());
} }
} }
@ -760,8 +754,7 @@ public class ProgrammableAndroid extends SlimefunItem implements InventoryBlock,
BlockFace rotation = POSSIBLE_ROTATIONS.get(index); BlockFace rotation = POSSIBLE_ROTATIONS.get(index);
BlockData blockData = Material.PLAYER_HEAD.createBlockData(data -> { BlockData blockData = Material.PLAYER_HEAD.createBlockData(data -> {
if (data instanceof Rotatable) { if (data instanceof Rotatable rotatable) {
Rotatable rotatable = ((Rotatable) data);
rotatable.setRotation(rotation.getOppositeFace()); rotatable.setRotation(rotation.getOppositeFace());
} }
}); });
@ -774,14 +767,12 @@ public class ProgrammableAndroid extends SlimefunItem implements InventoryBlock,
if (facedBlock.getType() == Material.DISPENSER && BlockStorage.check(facedBlock, "ANDROID_INTERFACE_ITEMS")) { if (facedBlock.getType() == Material.DISPENSER && BlockStorage.check(facedBlock, "ANDROID_INTERFACE_ITEMS")) {
BlockState state = PaperLib.getBlockState(facedBlock, false).getState(); BlockState state = PaperLib.getBlockState(facedBlock, false).getState();
if (state instanceof Dispenser) { if (state instanceof Dispenser dispenser) {
Dispenser d = (Dispenser) state;
for (int slot : getOutputSlots()) { for (int slot : getOutputSlots()) {
ItemStack stack = menu.getItemInSlot(slot); ItemStack stack = menu.getItemInSlot(slot);
if (stack != null) { if (stack != null) {
Optional<ItemStack> optional = d.getInventory().addItem(stack).values().stream().findFirst(); Optional<ItemStack> optional = dispenser.getInventory().addItem(stack).values().stream().findFirst();
if (optional.isPresent()) { if (optional.isPresent()) {
menu.replaceExistingItem(slot, optional.get()); menu.replaceExistingItem(slot, optional.get());
@ -798,14 +789,12 @@ public class ProgrammableAndroid extends SlimefunItem implements InventoryBlock,
if (facedBlock.getType() == Material.DISPENSER && BlockStorage.check(facedBlock, "ANDROID_INTERFACE_FUEL")) { if (facedBlock.getType() == Material.DISPENSER && BlockStorage.check(facedBlock, "ANDROID_INTERFACE_FUEL")) {
BlockState state = PaperLib.getBlockState(facedBlock, false).getState(); BlockState state = PaperLib.getBlockState(facedBlock, false).getState();
if (state instanceof Dispenser) { if (state instanceof Dispenser dispenser) {
Dispenser d = (Dispenser) state;
for (int slot = 0; slot < 9; slot++) { for (int slot = 0; slot < 9; slot++) {
ItemStack item = d.getInventory().getItem(slot); ItemStack item = dispenser.getInventory().getItem(slot);
if (item != null) { if (item != null) {
insertFuel(menu, d.getInventory(), slot, menu.getItemInSlot(43), item); insertFuel(menu, dispenser.getInventory(), slot, menu.getItemInSlot(43), item);
} }
} }
} }
@ -897,8 +886,7 @@ public class ProgrammableAndroid extends SlimefunItem implements InventoryBlock,
} }
BlockData blockData = Material.PLAYER_HEAD.createBlockData(data -> { BlockData blockData = Material.PLAYER_HEAD.createBlockData(data -> {
if (data instanceof Rotatable) { if (data instanceof Rotatable rotatable) {
Rotatable rotatable = ((Rotatable) data);
rotatable.setRotation(face.getOppositeFace()); rotatable.setRotation(face.getOppositeFace());
} }
}); });

View File

@ -51,7 +51,7 @@ public class StomperBoots extends SlimefunItem {
player.setVelocity(new Vector(0, 0.7, 0)); player.setVelocity(new Vector(0, 0.7, 0));
for (Entity entity : player.getNearbyEntities(4, 4, 4)) { for (Entity entity : player.getNearbyEntities(4, 4, 4)) {
if (entity instanceof LivingEntity && canPush(player, (LivingEntity) entity)) { if (entity instanceof LivingEntity livingEntity && canPush(player, livingEntity)) {
Vector velocity = getShockwave(player.getLocation(), entity.getLocation()); Vector velocity = getShockwave(player.getLocation(), entity.getLocation());
entity.setVelocity(velocity); entity.setVelocity(velocity);
@ -61,7 +61,7 @@ public class StomperBoots extends SlimefunItem {
Bukkit.getPluginManager().callEvent(event); Bukkit.getPluginManager().callEvent(event);
if (!event.isCancelled()) { if (!event.isCancelled()) {
((LivingEntity) entity).damage(event.getDamage()); livingEntity.damage(event.getDamage());
} }
} }
} }

View File

@ -175,8 +175,8 @@ public abstract class AbstractAutoCrafter extends SlimefunItem implements Energy
if (isValidInventory(targetBlock)) { if (isValidInventory(targetBlock)) {
BlockState state = PaperLib.getBlockState(targetBlock, false).getState(); BlockState state = PaperLib.getBlockState(targetBlock, false).getState();
if (state instanceof InventoryHolder) { if (state instanceof InventoryHolder inventoryHolder) {
Inventory inv = ((InventoryHolder) state).getInventory(); Inventory inv = inventoryHolder.getInventory();
if (craft(inv, recipe)) { if (craft(inv, recipe)) {
// We are done crafting! // We are done crafting!
@ -202,14 +202,13 @@ public abstract class AbstractAutoCrafter extends SlimefunItem implements Energy
protected boolean isValidInventory(@Nonnull Block block) { protected boolean isValidInventory(@Nonnull Block block) {
Material type = block.getType(); Material type = block.getType();
switch (type) { // TODO: Add designated SlimefunTag
case CHEST: return switch (type) {
case TRAPPED_CHEST: case CHEST,
case BARREL: TRAPPED_CHEST,
return true; BARREL -> true;
default: default -> SlimefunTag.SHULKER_BOXES.isTagged(type);
return SlimefunTag.SHULKER_BOXES.isTagged(type); };
}
} }
/** /**
@ -251,16 +250,16 @@ public abstract class AbstractAutoCrafter extends SlimefunItem implements Energy
BlockStateSnapshotResult result = PaperLib.getBlockState(b, false); BlockStateSnapshotResult result = PaperLib.getBlockState(b, false);
BlockState state = result.getState(); BlockState state = result.getState();
if (state instanceof Skull) { if (state instanceof Skull skull) {
if (recipe == null) { if (recipe == null) {
// Clear the value from persistent data storage // Clear the value from persistent data storage
PersistentDataAPI.remove((Skull) state, recipeStorageKey); PersistentDataAPI.remove(skull, recipeStorageKey);
// Also remove the "enabled" state since this should be per-recipe. // Also remove the "enabled" state since this should be per-recipe.
PersistentDataAPI.remove((Skull) state, recipeEnabledKey); PersistentDataAPI.remove(skull, recipeEnabledKey);
} else { } else {
// Store the value to persistent data storage // Store the value to persistent data storage
PersistentDataAPI.setString((Skull) state, recipeStorageKey, recipe.toString()); PersistentDataAPI.setString(skull, recipeStorageKey, recipe.toString());
} }
// Fixes #2899 - Update the BlockState if necessary // Fixes #2899 - Update the BlockState if necessary
@ -337,12 +336,12 @@ public abstract class AbstractAutoCrafter extends SlimefunItem implements Energy
BlockState state = PaperLib.getBlockState(b, false).getState(); BlockState state = PaperLib.getBlockState(b, false).getState();
// Make sure the block is still a Skull // Make sure the block is still a Skull
if (state instanceof Skull) { if (state instanceof Skull skull) {
if (enabled) { if (enabled) {
PersistentDataAPI.remove((Skull) state, recipeEnabledKey); PersistentDataAPI.remove(skull, recipeEnabledKey);
Slimefun.getLocalization().sendMessage(p, "messages.auto-crafting.re-enabled"); Slimefun.getLocalization().sendMessage(p, "messages.auto-crafting.re-enabled");
} else { } else {
PersistentDataAPI.setByte((Skull) state, recipeEnabledKey, (byte) 1); PersistentDataAPI.setByte(skull, recipeEnabledKey, (byte) 1);
Slimefun.getLocalization().sendMessage(p, "messages.auto-crafting.temporarily-disabled"); Slimefun.getLocalization().sendMessage(p, "messages.auto-crafting.temporarily-disabled");
} }
} }

View File

@ -136,10 +136,10 @@ public abstract class AbstractRecipe {
*/ */
@Nullable @Nullable
public static AbstractRecipe of(@Nullable Recipe recipe) { public static AbstractRecipe of(@Nullable Recipe recipe) {
if (recipe instanceof ShapedRecipe) { if (recipe instanceof ShapedRecipe shapedRecipe) {
return new VanillaRecipe((ShapedRecipe) recipe); return new VanillaRecipe(shapedRecipe);
} else if (recipe instanceof ShapelessRecipe) { } else if (recipe instanceof ShapelessRecipe shapelessRecipe) {
return new VanillaRecipe((ShapelessRecipe) recipe); return new VanillaRecipe(shapelessRecipe);
} else { } else {
return null; return null;
} }

View File

@ -60,9 +60,9 @@ public class SlimefunAutoCrafter extends AbstractAutoCrafter {
BlockState state = PaperLib.getBlockState(b, false).getState(); BlockState state = PaperLib.getBlockState(b, false).getState();
if (state instanceof Skull) { if (state instanceof Skull skull) {
// Read the stored value from persistent data storage // Read the stored value from persistent data storage
PersistentDataContainer container = ((Skull) state).getPersistentDataContainer(); PersistentDataContainer container = skull.getPersistentDataContainer();
String value = container.get(recipeStorageKey, PersistentDataType.STRING); String value = container.get(recipeStorageKey, PersistentDataType.STRING);
SlimefunItem item = SlimefunItem.getById(value); SlimefunItem item = SlimefunItem.getById(value);

View File

@ -61,9 +61,9 @@ public class VanillaAutoCrafter extends AbstractAutoCrafter {
public @Nullable AbstractRecipe getSelectedRecipe(@Nonnull Block b) { public @Nullable AbstractRecipe getSelectedRecipe(@Nonnull Block b) {
BlockState state = PaperLib.getBlockState(b, false).getState(); BlockState state = PaperLib.getBlockState(b, false).getState();
if (state instanceof Skull) { if (state instanceof Skull skull) {
// Read the stored value from persistent data storage // Read the stored value from persistent data storage
PersistentDataContainer container = ((Skull) state).getPersistentDataContainer(); PersistentDataContainer container = skull.getPersistentDataContainer();
String value = container.get(recipeStorageKey, PersistentDataType.STRING); String value = container.get(recipeStorageKey, PersistentDataType.STRING);
if (value != null) { if (value != null) {

View File

@ -81,19 +81,19 @@ class VanillaRecipe extends AbstractRecipe {
RecipeChoice[] choices = Slimefun.getMinecraftRecipeService().getRecipeShape(recipe); RecipeChoice[] choices = Slimefun.getMinecraftRecipeService().getRecipeShape(recipe);
ItemStack[] items = new ItemStack[9]; ItemStack[] items = new ItemStack[9];
if (choices.length == 1 && choices[0] instanceof MaterialChoice) { if (choices.length == 1 && choices[0] instanceof MaterialChoice materialChoice) {
items[4] = new ItemStack(((MaterialChoice) choices[0]).getChoices().get(0)); items[4] = new ItemStack(materialChoice.getChoices().get(0));
if (((MaterialChoice) choices[0]).getChoices().size() > 1) { if (materialChoice.getChoices().size() > 1) {
task.add(slots[4], (MaterialChoice) choices[0]); task.add(slots[4], materialChoice);
} }
} else { } else {
for (int i = 0; i < choices.length; i++) { for (int i = 0; i < choices.length; i++) {
if (choices[i] instanceof MaterialChoice) { if (choices[i] instanceof MaterialChoice materialChoice) {
items[i] = new ItemStack(((MaterialChoice) choices[i]).getChoices().get(0)); items[i] = new ItemStack(materialChoice.getChoices().get(0));
if (((MaterialChoice) choices[i]).getChoices().size() > 1) { if (materialChoice.getChoices().size() > 1) {
task.add(slots[i], (MaterialChoice) choices[i]); task.add(slots[i], materialChoice);
} }
} }
} }
@ -107,8 +107,8 @@ class VanillaRecipe extends AbstractRecipe {
@Override @Override
public String toString() { public String toString() {
if (recipe instanceof Keyed) { if (recipe instanceof Keyed keyed) {
return ((Keyed) recipe).getKey().toString(); return keyed.getKey().toString();
} else { } else {
return "invalid-recipe"; return "invalid-recipe";
} }

View File

@ -83,12 +83,11 @@ public abstract class AbstractMonsterSpawner extends SlimefunItem {
ItemMeta meta = item.getItemMeta(); ItemMeta meta = item.getItemMeta();
// Fixes #2583 - Proper NBT handling of Spawners // Fixes #2583 - Proper NBT handling of Spawners
if (meta instanceof BlockStateMeta) { if (meta instanceof BlockStateMeta stateMeta) {
BlockStateMeta stateMeta = (BlockStateMeta) meta;
BlockState state = stateMeta.getBlockState(); BlockState state = stateMeta.getBlockState();
if (state instanceof CreatureSpawner) { if (state instanceof CreatureSpawner spawner) {
((CreatureSpawner) state).setSpawnedType(type); spawner.setSpawnedType(type);
} }
stateMeta.setBlockState(state); stateMeta.setBlockState(state);

View File

@ -222,8 +222,7 @@ public class BlockPlacer extends SlimefunItem {
if (meta.hasDisplayName()) { if (meta.hasDisplayName()) {
BlockStateSnapshotResult blockState = PaperLib.getBlockState(facedBlock, false); BlockStateSnapshotResult blockState = PaperLib.getBlockState(facedBlock, false);
if ((blockState.getState() instanceof Nameable)) { if (blockState.getState() instanceof Nameable nameable) {
Nameable nameable = ((Nameable) blockState.getState());
nameable.setCustomName(meta.getDisplayName()); nameable.setCustomName(meta.getDisplayName());
if (blockState.isSnapshot()) { if (blockState.isSnapshot()) {

View File

@ -203,10 +203,9 @@ public class Crucible extends SimpleSlimefunItem<BlockUseHandler> implements Rec
// Fixes #2903 - Cancel physics update to resolve weird overlapping // Fixes #2903 - Cancel physics update to resolve weird overlapping
block.setType(water ? Material.WATER : Material.LAVA, false); block.setType(water ? Material.WATER : Material.LAVA, false);
} else { } else {
if (water && block.getBlockData() instanceof Waterlogged) { if (water && block.getBlockData() instanceof Waterlogged waterlogged) {
Waterlogged wl = (Waterlogged) block.getBlockData(); waterlogged.setWaterlogged(true);
wl.setWaterlogged(true); block.setBlockData(waterlogged, false);
block.setBlockData(wl, false);
block.getWorld().playSound(block.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F); block.getWorld().playSound(block.getLocation(), Sound.ENTITY_PLAYER_SPLASH, 1F, 1F);
return; return;
} }

View File

@ -87,8 +87,8 @@ public class EnhancedFurnace extends SimpleSlimefunItem<BlockTicker> {
BlockState state = result.getState(); BlockState state = result.getState();
// Check if the BlockState is a Furnace and cooking something // Check if the BlockState is a Furnace and cooking something
if (state instanceof Furnace && ((Furnace) state).getCookTime() > 0) { if (state instanceof Furnace furnace && furnace.getCookTime() > 0) {
setProgress((Furnace) state); setProgress(furnace);
// Only update if necessary // Only update if necessary
if (result.isSnapshot()) { if (result.isSnapshot()) {

View File

@ -140,11 +140,11 @@ public class HologramProjector extends SlimefunItem implements HologramOwner {
Location l = new Location(projector.getWorld(), projector.getX() + 0.5, projector.getY() + offset, projector.getZ() + 0.5); 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 && l.distanceSquared(n.getLocation()) < 0.4) { if (n instanceof ArmorStand armorStand && l.distanceSquared(n.getLocation()) < 0.4) {
String customName = n.getCustomName(); String customName = n.getCustomName();
if (customName != null && customName.equals(nametag)) { if (customName != null && customName.equals(nametag)) {
return (ArmorStand) n; return armorStand;
} }
} }
} }

View File

@ -116,8 +116,8 @@ public class IgnitionChamber extends SlimefunItem {
if (block.getType() == Material.DROPPER && BlockStorage.check(block) instanceof IgnitionChamber) { if (block.getType() == Material.DROPPER && BlockStorage.check(block) instanceof IgnitionChamber) {
BlockState state = PaperLib.getBlockState(b.getRelative(face), false).getState(); BlockState state = PaperLib.getBlockState(b.getRelative(face), false).getState();
if (state instanceof Dropper) { if (state instanceof Dropper dropper) {
return ((Dropper) state).getInventory(); return dropper.getInventory();
} }
} }
} }

View File

@ -83,8 +83,8 @@ public class OutputChest extends SlimefunItem {
// Found the output chest! Now, let's check if we can fit the product in it. // Found the output chest! Now, let's check if we can fit the product in it.
BlockState state = PaperLib.getBlockState(potentialOutput, false).getState(); BlockState state = PaperLib.getBlockState(potentialOutput, false).getState();
if (state instanceof Chest) { if (state instanceof Chest chest) {
Inventory inv = ((Chest) state).getInventory(); Inventory inv = chest.getInventory();
// Check if the Item fits into that inventory. // Check if the Item fits into that inventory.
if (InvUtils.fits(inv, item)) { if (InvUtils.fits(inv, item)) {

View File

@ -43,9 +43,7 @@ public class Multimeter extends SimpleSlimefunItem<ItemUseHandler> {
if (e.getClickedBlock().isPresent() && block.isPresent()) { if (e.getClickedBlock().isPresent() && block.isPresent()) {
SlimefunItem item = block.get(); SlimefunItem item = block.get();
if (item instanceof EnergyNetComponent) { if (item instanceof EnergyNetComponent component) {
EnergyNetComponent component = (EnergyNetComponent) item;
if (component.isChargeable()) { if (component.isChargeable()) {
e.cancel(); e.cancel();

View File

@ -67,8 +67,8 @@ public class SolarHelmet extends SlimefunItem {
private void recharge(@Nullable ItemStack item) { private void recharge(@Nullable ItemStack item) {
SlimefunItem sfItem = SlimefunItem.getByItem(item); SlimefunItem sfItem = SlimefunItem.getByItem(item);
if (sfItem instanceof Rechargeable) { if (sfItem instanceof Rechargeable rechargeable) {
((Rechargeable) sfItem).addItemCharge(item, charge.getValue().floatValue()); rechargeable.addItemCharge(item, charge.getValue().floatValue());
} }
} }

View File

@ -53,10 +53,10 @@ public class ChargingBench extends AContainer {
private boolean charge(Block b, BlockMenu inv, int slot, ItemStack item) { private boolean charge(Block b, BlockMenu inv, int slot, ItemStack item) {
SlimefunItem sfItem = SlimefunItem.getByItem(item); SlimefunItem sfItem = SlimefunItem.getByItem(item);
if (sfItem instanceof Rechargeable) { if (sfItem instanceof Rechargeable rechargeable) {
float charge = getEnergyConsumption() / 2F; float charge = getEnergyConsumption() / 2F;
if (((Rechargeable) sfItem).addItemCharge(item, charge)) { if (rechargeable.addItemCharge(item, charge)) {
removeCharge(b.getLocation(), getEnergyConsumption()); removeCharge(b.getLocation(), getEnergyConsumption());
} else if (inv.fits(item, getOutputSlots())) { } else if (inv.fits(item, getOutputSlots())) {
inv.pushItem(item, getOutputSlots()); inv.pushItem(item, getOutputSlots());

View File

@ -37,8 +37,8 @@ public class ElectricFurnace extends AContainer implements NotHopperable {
for (FurnaceRecipe recipe : snapshot.getRecipes(FurnaceRecipe.class)) { for (FurnaceRecipe recipe : snapshot.getRecipes(FurnaceRecipe.class)) {
RecipeChoice choice = recipe.getInputChoice(); RecipeChoice choice = recipe.getInputChoice();
if (choice instanceof MaterialChoice) { if (choice instanceof MaterialChoice materialChoice) {
for (Material input : ((MaterialChoice) choice).getChoices()) { for (Material input : materialChoice.getChoices()) {
registerRecipe(4, new ItemStack[] { new ItemStack(input) }, new ItemStack[] { recipe.getResult() }); registerRecipe(4, new ItemStack[] { new ItemStack(input) }, new ItemStack[] { recipe.getResult() });
} }
} }

View File

@ -227,16 +227,14 @@ public class FluidPump extends SimpleSlimefunItem<BlockTicker> implements Invent
} }
private @Nonnull ItemStack getFilledBucket(@Nonnull Block fluid) { private @Nonnull ItemStack getFilledBucket(@Nonnull Block fluid) {
switch (fluid.getType()) { return switch (fluid.getType()) {
case LAVA: case LAVA -> new ItemStack(Material.LAVA_BUCKET);
return new ItemStack(Material.LAVA_BUCKET); case WATER,
case WATER: BUBBLE_COLUMN -> new ItemStack(Material.WATER_BUCKET);
case BUBBLE_COLUMN: default ->
return new ItemStack(Material.WATER_BUCKET);
default:
// Fallback for any new liquids // Fallback for any new liquids
return new ItemStack(Material.BUCKET); new ItemStack(Material.BUCKET);
} };
} }
/** /**
@ -251,9 +249,8 @@ public class FluidPump extends SimpleSlimefunItem<BlockTicker> implements Invent
if (block.isLiquid()) { if (block.isLiquid()) {
BlockData data = block.getBlockData(); BlockData data = block.getBlockData();
if (data instanceof Levelled) { if (data instanceof Levelled levelled) {
// Check if this is a full block. // Check if this is a full block.
Levelled levelled = (Levelled) data;
return levelled.getLevel() == 0; return levelled.getLevel() == 0;
} }
} }

View File

@ -62,7 +62,7 @@ public class AnimalGrowthAccelerator extends AbstractGrowthAccelerator {
} }
private boolean isReadyToGrow(Entity n) { private boolean isReadyToGrow(Entity n) {
return n instanceof Ageable && n.isValid() && !((Ageable) n).isAdult(); return n instanceof Ageable ageable && n.isValid() && !ageable.isAdult();
} }
} }

View File

@ -128,9 +128,7 @@ public class AutoBreeder extends SlimefunItem implements InventoryBlock, EnergyN
} }
private boolean canBreed(@Nonnull Entity n) { private boolean canBreed(@Nonnull Entity n) {
if (n.isValid() && n instanceof Animals) { if (n.isValid() && n instanceof Animals animal) {
Animals animal = (Animals) n;
return animal.isAdult() && animal.canBreed() && !animal.isLoveMode(); return animal.isAdult() && animal.canBreed() && !animal.isLoveMode();
} }

View File

@ -75,8 +75,8 @@ public class ProduceCollector extends AContainer implements RecipeDisplayItem {
// Mushroom Stew from Mooshrooms // Mushroom Stew from Mooshrooms
addProduce(new AnimalProduce(new ItemStack(Material.BOWL), new ItemStack(Material.MUSHROOM_STEW), n -> { addProduce(new AnimalProduce(new ItemStack(Material.BOWL), new ItemStack(Material.MUSHROOM_STEW), n -> {
if (n instanceof MushroomCow) { if (n instanceof MushroomCow mushroomCow) {
return ((MushroomCow) n).isAdult(); return mushroomCow.isAdult();
} else { } else {
return false; return false;
} }
@ -158,8 +158,8 @@ public class ProduceCollector extends AContainer implements RecipeDisplayItem {
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
private boolean isValidAnimal(Entity n, Predicate<LivingEntity> predicate) { private boolean isValidAnimal(Entity n, Predicate<LivingEntity> predicate) {
if (n instanceof LivingEntity) { if (n instanceof LivingEntity livingEntity) {
return predicate.test((LivingEntity) n); return predicate.test(livingEntity);
} else { } else {
return false; return false;
} }

View File

@ -44,8 +44,8 @@ public abstract class NetherStarReactor extends Reactor {
public void extraTick(@Nonnull Location l) { public void extraTick(@Nonnull Location l) {
Slimefun.runSync(() -> { Slimefun.runSync(() -> {
for (Entity entity : l.getWorld().getNearbyEntities(l, 5, 5, 5, n -> n instanceof LivingEntity && n.isValid())) { for (Entity entity : l.getWorld().getNearbyEntities(l, 5, 5, 5, n -> n instanceof LivingEntity && n.isValid())) {
if (entity instanceof LivingEntity) { if (entity instanceof LivingEntity livingEntity) {
((LivingEntity) entity).addPotionEffect(new PotionEffect(PotionEffectType.WITHER, 60, 1)); livingEntity.addPotionEffect(new PotionEffect(PotionEffectType.WITHER, 60, 1));
} }
} }
}); });

View File

@ -49,8 +49,8 @@ public class Juice extends SimpleSlimefunItem<ItemConsumptionHandler> {
ItemMeta meta = item.getItemMeta(); ItemMeta meta = item.getItemMeta();
if (meta instanceof PotionMeta) { if (meta instanceof PotionMeta potionMeta) {
effects = ((PotionMeta) meta).getCustomEffects(); effects = potionMeta.getCustomEffects();
} else { } else {
effects = new ArrayList<>(); effects = new ArrayList<>();
} }

View File

@ -107,8 +107,7 @@ public class InfusedHopper extends SimpleSlimefunItem<BlockTicker> {
} }
private boolean isValidItem(@Nonnull Location l, @Nonnull Entity entity) { private boolean isValidItem(@Nonnull Location l, @Nonnull Entity entity) {
if (entity instanceof Item && entity.isValid()) { if (entity instanceof Item item && entity.isValid()) {
Item item = (Item) entity;
// Check if the item cannot be picked up or has the "no pickup" metadata // Check if the item cannot be picked up or has the "no pickup" metadata
return item.getPickupDelay() <= 0 && !SlimefunUtils.hasNoPickupFlag(item) && item.getLocation().distanceSquared(l) > 0.25; return item.getPickupDelay() <= 0 && !SlimefunUtils.hasNoPickupFlag(item) && item.getLocation().distanceSquared(l) > 0.25;
} }

View File

@ -61,12 +61,12 @@ public class MagicalZombiePills extends SimpleSlimefunItem<EntityInteractHandler
Player p = e.getPlayer(); Player p = e.getPlayer();
if (entity instanceof ZombieVillager) { if (entity instanceof ZombieVillager zombieVillager) {
useItem(p, item); useItem(p, item);
healZombieVillager((ZombieVillager) entity, p); healZombieVillager(zombieVillager, p);
} else if (Slimefun.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_16) && entity instanceof PigZombie) { } else if (Slimefun.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_16) && entity instanceof PigZombie pigZombie) {
useItem(p, item); useItem(p, item);
healZombifiedPiglin((PigZombie) entity); healZombifiedPiglin(pigZombie);
} }
}; };
} }

View File

@ -183,9 +183,7 @@ public class EnchantmentRune extends SimpleSlimefunItem<ItemDropHandler> {
} }
private boolean findCompatibleItem(@Nonnull Entity n) { private boolean findCompatibleItem(@Nonnull Entity n) {
if (n instanceof Item) { if (n instanceof Item item) {
Item item = (Item) n;
return !isItem(item.getItemStack()); return !isItem(item.getItemStack());
} }

View File

@ -43,10 +43,8 @@ public class VillagerRune extends SimpleSlimefunItem<EntityInteractHandler> {
return; return;
} }
if (e.getRightClicked() instanceof Villager) { if (e.getRightClicked() instanceof Villager villager) {
Villager v = (Villager) e.getRightClicked(); if (villager.getProfession() == Profession.NONE || villager.getProfession() == Profession.NITWIT) {
if (v.getProfession() == Profession.NONE || v.getProfession() == Profession.NITWIT) {
return; return;
} }
@ -55,16 +53,16 @@ public class VillagerRune extends SimpleSlimefunItem<EntityInteractHandler> {
} }
// Reset Villager // Reset Villager
v.setVillagerExperience(0); villager.setVillagerExperience(0);
v.setVillagerLevel(1); villager.setVillagerLevel(1);
v.setProfession(Profession.NONE); villager.setProfession(Profession.NONE);
e.setCancelled(true); e.setCancelled(true);
double offset = ThreadLocalRandom.current().nextDouble(0.5); double offset = ThreadLocalRandom.current().nextDouble(0.5);
v.getWorld().playSound(v.getLocation(), Sound.ENTITY_VILLAGER_CELEBRATE, 1, 1.4F); villager.getWorld().playSound(villager.getLocation(), Sound.ENTITY_VILLAGER_CELEBRATE, 1, 1.4F);
v.getWorld().spawnParticle(Particle.CRIMSON_SPORE, v.getLocation(), 10, 0, offset / 2, 0, 0); villager.getWorld().spawnParticle(Particle.CRIMSON_SPORE, villager.getLocation(), 10, 0, offset / 2, 0, 0);
v.getWorld().spawnParticle(Particle.ENCHANTMENT_TABLE, v.getLocation(), 5, 0.04, 1, 0.04); villager.getWorld().spawnParticle(Particle.ENCHANTMENT_TABLE, villager.getLocation(), 5, 0.04, 1, 0.04);
} }
}; };
} }

View File

@ -162,12 +162,10 @@ public class Talisman extends SlimefunItem {
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
public static boolean trigger(Event e, SlimefunItem item, boolean sendMessage) { public static boolean trigger(Event e, SlimefunItem item, boolean sendMessage) {
if (!(item instanceof Talisman)) { if (!(item instanceof Talisman talisman)) {
return false; return false;
} }
Talisman talisman = (Talisman) item;
if (ThreadLocalRandom.current().nextInt(100) > talisman.getChance()) { if (ThreadLocalRandom.current().nextInt(100) > talisman.getChance()) {
return false; return false;
} }
@ -239,8 +237,8 @@ public class Talisman extends SlimefunItem {
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
private static void cancelEvent(Event e, Talisman talisman) { private static void cancelEvent(Event e, Talisman talisman) {
if (e instanceof Cancellable && talisman.isEventCancelled()) { if (e instanceof Cancellable cancellable && talisman.isEventCancelled()) {
((Cancellable) e).setCancelled(true); cancellable.setCancelled(true);
} }
} }
@ -301,18 +299,18 @@ public class Talisman extends SlimefunItem {
@Nullable @Nullable
private static Player getPlayerByEventType(@Nonnull Event e) { private static Player getPlayerByEventType(@Nonnull Event e) {
if (e instanceof EntityDeathEvent) { if (e instanceof EntityDeathEvent entityDeathEvent) {
return ((EntityDeathEvent) e).getEntity().getKiller(); return entityDeathEvent.getEntity().getKiller();
} else if (e instanceof BlockBreakEvent) { } else if (e instanceof BlockBreakEvent blockBreakEvent) {
return ((BlockBreakEvent) e).getPlayer(); return blockBreakEvent.getPlayer();
} else if (e instanceof BlockDropItemEvent) { } else if (e instanceof BlockDropItemEvent blockDropItemEvent) {
return ((BlockDropItemEvent) e).getPlayer(); return blockDropItemEvent.getPlayer();
} else if (e instanceof PlayerEvent) { } else if (e instanceof PlayerEvent playerEvent) {
return ((PlayerEvent) e).getPlayer(); return playerEvent.getPlayer();
} else if (e instanceof EntityEvent) { } else if (e instanceof EntityEvent entityEvent) {
return (Player) ((EntityEvent) e).getEntity(); return (Player) entityEvent.getEntity();
} else if (e instanceof EnchantItemEvent) { } else if (e instanceof EnchantItemEvent enchantItemEvent) {
return ((EnchantItemEvent) e).getEnchanter(); return enchantItemEvent.getEnchanter();
} }
return null; return null;

View File

@ -70,10 +70,8 @@ public class StrangeNetherGoo extends SimpleSlimefunItem<ItemUseHandler> impleme
private EntityInteractHandler onRightClickEntity() { private EntityInteractHandler onRightClickEntity() {
return (e, item, hand) -> { return (e, item, hand) -> {
if (e.getRightClicked() instanceof Sheep) { if (e.getRightClicked() instanceof Sheep sheep) {
Sheep s = (Sheep) e.getRightClicked(); if (sheep.getCustomName() != null) {
if (s.getCustomName() != null) {
e.setCancelled(true); e.setCancelled(true);
return; return;
} }
@ -83,9 +81,9 @@ public class StrangeNetherGoo extends SimpleSlimefunItem<ItemUseHandler> impleme
} }
// Give Sheep color, name and effect // Give Sheep color, name and effect
s.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 60, 2)); sheep.addPotionEffect(new PotionEffect(PotionEffectType.POISON, 60, 2));
s.setColor(DyeColor.PURPLE); sheep.setColor(DyeColor.PURPLE);
s.setCustomName(ChatColor.DARK_PURPLE + "Tainted Sheep"); sheep.setCustomName(ChatColor.DARK_PURPLE + "Tainted Sheep");
e.setCancelled(true); e.setCancelled(true);
} }

View File

@ -38,12 +38,11 @@ abstract class AbstractSmeltery extends MultiBlockMachine {
@Override @Override
public void onInteract(Player p, Block b) { public void onInteract(Player p, Block b) {
Block dispBlock = b.getRelative(BlockFace.DOWN); Block possibleDispenser = b.getRelative(BlockFace.DOWN);
BlockState state = PaperLib.getBlockState(dispBlock, false).getState(); BlockState state = PaperLib.getBlockState(possibleDispenser, false).getState();
if (state instanceof Dispenser) { if (state instanceof Dispenser dispenser) {
Dispenser disp = (Dispenser) state; Inventory inv = dispenser.getInventory();
Inventory inv = disp.getInventory();
List<ItemStack[]> inputs = RecipeType.getRecipeInputList(this); List<ItemStack[]> inputs = RecipeType.getRecipeInputList(this);
for (int i = 0; i < inputs.size(); i++) { for (int i = 0; i < inputs.size(); i++) {
@ -51,7 +50,7 @@ abstract class AbstractSmeltery extends MultiBlockMachine {
ItemStack output = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); ItemStack output = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone();
if (SlimefunUtils.canPlayerUseItem(p, output, true)) { if (SlimefunUtils.canPlayerUseItem(p, output, true)) {
Inventory outputInv = findOutputInventory(output, dispBlock, inv); Inventory outputInv = findOutputInventory(output, possibleDispenser, inv);
if (outputInv != null) { if (outputInv != null) {
craft(p, b, inv, inputs.get(i), output, outputInv); craft(p, b, inv, inputs.get(i), output, outputInv);

View File

@ -31,12 +31,11 @@ public class ArmorForge extends AbstractCraftingTable {
@Override @Override
public void onInteract(Player p, Block b) { public void onInteract(Player p, Block b) {
Block dispenser = b.getRelative(BlockFace.DOWN); Block possibleDispenser = b.getRelative(BlockFace.DOWN);
BlockState state = PaperLib.getBlockState(dispenser, false).getState(); BlockState state = PaperLib.getBlockState(possibleDispenser, false).getState();
if (state instanceof Dispenser) { if (state instanceof Dispenser dispenser) {
Dispenser disp = (Dispenser) state; Inventory inv = dispenser.getInventory();
Inventory inv = disp.getInventory();
List<ItemStack[]> inputs = RecipeType.getRecipeInputList(this); List<ItemStack[]> inputs = RecipeType.getRecipeInputList(this);
for (int i = 0; i < inputs.size(); i++) { for (int i = 0; i < inputs.size(); i++) {
@ -44,7 +43,7 @@ public class ArmorForge extends AbstractCraftingTable {
ItemStack output = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); ItemStack output = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone();
if (SlimefunUtils.canPlayerUseItem(p, output, true)) { if (SlimefunUtils.canPlayerUseItem(p, output, true)) {
craft(p, output, inv, dispenser); craft(p, output, inv, possibleDispenser);
} }
return; return;

View File

@ -57,9 +57,8 @@ public class Compressor extends MultiBlockMachine {
Block dispBlock = b.getRelative(BlockFace.DOWN); Block dispBlock = b.getRelative(BlockFace.DOWN);
BlockState state = PaperLib.getBlockState(dispBlock, false).getState(); BlockState state = PaperLib.getBlockState(dispBlock, false).getState();
if (state instanceof Dispenser) { if (state instanceof Dispenser dispenser) {
Dispenser disp = (Dispenser) state; Inventory inv = dispenser.getInventory();
Inventory inv = disp.getInventory();
for (ItemStack item : inv.getContents()) { for (ItemStack item : inv.getContents()) {
for (ItemStack recipeInput : RecipeType.getRecipeInputs(this)) { for (ItemStack recipeInput : RecipeType.getRecipeInputs(this)) {

View File

@ -33,12 +33,11 @@ public class EnhancedCraftingTable extends AbstractCraftingTable {
@Override @Override
public void onInteract(Player p, Block b) { public void onInteract(Player p, Block b) {
Block dispenser = b.getRelative(BlockFace.DOWN); Block possibleDispenser = b.getRelative(BlockFace.DOWN);
BlockState state = PaperLib.getBlockState(dispenser, false).getState(); BlockState state = PaperLib.getBlockState(possibleDispenser, false).getState();
if (state instanceof Dispenser) { if (state instanceof Dispenser dispenser) {
Dispenser disp = (Dispenser) state; Inventory inv = dispenser.getInventory();
Inventory inv = disp.getInventory();
List<ItemStack[]> inputs = RecipeType.getRecipeInputList(this); List<ItemStack[]> inputs = RecipeType.getRecipeInputList(this);
for (int i = 0; i < inputs.size(); i++) { for (int i = 0; i < inputs.size(); i++) {
@ -46,7 +45,7 @@ public class EnhancedCraftingTable extends AbstractCraftingTable {
ItemStack output = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); ItemStack output = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone();
if (SlimefunUtils.canPlayerUseItem(p, output, true)) { if (SlimefunUtils.canPlayerUseItem(p, output, true)) {
craft(inv, dispenser, p, b, output); craft(inv, possibleDispenser, p, b, output);
} }
return; return;
@ -68,8 +67,8 @@ public class EnhancedCraftingTable extends AbstractCraftingTable {
if (outputInv != null) { if (outputInv != null) {
SlimefunItem sfItem = SlimefunItem.getByItem(output); SlimefunItem sfItem = SlimefunItem.getByItem(output);
if (sfItem instanceof SlimefunBackpack) { if (sfItem instanceof SlimefunBackpack backpack) {
upgradeBackpack(p, inv, (SlimefunBackpack) sfItem, output); upgradeBackpack(p, inv, backpack, output);
} }
for (int j = 0; j < 9; j++) { for (int j = 0; j < 9; j++) {

View File

@ -106,18 +106,17 @@ public class GrindStone extends MultiBlockMachine {
@Override @Override
public void onInteract(Player p, Block b) { public void onInteract(Player p, Block b) {
Block dispBlock = b.getRelative(BlockFace.DOWN); Block possibleDispenser = b.getRelative(BlockFace.DOWN);
BlockState state = PaperLib.getBlockState(dispBlock, false).getState(); BlockState state = PaperLib.getBlockState(possibleDispenser, false).getState();
if (state instanceof Dispenser) { if (state instanceof Dispenser dispenser) {
Dispenser disp = (Dispenser) state; Inventory inv = dispenser.getInventory();
Inventory inv = disp.getInventory();
for (ItemStack current : inv.getContents()) { for (ItemStack current : inv.getContents()) {
for (ItemStack convert : RecipeType.getRecipeInputs(this)) { for (ItemStack convert : RecipeType.getRecipeInputs(this)) {
if (convert != null && SlimefunUtils.isItemSimilar(current, convert, true)) { if (convert != null && SlimefunUtils.isItemSimilar(current, convert, true)) {
ItemStack output = RecipeType.getRecipeOutput(this, convert); ItemStack output = RecipeType.getRecipeOutput(this, convert);
Inventory outputInv = findOutputInventory(output, dispBlock, inv); Inventory outputInv = findOutputInventory(output, possibleDispenser, inv);
if (outputInv != null) { if (outputInv != null) {
ItemStack removing = current.clone(); ItemStack removing = current.clone();

View File

@ -50,18 +50,17 @@ public class Juicer extends MultiBlockMachine {
@Override @Override
public void onInteract(Player p, Block b) { public void onInteract(Player p, Block b) {
Block dispBlock = b.getRelative(BlockFace.DOWN); Block possibleDispenser = b.getRelative(BlockFace.DOWN);
BlockState state = PaperLib.getBlockState(dispBlock, false).getState(); BlockState state = PaperLib.getBlockState(possibleDispenser, false).getState();
if (state instanceof Dispenser) { if (state instanceof Dispenser dispenser) {
Dispenser disp = (Dispenser) state; Inventory inv = dispenser.getInventory();
Inventory inv = disp.getInventory();
for (ItemStack current : inv.getContents()) { for (ItemStack current : inv.getContents()) {
for (ItemStack convert : RecipeType.getRecipeInputs(this)) { for (ItemStack convert : RecipeType.getRecipeInputs(this)) {
if (convert != null && SlimefunUtils.isItemSimilar(current, convert, true)) { if (convert != null && SlimefunUtils.isItemSimilar(current, convert, true)) {
ItemStack adding = RecipeType.getRecipeOutput(this, convert); ItemStack adding = RecipeType.getRecipeOutput(this, convert);
Inventory outputInv = findOutputInventory(adding, dispBlock, inv); Inventory outputInv = findOutputInventory(adding, possibleDispenser, inv);
if (outputInv != null) { if (outputInv != null) {
ItemStack removing = current.clone(); ItemStack removing = current.clone();

View File

@ -34,18 +34,17 @@ public class MagicWorkbench extends AbstractCraftingTable {
@Override @Override
public void onInteract(Player p, Block b) { public void onInteract(Player p, Block b) {
Block dispenser = locateDispenser(b); Block possibleDispener = locateDispenser(b);
if (dispenser == null) { if (possibleDispener == null) {
// How even... // How even...
return; return;
} }
BlockState state = PaperLib.getBlockState(dispenser, false).getState(); BlockState state = PaperLib.getBlockState(possibleDispener, false).getState();
if (state instanceof Dispenser) { if (state instanceof Dispenser dispenser) {
Dispenser disp = (Dispenser) state; Inventory inv = dispenser.getInventory();
Inventory inv = disp.getInventory();
List<ItemStack[]> inputs = RecipeType.getRecipeInputList(this); List<ItemStack[]> inputs = RecipeType.getRecipeInputList(this);
for (int i = 0; i < inputs.size(); i++) { for (int i = 0; i < inputs.size(); i++) {
@ -53,7 +52,7 @@ public class MagicWorkbench extends AbstractCraftingTable {
ItemStack output = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone(); ItemStack output = RecipeType.getRecipeOutputList(this, inputs.get(i)).clone();
if (SlimefunUtils.canPlayerUseItem(p, output, true)) { if (SlimefunUtils.canPlayerUseItem(p, output, true)) {
craft(inv, dispenser, p, b, output); craft(inv, possibleDispener, p, b, output);
} }
return; return;
@ -76,8 +75,8 @@ public class MagicWorkbench extends AbstractCraftingTable {
if (outputInv != null) { if (outputInv != null) {
SlimefunItem sfItem = SlimefunItem.getByItem(output); SlimefunItem sfItem = SlimefunItem.getByItem(output);
if (sfItem instanceof SlimefunBackpack) { if (sfItem instanceof SlimefunBackpack backpack) {
upgradeBackpack(p, inv, (SlimefunBackpack) sfItem, output); upgradeBackpack(p, inv, backpack, output);
} }
for (int j = 0; j < 9; j++) { for (int j = 0; j < 9; j++) {

View File

@ -173,18 +173,17 @@ public class OreCrusher extends MultiBlockMachine {
@Override @Override
public void onInteract(Player p, Block b) { public void onInteract(Player p, Block b) {
Block dispBlock = b.getRelative(BlockFace.DOWN); Block possibleDispenser = b.getRelative(BlockFace.DOWN);
BlockState state = PaperLib.getBlockState(dispBlock, false).getState(); BlockState state = PaperLib.getBlockState(possibleDispenser, false).getState();
if (state instanceof Dispenser) { if (state instanceof Dispenser dispenser) {
Dispenser disp = (Dispenser) state; Inventory inv = dispenser.getInventory();
Inventory inv = disp.getInventory();
for (ItemStack current : inv.getContents()) { for (ItemStack current : inv.getContents()) {
for (ItemStack convert : RecipeType.getRecipeInputs(this)) { for (ItemStack convert : RecipeType.getRecipeInputs(this)) {
if (convert != null && SlimefunUtils.isItemSimilar(current, convert, true)) { if (convert != null && SlimefunUtils.isItemSimilar(current, convert, true)) {
ItemStack adding = RecipeType.getRecipeOutput(this, convert); ItemStack adding = RecipeType.getRecipeOutput(this, convert);
Inventory outputInv = findOutputInventory(adding, dispBlock, inv); Inventory outputInv = findOutputInventory(adding, possibleDispenser, inv);
if (SlimefunUtils.canPlayerUseItem(p, adding, true)) { if (SlimefunUtils.canPlayerUseItem(p, adding, true)) {
if (outputInv != null) { if (outputInv != null) {

View File

@ -39,25 +39,24 @@ public class PressureChamber extends MultiBlockMachine {
@Override @Override
public void onInteract(Player p, Block b) { public void onInteract(Player p, Block b) {
Block dispBlock = b.getRelative(BlockFace.UP).getRelative(BlockFace.UP); Block possibleDispenser = b.getRelative(BlockFace.UP).getRelative(BlockFace.UP);
BlockState state = PaperLib.getBlockState(dispBlock, false).getState(); BlockState state = PaperLib.getBlockState(possibleDispenser, false).getState();
if (state instanceof Dispenser) { if (state instanceof Dispenser dispenser) {
Dispenser disp = (Dispenser) state; Inventory inv = dispenser.getInventory();
Inventory inv = disp.getInventory();
for (ItemStack current : inv.getContents()) { for (ItemStack current : inv.getContents()) {
for (ItemStack convert : RecipeType.getRecipeInputs(this)) { for (ItemStack convert : RecipeType.getRecipeInputs(this)) {
if (convert != null && SlimefunUtils.isItemSimilar(current, convert, true)) { if (convert != null && SlimefunUtils.isItemSimilar(current, convert, true)) {
ItemStack output = RecipeType.getRecipeOutput(this, convert); ItemStack output = RecipeType.getRecipeOutput(this, convert);
Inventory outputInv = findOutputInventory(output, dispBlock, inv); Inventory outputInv = findOutputInventory(output, possibleDispenser, inv);
if (outputInv != null) { if (outputInv != null) {
ItemStack removing = current.clone(); ItemStack removing = current.clone();
removing.setAmount(convert.getAmount()); removing.setAmount(convert.getAmount());
inv.removeItem(removing); inv.removeItem(removing);
craft(p, b, output, inv, dispBlock); craft(p, b, output, inv, possibleDispenser);
} else { } else {
Slimefun.getLocalization().sendMessage(p, "machines.full-inventory", true); Slimefun.getLocalization().sendMessage(p, "machines.full-inventory", true);
} }

View File

@ -143,7 +143,6 @@ class MiningTask implements Runnable {
if (fuelLevel <= 0) { if (fuelLevel <= 0) {
// This Miner has not enough fuel. // This Miner has not enough fuel.
stop(MinerStoppingReason.NO_FUEL); stop(MinerStoppingReason.NO_FUEL);
return;
} }
}); });
@ -268,8 +267,8 @@ class MiningTask implements Runnable {
if (chest.getType() == Material.CHEST) { if (chest.getType() == Material.CHEST) {
BlockState state = PaperLib.getBlockState(chest, false).getState(); BlockState state = PaperLib.getBlockState(chest, false).getState();
if (state instanceof Chest) { if (state instanceof Chest chest) {
Inventory inv = ((Chest) state).getBlockInventory(); Inventory inv = chest.getBlockInventory();
if (InvUtils.fits(inv, item)) { if (InvUtils.fits(inv, item)) {
inv.addItem(item); inv.addItem(item);
@ -299,7 +298,7 @@ class MiningTask implements Runnable {
if (chest.getType() == Material.CHEST) { if (chest.getType() == Material.CHEST) {
BlockState state = PaperLib.getBlockState(chest, false).getState(); BlockState state = PaperLib.getBlockState(chest, false).getState();
if (state instanceof Chest) { if (state instanceof Chest chest) {
Inventory inv = ((Chest) state).getBlockInventory(); Inventory inv = ((Chest) state).getBlockInventory();
this.fuelLevel = grabFuelFrom(inv); this.fuelLevel = grabFuelFrom(inv);
} }

View File

@ -19,26 +19,17 @@ class OreDictionary14 implements OreDictionary {
@Override @Override
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
public @Nonnull ItemStack getDrops(Material material, Random random) { public @Nonnull ItemStack getDrops(Material material, Random random) {
switch (material) { return switch (material) {
case COAL_ORE: case COAL_ORE -> new ItemStack(Material.COAL);
return new ItemStack(Material.COAL); case DIAMOND_ORE -> new ItemStack(Material.DIAMOND);
case DIAMOND_ORE: case EMERALD_ORE -> new ItemStack(Material.EMERALD);
return new ItemStack(Material.DIAMOND); case REDSTONE_ORE -> new ItemStack(Material.REDSTONE, 4 + random.nextInt(2));
case EMERALD_ORE: case LAPIS_ORE -> new ItemStack(Material.LAPIS_LAZULI, 4 + random.nextInt(4));
return new ItemStack(Material.EMERALD); case NETHER_QUARTZ_ORE -> new ItemStack(Material.QUARTZ);
case REDSTONE_ORE: case IRON_ORE -> new ItemStack(Material.IRON_ORE);
return new ItemStack(Material.REDSTONE, 4 + random.nextInt(2)); case GOLD_ORE -> new ItemStack(Material.GOLD_ORE);
case LAPIS_ORE: default -> new ItemStack(material);
return new ItemStack(Material.LAPIS_LAZULI, 4 + random.nextInt(4)); };
case NETHER_QUARTZ_ORE:
return new ItemStack(Material.QUARTZ);
case IRON_ORE:
return new ItemStack(Material.IRON_ORE);
case GOLD_ORE:
return new ItemStack(Material.GOLD_ORE);
default:
return new ItemStack(material);
}
} }
} }

View File

@ -19,15 +19,12 @@ class OreDictionary16 extends OreDictionary14 {
@Override @Override
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
public @Nonnull ItemStack getDrops(Material material, Random random) { public @Nonnull ItemStack getDrops(Material material, Random random) {
switch (material) { return switch (material) {
case NETHER_GOLD_ORE:
// In 1.16, breaking nether gold ores should get gold nuggets // In 1.16, breaking nether gold ores should get gold nuggets
return new ItemStack(Material.GOLD_NUGGET, 2 + random.nextInt(4)); case NETHER_GOLD_ORE -> new ItemStack(Material.GOLD_NUGGET, 2 + random.nextInt(4));
case ANCIENT_DEBRIS: case ANCIENT_DEBRIS -> new ItemStack(Material.ANCIENT_DEBRIS);
return new ItemStack(Material.ANCIENT_DEBRIS); default -> super.getDrops(material, random);
default: };
return super.getDrops(material, random);
}
} }
} }

View File

@ -19,34 +19,25 @@ class OreDictionary17 extends OreDictionary16 {
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
public ItemStack getDrops(Material material, Random random) { public ItemStack getDrops(Material material, Random random) {
// In 1.17, breaking metal ores should get raw metals. Also support deepslate ores. // In 1.17, breaking metal ores should get raw metals. Also support deepslate ores.
switch (material) { return switch (material) {
case COAL_ORE: case COAL_ORE,
case DEEPSLATE_COAL_ORE: DEEPSLATE_COAL_ORE -> new ItemStack(Material.COAL);
return new ItemStack(Material.COAL); case DIAMOND_ORE,
case DIAMOND_ORE: DEEPSLATE_DIAMOND_ORE -> new ItemStack(Material.DIAMOND);
case DEEPSLATE_DIAMOND_ORE: case EMERALD_ORE,
return new ItemStack(Material.DIAMOND); DEEPSLATE_EMERALD_ORE -> new ItemStack(Material.EMERALD);
case EMERALD_ORE: case REDSTONE_ORE,
case DEEPSLATE_EMERALD_ORE: DEEPSLATE_REDSTONE_ORE -> new ItemStack(Material.REDSTONE, 4 + random.nextInt(2));
return new ItemStack(Material.EMERALD); case LAPIS_ORE,
case REDSTONE_ORE: DEEPSLATE_LAPIS_ORE -> new ItemStack(Material.LAPIS_LAZULI, 4 + random.nextInt(4));
case DEEPSLATE_REDSTONE_ORE: case COPPER_ORE,
return new ItemStack(Material.REDSTONE, 4 + random.nextInt(2)); DEEPSLATE_COPPER_ORE -> new ItemStack(Material.RAW_COPPER);
case LAPIS_ORE: case IRON_ORE,
case DEEPSLATE_LAPIS_ORE: DEEPSLATE_IRON_ORE -> new ItemStack(Material.RAW_IRON);
return new ItemStack(Material.LAPIS_LAZULI, 4 + random.nextInt(4)); case GOLD_ORE,
case COPPER_ORE: DEEPSLATE_GOLD_ORE -> new ItemStack(Material.RAW_GOLD);
case DEEPSLATE_COPPER_ORE: default -> super.getDrops(material, random);
return new ItemStack(Material.RAW_COPPER); };
case IRON_ORE:
case DEEPSLATE_IRON_ORE:
return new ItemStack(Material.RAW_IRON);
case GOLD_ORE:
case DEEPSLATE_GOLD_ORE:
return new ItemStack(Material.RAW_GOLD);
default:
return super.getDrops(material, random);
}
} }
} }

View File

@ -61,9 +61,9 @@ public class PickaxeOfContainment extends SimpleSlimefunItem<ToolUseHandler> {
private @Nonnull ItemStack breakSpawner(@Nonnull Block b) { private @Nonnull ItemStack breakSpawner(@Nonnull Block b) {
AbstractMonsterSpawner spawner; AbstractMonsterSpawner spawner;
/** /*
* If the spawner's BlockStorage has BlockInfo, then it's not a vanilla spawner If the spawner's BlockStorage has BlockInfo, then it's not a vanilla spawner
* and should not give a broken spawner but a repaired one instead. and should not give a broken spawner but a repaired one instead.
*/ */
if (BlockStorage.hasBlockInfo(b)) { if (BlockStorage.hasBlockInfo(b)) {
spawner = (AbstractMonsterSpawner) SlimefunItems.REPAIRED_SPAWNER.getItem(); spawner = (AbstractMonsterSpawner) SlimefunItems.REPAIRED_SPAWNER.getItem();
@ -73,8 +73,8 @@ public class PickaxeOfContainment extends SimpleSlimefunItem<ToolUseHandler> {
BlockState state = PaperLib.getBlockState(b, false).getState(); BlockState state = PaperLib.getBlockState(b, false).getState();
if (state instanceof CreatureSpawner) { if (state instanceof CreatureSpawner creatureSpawner) {
EntityType entityType = ((CreatureSpawner) state).getSpawnedType(); EntityType entityType = creatureSpawner.getSpawnedType();
return spawner.getItemForEntityType(entityType); return spawner.getItemForEntityType(entityType);
} }

View File

@ -36,16 +36,14 @@ public class IcyBow extends SlimefunBow {
@Override @Override
public BowShootHandler onShoot() { public BowShootHandler onShoot() {
return (e, n) -> { return (e, n) -> {
if (n instanceof Player) { if (n instanceof Player player) {
Player p = (Player) n;
// Fixes #3060 - Don't apply effects if the arrow was successfully blocked. // Fixes #3060 - Don't apply effects if the arrow was successfully blocked.
if (p.isBlocking() && e.getFinalDamage() <= 0) { if (player.isBlocking() && e.getFinalDamage() <= 0) {
return; return;
} }
if (Slimefun.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_17)) { if (Slimefun.getMinecraftVersion().isAtLeast(MinecraftVersion.MINECRAFT_1_17)) {
p.setFreezeTicks(60); player.setFreezeTicks(60);
} }
} }
n.getWorld().playEffect(n.getLocation(), Effect.STEP_SOUND, Material.ICE); n.getWorld().playEffect(n.getLocation(), Effect.STEP_SOUND, Material.ICE);

View File

@ -57,7 +57,7 @@ public class AutoCrafterListener implements Listener {
SlimefunItem block = slimefunBlock.get(); SlimefunItem block = slimefunBlock.get();
if (block instanceof AbstractAutoCrafter) { if (block instanceof AbstractAutoCrafter crafter) {
Optional<SlimefunItem> slimefunItem = e.getSlimefunItem(); Optional<SlimefunItem> slimefunItem = e.getSlimefunItem();
if (!e.getPlayer().isSneaking() && slimefunItem.isPresent() && slimefunItem.get() instanceof Multimeter) { if (!e.getPlayer().isSneaking() && slimefunItem.isPresent() && slimefunItem.get() instanceof Multimeter) {
@ -80,8 +80,6 @@ public class AutoCrafterListener implements Listener {
} }
// Fixes 2896 - Forward the interaction before items get handled. // Fixes 2896 - Forward the interaction before items get handled.
AbstractAutoCrafter crafter = (AbstractAutoCrafter) block;
try { try {
crafter.onRightClick(clickedBlock.get(), e.getPlayer()); crafter.onRightClick(clickedBlock.get(), e.getPlayer());
} catch (Exception | LinkageError x) { } catch (Exception | LinkageError x) {
@ -94,7 +92,7 @@ public class AutoCrafterListener implements Listener {
@ParametersAreNonnullByDefault @ParametersAreNonnullByDefault
private boolean hasUnlockedRecipe(Player p, ItemStack item) { private boolean hasUnlockedRecipe(Player p, ItemStack item) {
for (Recipe recipe : Slimefun.getMinecraftRecipeService().getRecipesFor(item)) { for (Recipe recipe : Slimefun.getMinecraftRecipeService().getRecipesFor(item)) {
if (recipe instanceof Keyed && !p.hasDiscoveredRecipe(((Keyed) recipe).getKey())) { if (recipe instanceof Keyed keyed && !p.hasDiscoveredRecipe(keyed.getKey())) {
return false; return false;
} }
} }

View File

@ -94,12 +94,12 @@ public class BackpackListener implements Listener {
if (item != null) { if (item != null) {
SlimefunItem backpack = SlimefunItem.getByItem(item); SlimefunItem backpack = SlimefunItem.getByItem(item);
if (backpack instanceof SlimefunBackpack) { if (backpack instanceof SlimefunBackpack slimefunBackpack) {
if (e.getClick() == ClickType.NUMBER_KEY) { if (e.getClick() == ClickType.NUMBER_KEY) {
if (e.getClickedInventory().getType() != InventoryType.PLAYER) { if (e.getClickedInventory().getType() != InventoryType.PLAYER) {
ItemStack hotbarItem = e.getWhoClicked().getInventory().getItem(e.getHotbarButton()); ItemStack hotbarItem = e.getWhoClicked().getInventory().getItem(e.getHotbarButton());
if (!isAllowed((SlimefunBackpack) backpack, hotbarItem)) { if (!isAllowed(slimefunBackpack, hotbarItem)) {
e.setCancelled(true); e.setCancelled(true);
} }
} }
@ -107,10 +107,10 @@ public class BackpackListener implements Listener {
// Fixes #3265 // Fixes #3265
ItemStack offHandItem = e.getWhoClicked().getInventory().getItemInOffHand(); ItemStack offHandItem = e.getWhoClicked().getInventory().getItemInOffHand();
if (!isAllowed((SlimefunBackpack) backpack, offHandItem)) { if (!isAllowed(slimefunBackpack, offHandItem)) {
e.setCancelled(true); e.setCancelled(true);
} }
} else if (!isAllowed((SlimefunBackpack) backpack, e.getCurrentItem())) { } else if (!isAllowed(slimefunBackpack, e.getCurrentItem())) {
e.setCancelled(true); e.setCancelled(true);
} }
} }

View File

@ -49,8 +49,8 @@ public class ButcherAndroidListener implements Listener {
// Collect any nearby dropped items // Collect any nearby dropped items
for (Entity n : e.getEntity().getNearbyEntities(0.5D, 0.5D, 0.5D)) { for (Entity n : e.getEntity().getNearbyEntities(0.5D, 0.5D, 0.5D)) {
if (n instanceof Item && n.isValid() && !SlimefunUtils.hasNoPickupFlag((Item) n)) { if (n instanceof Item item && n.isValid() && !SlimefunUtils.hasNoPickupFlag(item)) {
items.add(((Item) n).getItemStack()); items.add(item.getItemStack());
n.remove(); n.remove();
} }
} }

View File

@ -49,19 +49,17 @@ public class CoolerListener implements Listener {
@EventHandler @EventHandler
public void onHungerLoss(FoodLevelChangeEvent e) { public void onHungerLoss(FoodLevelChangeEvent e) {
if (e.getEntity() instanceof Player) { if (e.getEntity() instanceof Player player) {
Player p = (Player) e.getEntity(); if (e.getFoodLevel() < player.getFoodLevel()) {
checkAndConsume(player);
if (e.getFoodLevel() < p.getFoodLevel()) {
checkAndConsume(p);
} }
} }
} }
@EventHandler @EventHandler
public void onHungerDamage(EntityDamageEvent e) { public void onHungerDamage(EntityDamageEvent e) {
if (e.getEntity() instanceof Player && e.getCause() == DamageCause.STARVATION) { if (e.getEntity() instanceof Player player && e.getCause() == DamageCause.STARVATION) {
checkAndConsume((Player) e.getEntity()); checkAndConsume(player);
} }
} }

View File

@ -168,8 +168,7 @@ public class DebugFishListener implements Listener {
p.sendMessage(ChatColors.color(" &dChunk Timings: &e" + Slimefun.getProfiler().getTime(b.getChunk()))); p.sendMessage(ChatColors.color(" &dChunk Timings: &e" + Slimefun.getProfiler().getTime(b.getChunk())));
} }
if (item instanceof EnergyNetComponent) { if (item instanceof EnergyNetComponent component) {
EnergyNetComponent component = (EnergyNetComponent) item;
p.sendMessage(ChatColors.color("&dEnergyNet Component")); p.sendMessage(ChatColors.color("&dEnergyNet Component"));
p.sendMessage(ChatColors.color(" &dType: &e" + component.getEnergyComponentType())); p.sendMessage(ChatColors.color(" &dType: &e" + component.getEnergyComponentType()));

View File

@ -46,8 +46,7 @@ public class DispenserListener implements Listener {
machine.callItemHandler(BlockDispenseHandler.class, handler -> { machine.callItemHandler(BlockDispenseHandler.class, handler -> {
BlockState state = PaperLib.getBlockState(b, false).getState(); BlockState state = PaperLib.getBlockState(b, false).getState();
if (state instanceof Dispenser) { if (state instanceof Dispenser dispenser) {
Dispenser dispenser = (Dispenser) state;
BlockFace face = ((Directional) b.getBlockData()).getFacing(); BlockFace face = ((Directional) b.getBlockData()).getFacing();
Block block = b.getRelative(face); Block block = b.getRelative(face);
handler.onBlockDispense(e, dispenser, block, machine); handler.onBlockDispense(e, dispenser, block, machine);

View File

@ -60,8 +60,8 @@ public class ElytraImpactListener implements Listener {
e.setDamage(0); e.setDamage(0);
p.playSound(p.getLocation(), Sound.BLOCK_STONE_HIT, 20, 1); p.playSound(p.getLocation(), Sound.BLOCK_STONE_HIT, 20, 1);
if (item instanceof DamageableItem) { if (item instanceof DamageableItem damageableItem) {
((DamageableItem) item).damageItem(p, p.getInventory().getHelmet()); damageableItem.damageItem(p, p.getInventory().getHelmet());
} }
} }
} }

View File

@ -47,9 +47,9 @@ public class EnhancedFurnaceListener implements Listener {
SlimefunItem furnace = BlockStorage.check(e.getBlock()); SlimefunItem furnace = BlockStorage.check(e.getBlock());
if (furnace instanceof EnhancedFurnace && ((EnhancedFurnace) furnace).getFuelEfficiency() > 0) { if (furnace instanceof EnhancedFurnace enhancedFurnace && enhancedFurnace.getFuelEfficiency() > 0) {
int burnTime = e.getBurnTime(); int burnTime = e.getBurnTime();
int newBurnTime = ((EnhancedFurnace) furnace).getFuelEfficiency() * burnTime; int newBurnTime = enhancedFurnace.getFuelEfficiency() * burnTime;
e.setBurnTime(Math.min(newBurnTime, Short.MAX_VALUE - 1)); e.setBurnTime(Math.min(newBurnTime, Short.MAX_VALUE - 1));
} }
@ -64,14 +64,14 @@ public class EnhancedFurnaceListener implements Listener {
SlimefunItem sfItem = BlockStorage.check(e.getBlock()); SlimefunItem sfItem = BlockStorage.check(e.getBlock());
if (sfItem instanceof EnhancedFurnace) { if (sfItem instanceof EnhancedFurnace enhancedFurnace) {
BlockState state = PaperLib.getBlockState(e.getBlock(), false).getState(); BlockState state = PaperLib.getBlockState(e.getBlock(), false).getState();
if (state instanceof Furnace) { if (state instanceof Furnace furnace) {
FurnaceInventory inventory = ((Furnace) state).getInventory(); FurnaceInventory inventory = furnace.getInventory();
boolean multiplier = SlimefunTag.ENHANCED_FURNACE_LUCK_MATERIALS.isTagged(inventory.getSmelting().getType()); boolean multiplier = SlimefunTag.ENHANCED_FURNACE_LUCK_MATERIALS.isTagged(inventory.getSmelting().getType());
int amount = multiplier ? ((EnhancedFurnace) sfItem).getRandomOutputAmount() : 1; int amount = multiplier ? enhancedFurnace.getRandomOutputAmount() : 1;
Optional<ItemStack> result = Slimefun.getMinecraftRecipeService().getFurnaceOutput(inventory.getSmelting()); Optional<ItemStack> result = Slimefun.getMinecraftRecipeService().getFurnaceOutput(inventory.getSmelting());
if (result.isPresent()) { if (result.isPresent()) {

View File

@ -70,8 +70,8 @@ public class GadgetsListener implements Listener {
return; return;
} }
if (chestplate instanceof Jetpack) { if (chestplate instanceof Jetpack jetpack) {
double thrust = ((Jetpack) chestplate).getThrust(); double thrust = jetpack.getThrust();
if (thrust > 0.2) { if (thrust > 0.2) {
new JetpackTask(p, (Jetpack) chestplate).scheduleRepeating(0, 3); new JetpackTask(p, (Jetpack) chestplate).scheduleRepeating(0, 3);
@ -82,8 +82,8 @@ public class GadgetsListener implements Listener {
} }
private void handleBoots(@Nonnull Player p, @Nullable SlimefunItem boots) { private void handleBoots(@Nonnull Player p, @Nullable SlimefunItem boots) {
if (boots instanceof JetBoots && boots.canUse(p, true)) { if (boots instanceof JetBoots jetBoots && boots.canUse(p, true)) {
double speed = ((JetBoots) boots).getSpeed(); double speed = jetBoots.getSpeed();
if (speed > 0.2) { if (speed > 0.2) {
new JetBootsTask(p, (JetBoots) boots).scheduleRepeating(0, 2); new JetBootsTask(p, (JetBoots) boots).scheduleRepeating(0, 2);

View File

@ -61,8 +61,8 @@ public class GrapplingHookListener implements Listener {
return; return;
} }
if (e.getDamager() instanceof Arrow) { if (e.getDamager() instanceof Arrow arrow) {
handleGrapplingHook((Arrow) e.getDamager()); handleGrapplingHook(arrow);
} }
} }
@ -73,8 +73,8 @@ public class GrapplingHookListener implements Listener {
} }
Slimefun.runSync(() -> { Slimefun.runSync(() -> {
if (e.getEntity() instanceof Arrow) { if (e.getEntity() instanceof Arrow arrow) {
handleGrapplingHook((Arrow) e.getEntity()); handleGrapplingHook(arrow);
} }
}, 2L); }, 2L);
} }
@ -86,8 +86,8 @@ public class GrapplingHookListener implements Listener {
} }
// This is called when the arrow shoots off a painting or an item frame // This is called when the arrow shoots off a painting or an item frame
if (e.getRemover() instanceof Arrow) { if (e.getRemover() instanceof Arrow arrow) {
handleGrapplingHook((Arrow) e.getRemover()); handleGrapplingHook(arrow);
} }
} }
@ -130,8 +130,8 @@ public class GrapplingHookListener implements Listener {
return; return;
} }
if (e.getEntity() instanceof Arrow) { if (e.getEntity() instanceof Arrow arrow) {
handleGrapplingHook((Arrow) e.getEntity()); handleGrapplingHook(arrow);
} }
} }
@ -153,9 +153,8 @@ public class GrapplingHookListener implements Listener {
} }
private void handleGrapplingHook(@Nullable Arrow arrow) { private void handleGrapplingHook(@Nullable Arrow arrow) {
if (arrow != null && arrow.isValid() && arrow.getShooter() instanceof Player) { if (arrow != null && arrow.isValid() && arrow.getShooter() instanceof Player player) {
Player p = (Player) arrow.getShooter(); GrapplingHookEntity hook = activeHooks.get(player.getUniqueId());
GrapplingHookEntity hook = activeHooks.get(p.getUniqueId());
if (hook != null) { if (hook != null) {
Location target = arrow.getLocation(); Location target = arrow.getLocation();
@ -163,14 +162,14 @@ public class GrapplingHookListener implements Listener {
Vector velocity = new Vector(0.0, 0.2, 0.0); Vector velocity = new Vector(0.0, 0.2, 0.0);
if (p.getLocation().distance(target) < 3.0) { if (player.getLocation().distance(target) < 3.0) {
if (target.getY() <= p.getLocation().getY()) { if (target.getY() <= player.getLocation().getY()) {
velocity = target.toVector().subtract(p.getLocation().toVector()); velocity = target.toVector().subtract(player.getLocation().toVector());
} }
} else { } else {
Location l = p.getLocation(); Location l = player.getLocation();
l.setY(l.getY() + 0.5); l.setY(l.getY() + 0.5);
p.teleport(l); player.teleport(l);
double g = -0.08; double g = -0.08;
double d = target.distance(l); double d = target.distance(l);
@ -179,16 +178,16 @@ public class GrapplingHookListener implements Listener {
double vY = (1.0 + 0.04 * t) * (target.getY() - l.getY()) / t - 0.5D * g * t; double vY = (1.0 + 0.04 * t) * (target.getY() - l.getY()) / t - 0.5D * g * t;
double vZ = (1.0 + 0.08 * t) * (target.getZ() - l.getZ()) / t; double vZ = (1.0 + 0.08 * t) * (target.getZ() - l.getZ()) / t;
velocity = p.getVelocity(); velocity = player.getVelocity();
velocity.setX(vX); velocity.setX(vX);
velocity.setY(vY); velocity.setY(vY);
velocity.setZ(vZ); velocity.setZ(vZ);
} }
p.setVelocity(velocity); player.setVelocity(velocity);
hook.remove(); hook.remove();
Slimefun.runSync(() -> activeHooks.remove(p.getUniqueId()), 20L); Slimefun.runSync(() -> activeHooks.remove(player.getUniqueId()), 20L);
} }
} }
} }

View File

@ -68,9 +68,9 @@ public class SlimefunBootsListener implements Listener {
return; return;
} }
if (boots instanceof StomperBoots) { if (boots instanceof StomperBoots stomperBoots) {
e.setCancelled(true); e.setCancelled(true);
((StomperBoots) boots).stomp(e); stomperBoots.stomp(e);
} else if (boots instanceof LongFallBoots) { } else if (boots instanceof LongFallBoots) {
e.setCancelled(true); e.setCancelled(true);

View File

@ -55,8 +55,8 @@ public class SlimefunBowListener implements Listener {
if (e.getEntity() instanceof Player && e.getProjectile() instanceof Arrow) { if (e.getEntity() instanceof Player && e.getProjectile() instanceof Arrow) {
SlimefunItem bow = SlimefunItem.getByItem(e.getBow()); SlimefunItem bow = SlimefunItem.getByItem(e.getBow());
if (bow instanceof SlimefunBow) { if (bow instanceof SlimefunBow slimefunBow) {
projectiles.put(e.getProjectile().getUniqueId(), (SlimefunBow) bow); projectiles.put(e.getProjectile().getUniqueId(), slimefunBow);
} }
} }
} }

View File

@ -99,8 +99,8 @@ public class TalismanListener implements Listener {
Talisman.trigger(e, SlimefunItems.TALISMAN_WARRIOR); Talisman.trigger(e, SlimefunItems.TALISMAN_WARRIOR);
break; break;
case PROJECTILE: case PROJECTILE:
if (e instanceof EntityDamageByEntityEvent) { if (e instanceof EntityDamageByEntityEvent entityDamageByEntityEvent) {
onProjectileDamage((EntityDamageByEntityEvent) e); onProjectileDamage(entityDamageByEntityEvent);
} }
break; break;
default: default:
@ -111,9 +111,7 @@ public class TalismanListener implements Listener {
private void onProjectileDamage(@Nonnull EntityDamageByEntityEvent e) { private void onProjectileDamage(@Nonnull EntityDamageByEntityEvent e) {
// "Fixes" #1022 - We just ignore Tridents now. // "Fixes" #1022 - We just ignore Tridents now.
if (e.getDamager() instanceof Projectile && !(e.getDamager() instanceof Trident)) { if (e.getDamager() instanceof Projectile projectile && !(e.getDamager() instanceof Trident)) {
Projectile projectile = (Projectile) e.getDamager();
if (Talisman.trigger(e, SlimefunItems.TALISMAN_WHIRLWIND)) { if (Talisman.trigger(e, SlimefunItems.TALISMAN_WHIRLWIND)) {
Player p = (Player) e.getEntity(); Player p = (Player) e.getEntity();
returnProjectile(p, projectile); returnProjectile(p, projectile);
@ -138,8 +136,7 @@ public class TalismanListener implements Listener {
returnedProjectile.setShooter(projectile.getShooter()); returnedProjectile.setShooter(projectile.getShooter());
returnedProjectile.setVelocity(direction); returnedProjectile.setVelocity(direction);
if (projectile instanceof AbstractArrow) { if (projectile instanceof AbstractArrow firedArrow) {
AbstractArrow firedArrow = (AbstractArrow) projectile;
AbstractArrow returnedArrow = (AbstractArrow) returnedProjectile; AbstractArrow returnedArrow = (AbstractArrow) returnedProjectile;
returnedArrow.setDamage(firedArrow.getDamage()); returnedArrow.setDamage(firedArrow.getDamage());
@ -188,14 +185,12 @@ public class TalismanListener implements Listener {
List<ItemStack> items = new ArrayList<>(drops); List<ItemStack> items = new ArrayList<>(drops);
// Prevent duplication of items stored inside a Horse's chest // Prevent duplication of items stored inside a Horse's chest
if (entity instanceof ChestedHorse) { if (entity instanceof ChestedHorse chestedHorse) {
ChestedHorse horse = (ChestedHorse) entity; if (chestedHorse.isCarryingChest()) {
if (horse.isCarryingChest()) {
// The chest is not included in getStorageContents() // The chest is not included in getStorageContents()
items.remove(new ItemStack(Material.CHEST)); items.remove(new ItemStack(Material.CHEST));
for (ItemStack item : horse.getInventory().getStorageContents()) { for (ItemStack item : chestedHorse.getInventory().getStorageContents()) {
items.remove(item); items.remove(item);
} }
} }
@ -252,8 +247,8 @@ public class TalismanListener implements Listener {
ItemStack item = e.getBrokenItem().clone(); ItemStack item = e.getBrokenItem().clone();
ItemMeta meta = item.getItemMeta(); ItemMeta meta = item.getItemMeta();
if (meta instanceof Damageable) { if (meta instanceof Damageable damageable) {
((Damageable) meta).setDamage(0); damageable.setDamage(0);
} }
item.setItemMeta(meta); item.setItemMeta(meta);

View File

@ -64,7 +64,7 @@ public class TeleporterListener implements Listener {
// Pressure plate was an elevator // Pressure plate was an elevator
ElevatorPlate elevator = SlimefunItems.ELEVATOR_PLATE.getItem(ElevatorPlate.class); ElevatorPlate elevator = SlimefunItems.ELEVATOR_PLATE.getItem(ElevatorPlate.class);
elevator.openInterface(p, b); elevator.openInterface(p, b);
} else if (item instanceof AbstractTeleporterPlate && ((AbstractTeleporterPlate) item).hasAccess(p, b)) { } else if (item instanceof AbstractTeleporterPlate teleporterPlate && teleporterPlate.hasAccess(p, b)) {
// Pressure plate was a teleporter // Pressure plate was a teleporter
SlimefunItem teleporter = BlockStorage.check(b.getRelative(BlockFace.DOWN)); SlimefunItem teleporter = BlockStorage.check(b.getRelative(BlockFace.DOWN));

View File

@ -28,13 +28,13 @@ public class AnvilListener implements SlimefunCraftingListener {
@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
public void onAnvil(InventoryClickEvent e) { public void onAnvil(InventoryClickEvent e) {
if (e.getRawSlot() == 2 && e.getInventory().getType() == InventoryType.ANVIL && e.getWhoClicked() instanceof Player) { if (e.getRawSlot() == 2 && e.getInventory().getType() == InventoryType.ANVIL && e.getWhoClicked() instanceof Player player) {
ItemStack item1 = e.getInventory().getContents()[0]; ItemStack item1 = e.getInventory().getContents()[0];
ItemStack item2 = e.getInventory().getContents()[1]; ItemStack item2 = e.getInventory().getContents()[1];
if (hasUnallowedItems(item1, item2)) { if (hasUnallowedItems(item1, item2)) {
e.setResult(Result.DENY); e.setResult(Result.DENY);
Slimefun.getLocalization().sendMessage((Player) e.getWhoClicked(), "anvil.not-working", true); Slimefun.getLocalization().sendMessage(player, "anvil.not-working", true);
} }
} }
} }

View File

@ -28,13 +28,13 @@ public class CartographyTableListener implements SlimefunCraftingListener {
@EventHandler(ignoreCancelled = true) @EventHandler(ignoreCancelled = true)
public void onCartographyTable(InventoryClickEvent e) { public void onCartographyTable(InventoryClickEvent e) {
if (e.getRawSlot() == 2 && e.getInventory().getType() == InventoryType.CARTOGRAPHY && e.getWhoClicked() instanceof Player) { if (e.getRawSlot() == 2 && e.getInventory().getType() == InventoryType.CARTOGRAPHY && e.getWhoClicked() instanceof Player player) {
ItemStack item1 = e.getInventory().getContents()[0]; ItemStack item1 = e.getInventory().getContents()[0];
ItemStack item2 = e.getInventory().getContents()[1]; ItemStack item2 = e.getInventory().getContents()[1];
if (hasUnallowedItems(item1, item2)) { if (hasUnallowedItems(item1, item2)) {
e.setResult(Result.DENY); e.setResult(Result.DENY);
Slimefun.getLocalization().sendMessage((Player) e.getWhoClicked(), "cartography_table.not-working", true); Slimefun.getLocalization().sendMessage(player, "cartography_table.not-working", true);
} }
} }
} }

View File

@ -28,15 +28,14 @@ public class FireworksListener implements Listener {
@EventHandler @EventHandler
public void onResearchFireworkDamage(EntityDamageByEntityEvent e) { public void onResearchFireworkDamage(EntityDamageByEntityEvent e) {
if (e.getDamager() instanceof Firework) { if (e.getDamager() instanceof Firework firework) {
Firework firework = (Firework) e.getDamager();
FireworkMeta meta = firework.getFireworkMeta(); FireworkMeta meta = firework.getFireworkMeta();
/** /*
* We could use Peristent Data for this in the future, but ItemMeta display names We could use Peristent Data for this in the future, but ItemMeta display names
* work pretty reliably too and they don't cause any memory leaks like metadata. work pretty reliably too and they don't cause any memory leaks like metadata.
*
* Entity display names do not work either as Firework cannot be named. Entity display names do not work either as Firework cannot be named.
*/ */
if (meta.hasDisplayName() && meta.getDisplayName().equals(ChatColor.GREEN + "Slimefun Research")) { if (meta.hasDisplayName() && meta.getDisplayName().equals(ChatColor.GREEN + "Slimefun Research")) {
e.setCancelled(true); e.setCancelled(true);

View File

@ -67,16 +67,16 @@ public class MobDropListener implements Listener {
if (sfItem == null) { if (sfItem == null) {
return true; return true;
} else if (sfItem.canUse(p, true)) { } else if (sfItem.canUse(p, true)) {
if (sfItem instanceof RandomMobDrop) { if (sfItem instanceof RandomMobDrop randomMobDrop) {
int random = ThreadLocalRandom.current().nextInt(100); int random = ThreadLocalRandom.current().nextInt(100);
if (((RandomMobDrop) sfItem).getMobDropChance() <= random) { if (randomMobDrop.getMobDropChance() <= random) {
return false; return false;
} }
} }
if (sfItem instanceof BasicCircuitBoard) { if (sfItem instanceof BasicCircuitBoard basicCircuitBoard) {
return ((BasicCircuitBoard) sfItem).isDroppedFromGolems(); return basicCircuitBoard.isDroppedFromGolems();
} }
return true; return true;

View File

@ -90,8 +90,8 @@ public class PiglinListener implements Listener {
SlimefunItem sfi = SlimefunItem.getByItem(is); SlimefunItem sfi = SlimefunItem.getByItem(is);
// Check the getBarteringLootChance and compare against a random number 0-100, // Check the getBarteringLootChance and compare against a random number 0-100,
// if the random number is greater then replace the item. // if the random number is greater then replace the item.
if (sfi instanceof PiglinBarterDrop) { if (sfi instanceof PiglinBarterDrop piglinBarterDrop) {
int chance = ((PiglinBarterDrop) sfi).getBarteringLootChance(); int chance = piglinBarterDrop.getBarteringLootChance();
if (chance < 1 || chance >= 100) { if (chance < 1 || chance >= 100) {
sfi.warn("The Piglin Bartering chance must be between 1-99% on item: " + sfi.getId()); sfi.warn("The Piglin Bartering chance must be between 1-99% on item: " + sfi.getId());

View File

@ -36,9 +36,9 @@ public class WitherListener implements Listener {
SlimefunItem item = BlockStorage.check(e.getBlock()); SlimefunItem item = BlockStorage.check(e.getBlock());
// Hardened Glass is excluded from here // Hardened Glass is excluded from here
if (item instanceof WitherProof && !item.getId().equals(SlimefunItems.HARDENED_GLASS.getItemId())) { if (item instanceof WitherProof witherProofBlock && !item.getId().equals(SlimefunItems.HARDENED_GLASS.getItemId())) {
e.setCancelled(true); e.setCancelled(true);
((WitherProof) item).onAttack(e.getBlock(), (Wither) e.getEntity()); witherProofBlock.onAttack(e.getBlock(), (Wither) e.getEntity());
} }
} }
} }

View File

@ -193,9 +193,7 @@ public final class PostSetup {
} }
for (SlimefunItem item : Slimefun.getRegistry().getEnabledSlimefunItems()) { for (SlimefunItem item : Slimefun.getRegistry().getEnabledSlimefunItems()) {
if (item instanceof AContainer) { if (item instanceof AContainer machine) {
AContainer machine = (AContainer) item;
if (machine.getMachineIdentifier().equals("ELECTRIC_SMELTERY")) { if (machine.getMachineIdentifier().equals("ELECTRIC_SMELTERY")) {
List<MachineRecipe> recipes = machine.getMachineRecipes(); List<MachineRecipe> recipes = machine.getMachineRecipes();
Collections.sort(recipes, Comparator.comparingInt(recipe -> recipe == null ? 0 : -recipe.getInput().length)); Collections.sort(recipes, Comparator.comparingInt(recipe -> recipe == null ? 0 : -recipe.getInput().length));
@ -233,13 +231,9 @@ public final class PostSetup {
private static void registerMachineRecipe(String machine, int seconds, ItemStack[] input, ItemStack[] output) { private static void registerMachineRecipe(String machine, int seconds, ItemStack[] input, ItemStack[] output) {
for (SlimefunItem item : Slimefun.getRegistry().getEnabledSlimefunItems()) { for (SlimefunItem item : Slimefun.getRegistry().getEnabledSlimefunItems()) {
if (item instanceof AContainer) { if (item instanceof AContainer container && container.getMachineIdentifier().equals(machine)) {
AContainer container = (AContainer) item;
if (container.getMachineIdentifier().equals(machine)) {
container.registerRecipe(seconds, input, output); container.registerRecipe(seconds, input, output);
} }
} }
} }
} }
}

View File

@ -137,8 +137,8 @@ public class ArmorTask implements Runnable {
SlimefunItem item = SlimefunItem.getByItem(helmet); SlimefunItem item = SlimefunItem.getByItem(helmet);
if (item instanceof SolarHelmet && item.canUse(p, true)) { if (item instanceof SolarHelmet solarHelmet && item.canUse(p, true)) {
((SolarHelmet) item).rechargeItems(p); solarHelmet.rechargeItems(p);
} }
} }

Some files were not shown because too many files have changed in this diff Show More