mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 11:45:51 +00:00
commit
261bc443e9
@ -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++;
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
|
@ -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");
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
@ -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 {
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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>"));
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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]));
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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()) {
|
||||||
|
@ -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;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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) {
|
||||||
|
@ -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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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) {
|
||||||
|
@ -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";
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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()) {
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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()) {
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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)) {
|
||||||
|
@ -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();
|
||||||
|
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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());
|
||||||
|
@ -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() });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
@ -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<>();
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -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;
|
||||||
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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)) {
|
||||||
|
@ -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++) {
|
||||||
|
@ -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();
|
||||||
|
@ -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();
|
||||||
|
@ -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++) {
|
||||||
|
@ -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) {
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -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()));
|
||||||
|
|
||||||
|
@ -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);
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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()) {
|
||||||
|
@ -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);
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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));
|
||||||
|
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
|
@ -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;
|
||||||
|
@ -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());
|
||||||
|
@ -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());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
@ -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
Loading…
Reference in New Issue
Block a user