mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35:51 +00:00
Reduced technical debt and improved talisman performance
This commit is contained in:
parent
a1e47d5ce0
commit
57da6db9be
@ -280,6 +280,10 @@ public class SlimefunItem {
|
||||
public static SlimefunItem getByItem(ItemStack item) {
|
||||
if (item == null) return null;
|
||||
|
||||
if (item instanceof SlimefunItemStack) {
|
||||
return getByID(((SlimefunItemStack) item).getItemID());
|
||||
}
|
||||
|
||||
if (item.hasItemMeta()) {
|
||||
String id = PersistentDataAPI.getString(item.getItemMeta(), SlimefunPlugin.getItemDataKey());
|
||||
if (id != null) return getByID(id);
|
||||
|
@ -2,7 +2,7 @@ package me.mrCookieSlime.Slimefun.Objects.SlimefunItem;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.entity.Player;
|
||||
@ -112,13 +112,18 @@ public class Talisman extends SlimefunItem {
|
||||
return !("").equalsIgnoreCase(talisman.getSuffix());
|
||||
}
|
||||
|
||||
public static boolean checkFor(Event e, SlimefunItemStack stack) {
|
||||
SlimefunItem item = SlimefunItem.getByItem(stack);
|
||||
return checkFor(e, item);
|
||||
}
|
||||
|
||||
public static boolean checkFor(Event e, SlimefunItem item) {
|
||||
if (!(item instanceof Talisman)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
Talisman talisman = (Talisman) item;
|
||||
if (new Random().nextInt(100) < talisman.getChance()) {
|
||||
if (ThreadLocalRandom.current().nextInt(100) < talisman.getChance()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
@ -158,14 +163,16 @@ public class Talisman extends SlimefunItem {
|
||||
}
|
||||
|
||||
private static void cancelEvent(Event e, Talisman talisman){
|
||||
if (e instanceof Cancellable && talisman.isEventCancelled())
|
||||
if (e instanceof Cancellable && talisman.isEventCancelled()) {
|
||||
((Cancellable) e).setCancelled(true);
|
||||
}
|
||||
}
|
||||
|
||||
private static void sendMessage(Player p, Talisman talisman){
|
||||
if (isTalismanMessage(talisman))
|
||||
if (isTalismanMessage(talisman)) {
|
||||
SlimefunPlugin.getLocal().sendMessage(p, "messages.talisman." + talisman.getSuffix(), true);
|
||||
}
|
||||
}
|
||||
|
||||
private static void consumeItem(Player p, Talisman talisman){
|
||||
if (talisman.isConsumable())
|
||||
|
@ -35,6 +35,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.ReactorAccessPort
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.EnergyTicker;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
@ -71,10 +72,10 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
|
||||
private static final int[] border_4 = {25, 34, 43};
|
||||
private static final int INFO_SLOT = 49;
|
||||
|
||||
public AReactor(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, id, recipeType, recipe);
|
||||
public AReactor(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, recipeType, recipe);
|
||||
|
||||
new BlockMenuPreset(id, getInventoryTitle()) {
|
||||
new BlockMenuPreset(getID(), getInventoryTitle()) {
|
||||
|
||||
@Override
|
||||
public void init() {
|
||||
@ -141,7 +142,7 @@ public abstract class AReactor extends SlimefunItem implements RecipeDisplayItem
|
||||
}
|
||||
};
|
||||
|
||||
registerBlockHandler(id, (p, b, tool, reason) -> {
|
||||
registerBlockHandler(getID(), (p, b, tool, reason) -> {
|
||||
BlockMenu inv = BlockStorage.getInventory(b);
|
||||
if (inv != null) {
|
||||
for (int slot : getFuelSlots()) {
|
||||
|
@ -13,13 +13,14 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
import me.mrCookieSlime.Slimefun.api.item_transport.CargoNet;
|
||||
import me.mrCookieSlime.Slimefun.holograms.SimpleHologram;
|
||||
|
||||
public class CargoManagerBlock extends SlimefunItem {
|
||||
|
||||
public CargoManagerBlock(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, id, recipeType, recipe);
|
||||
public CargoManagerBlock(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, recipeType, recipe);
|
||||
|
||||
registerBlockHandler(getID(), (p, b, tool, reason) -> {
|
||||
SimpleHologram.remove(b);
|
||||
|
@ -22,6 +22,7 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
@ -32,11 +33,11 @@ public class AnimalGrowthAccelerator extends SlimefunItem implements InventoryBl
|
||||
|
||||
protected int energyConsumption = 14;
|
||||
|
||||
public AnimalGrowthAccelerator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, name, recipeType, recipe);
|
||||
public AnimalGrowthAccelerator(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, recipeType, recipe);
|
||||
createPreset(this, "&bGrowth Accelerator", this::constructMenu);
|
||||
|
||||
registerBlockHandler(name, (p, b, tool, reason) -> {
|
||||
registerBlockHandler(getID(), (p, b, tool, reason) -> {
|
||||
BlockMenu inv = BlockStorage.getInventory(b);
|
||||
if (inv != null) {
|
||||
for (int slot : getInputSlots()) {
|
||||
|
@ -22,6 +22,7 @@ import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
@ -41,11 +42,11 @@ public abstract class CropGrowthAccelerator extends SlimefunItem implements Inve
|
||||
crops.put(Material.SWEET_BERRY_BUSH, 3);
|
||||
}
|
||||
|
||||
public CropGrowthAccelerator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, name, recipeType, recipe);
|
||||
public CropGrowthAccelerator(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, recipeType, recipe);
|
||||
createPreset(this, "&bGrowth Accelerator", this::constructMenu);
|
||||
|
||||
registerBlockHandler(name, (p, b, tool, reason) -> {
|
||||
registerBlockHandler(getID(), (p, b, tool, reason) -> {
|
||||
BlockMenu inv = BlockStorage.getInventory(b);
|
||||
if (inv != null) {
|
||||
for (int slot: getInputSlots()) {
|
||||
|
@ -8,11 +8,12 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public abstract class FoodComposter extends AContainer implements RecipeDisplayItem {
|
||||
|
||||
public FoodComposter(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, name, recipeType, recipe);
|
||||
public FoodComposter(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, recipeType, recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -7,11 +7,12 @@ import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public abstract class FoodFabricator extends AContainer {
|
||||
|
||||
public FoodFabricator(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, name, recipeType, recipe);
|
||||
public FoodFabricator(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, recipeType, recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -6,6 +6,7 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.AContainer;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.abstractItems.MachineRecipe;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -15,8 +16,8 @@ import org.bukkit.inventory.ItemStack;
|
||||
|
||||
public abstract class Freezer extends AContainer implements RecipeDisplayItem {
|
||||
|
||||
public Freezer(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, name, recipeType, recipe);
|
||||
public Freezer(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, recipeType, recipe);
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -21,6 +21,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.InventoryBlock;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.BlockTicker;
|
||||
import me.mrCookieSlime.Slimefun.api.BlockStorage;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenu;
|
||||
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
|
||||
@ -31,11 +32,11 @@ public class XPCollector extends SlimefunItem implements InventoryBlock {
|
||||
|
||||
protected int energyConsumption = 10;
|
||||
|
||||
public XPCollector(Category category, ItemStack item, String name, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, name, recipeType, recipe);
|
||||
public XPCollector(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, recipeType, recipe);
|
||||
createPreset(this, "&aEXP Collector", this::constructMenu);
|
||||
|
||||
registerBlockHandler(name, new SlimefunBlockHandler() {
|
||||
registerBlockHandler(getID(), new SlimefunBlockHandler() {
|
||||
|
||||
@Override
|
||||
public void onPlace(Player p, Block b, SlimefunItem item) {
|
||||
@ -110,10 +111,11 @@ public class XPCollector extends SlimefunItem implements InventoryBlock {
|
||||
n.remove();
|
||||
|
||||
int withdrawn = 0;
|
||||
BlockMenu menu = BlockStorage.getInventory(b);
|
||||
for (int level = 0; level < getEXP(b); level = level + 10) {
|
||||
if (fits(b, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"))) {
|
||||
if (menu.fits(new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), getOutputSlots())) {
|
||||
withdrawn = withdrawn + 10;
|
||||
pushItems(b, new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"));
|
||||
menu.pushItem(new CustomItem(Material.EXPERIENCE_BOTTLE, "&aFlask of Knowledge"), getOutputSlots());
|
||||
}
|
||||
}
|
||||
BlockStorage.addBlockInfo(b, "stored-exp", String.valueOf(xp - withdrawn));
|
||||
|
@ -2760,7 +2760,7 @@ public final class SlimefunSetup {
|
||||
new CustomItem(SlimefunItems.ELEVATOR, 2))
|
||||
.register(true);
|
||||
|
||||
new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR, "FOOD_FABRICATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new FoodFabricator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.FOOD_FABRICATOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.BILLON_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BILLON_INGOT, SlimefunItems.CAN, SlimefunItems.SMALL_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) {
|
||||
|
||||
@Override
|
||||
@ -2775,7 +2775,7 @@ public final class SlimefunSetup {
|
||||
|
||||
}.registerChargeableBlock(true, 256);
|
||||
|
||||
new FoodFabricator(Categories.ELECTRICITY, SlimefunItems.FOOD_FABRICATOR_2, "FOOD_FABRICATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new FoodFabricator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.FOOD_FABRICATOR_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) {
|
||||
|
||||
@Override
|
||||
@ -2826,15 +2826,15 @@ public final class SlimefunSetup {
|
||||
new ItemStack[] {SlimefunItems.GOLD_18K, SlimefunItems.CAN, SlimefunItems.GOLD_18K, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.HAY_BLOCK), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.LEAD_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.LEAD_INGOT})
|
||||
.registerChargeableBlock(true, 1024);
|
||||
|
||||
new AnimalGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, "ANIMAL_GROWTH_ACCELERATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new AnimalGrowthAccelerator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.WHEAT_ORGANIC_FOOD, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.AUTO_BREEDER, SlimefunItems.REINFORCED_ALLOY_INGOT})
|
||||
.registerChargeableBlock(true, 1024);
|
||||
|
||||
new XPCollector(Categories.ELECTRICITY, SlimefunItems.XP_COLLECTOR, "XP_COLLECTOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new XPCollector(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.XP_COLLECTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.AUTO_ENCHANTER, SlimefunItems.WITHER_PROOF_OBSIDIAN, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ALUMINUM_BRONZE_INGOT})
|
||||
.registerChargeableBlock(true, 1024);
|
||||
|
||||
new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER, "FOOD_COMPOSTER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new FoodComposter(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.FOOD_COMPOSTER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.FOOD_FABRICATOR, SlimefunItems.DAMASCUS_STEEL_INGOT, SlimefunItems.CAN, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.CAN, null, SlimefunItems.ELECTRIC_MOTOR, null}) {
|
||||
|
||||
@Override
|
||||
@ -2849,7 +2849,7 @@ public final class SlimefunSetup {
|
||||
|
||||
}.registerChargeableBlock(true, 256);
|
||||
|
||||
new FoodComposter(Categories.ELECTRICITY, SlimefunItems.FOOD_COMPOSTER_2, "FOOD_COMPOSTER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new FoodComposter(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.FOOD_COMPOSTER_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.REINFORCED_ALLOY_INGOT, SlimefunItems.HARDENED_METAL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.FOOD_COMPOSTER, SlimefunItems.ELECTRIC_MOTOR, null, SlimefunItems.ELECTRO_MAGNET, null}) {
|
||||
|
||||
@Override
|
||||
@ -2896,7 +2896,7 @@ public final class SlimefunSetup {
|
||||
new ItemStack[] {SlimefunItems.SWEET_BERRIES_ORGANIC_FOOD, null, null, null, null, null, null, null, null})
|
||||
.register(true);
|
||||
|
||||
new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR, "CROP_GROWTH_ACCELERATOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new CropGrowthAccelerator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.CROP_GROWTH_ACCELERATOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ANIMAL_GROWTH_ACCELERATOR, SlimefunItems.ELECTRO_MAGNET}) {
|
||||
|
||||
@Override
|
||||
@ -2916,7 +2916,7 @@ public final class SlimefunSetup {
|
||||
|
||||
}.registerChargeableBlock(true, 1024);
|
||||
|
||||
new CropGrowthAccelerator(Categories.ELECTRICITY, SlimefunItems.CROP_GROWTH_ACCELERATOR_2, "CROP_GROWTH_ACCELERATOR_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new CropGrowthAccelerator(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.CROP_GROWTH_ACCELERATOR_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, SlimefunItems.BLISTERING_INGOT_3, null, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.CROP_GROWTH_ACCELERATOR, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ADVANCED_CIRCUIT_BOARD, SlimefunItems.ELECTRO_MAGNET}) {
|
||||
|
||||
@Override
|
||||
@ -2936,7 +2936,7 @@ public final class SlimefunSetup {
|
||||
|
||||
}.registerChargeableBlock(true, 1024);
|
||||
|
||||
new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER, "FREEZER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new Freezer(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.FREEZER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRIC_MOTOR, new ItemStack(Material.PACKED_ICE), SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.COOLING_UNIT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.COOLING_UNIT}) {
|
||||
|
||||
@Override
|
||||
@ -2951,7 +2951,7 @@ public final class SlimefunSetup {
|
||||
|
||||
}.registerChargeableBlock(true, 256);
|
||||
|
||||
new Freezer(Categories.ELECTRICITY, SlimefunItems.FREEZER_2, "FREEZER_2", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new Freezer(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.FREEZER_2, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, SlimefunItems.SILVER_INGOT, null, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.FREEZER, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.COOLING_UNIT, SlimefunItems.ALUMINUM_BRASS_INGOT, SlimefunItems.COOLING_UNIT}) {
|
||||
|
||||
@Override
|
||||
@ -2966,33 +2966,33 @@ public final class SlimefunSetup {
|
||||
|
||||
}.registerChargeableBlock(true, 256);
|
||||
|
||||
new SlimefunItem(Categories.TECH_MISC, SlimefunItems.REACTOR_COOLANT_CELL, "REACTOR_COOLANT_CELL", new RecipeType(SlimefunItems.FREEZER),
|
||||
new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.REACTOR_COOLANT_CELL, new RecipeType(SlimefunItems.FREEZER),
|
||||
new ItemStack[] {new ItemStack(Material.BLUE_ICE), null, null, null, null, null, null, null, null})
|
||||
.register(true);
|
||||
|
||||
new SlimefunItem(Categories.TECH_MISC, SlimefunItems.NETHER_ICE_COOLANT_CELL, "NETHER_ICE_COOLANT_CELL", new RecipeType(SlimefunItems.HEATED_PRESSURE_CHAMBER),
|
||||
new SlimefunItem(Categories.TECH_MISC, (SlimefunItemStack) SlimefunItems.NETHER_ICE_COOLANT_CELL, new RecipeType(SlimefunItems.HEATED_PRESSURE_CHAMBER),
|
||||
new ItemStack[]{SlimefunItems.ENRICHED_NETHER_ICE, null, null, null, null, null, null, null, null})
|
||||
.register(true);
|
||||
|
||||
new SlimefunItem(Categories.RESOURCES, SlimefunItems.NEPTUNIUM, "NEPTUNIUM", new RecipeType(SlimefunItems.NUCLEAR_REACTOR),
|
||||
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.NEPTUNIUM, new RecipeType(SlimefunItems.NUCLEAR_REACTOR),
|
||||
new ItemStack[] {SlimefunItems.URANIUM, null, null, null, null, null, null, null, null})
|
||||
.register(true);
|
||||
|
||||
SlimefunItem.setRadioactive(SlimefunItems.NEPTUNIUM);
|
||||
|
||||
new SlimefunItem(Categories.RESOURCES, SlimefunItems.PLUTONIUM, "PLUTONIUM", new RecipeType(SlimefunItems.NUCLEAR_REACTOR),
|
||||
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.PLUTONIUM, new RecipeType(SlimefunItems.NUCLEAR_REACTOR),
|
||||
new ItemStack[] {SlimefunItems.NEPTUNIUM, null, null, null, null, null, null, null, null})
|
||||
.register(true);
|
||||
|
||||
SlimefunItem.setRadioactive(SlimefunItems.PLUTONIUM);
|
||||
|
||||
new SlimefunItem(Categories.RESOURCES, SlimefunItems.BOOSTED_URANIUM, "BOOSTED_URANIUM", RecipeType.HEATED_PRESSURE_CHAMBER,
|
||||
new SlimefunItem(Categories.RESOURCES, (SlimefunItemStack) SlimefunItems.BOOSTED_URANIUM, RecipeType.HEATED_PRESSURE_CHAMBER,
|
||||
new ItemStack[] {SlimefunItems.PLUTONIUM, SlimefunItems.URANIUM, null, null, null, null, null, null, null})
|
||||
.register(true);
|
||||
|
||||
SlimefunItem.setRadioactive(SlimefunItems.BOOSTED_URANIUM);
|
||||
|
||||
new AReactor(Categories.ELECTRICITY, SlimefunItems.NUCLEAR_REACTOR, "NUCLEAR_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new AReactor(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.NUCLEAR_REACTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.CARBONADO_EDGED_CAPACITOR, SlimefunItems.BLISTERING_INGOT_3, SlimefunItems.REINFORCED_PLATE, SlimefunItems.COOLING_UNIT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.LEAD_INGOT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.LEAD_INGOT}){
|
||||
|
||||
@Override
|
||||
@ -3035,7 +3035,7 @@ public final class SlimefunSetup {
|
||||
}
|
||||
.registerChargeableBlock(true, 16384);
|
||||
|
||||
new AReactor(Categories.ELECTRICITY, SlimefunItems.NETHERSTAR_REACTOR, "NETHERSTAR_REACTOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new AReactor(Categories.ELECTRICITY, (SlimefunItemStack) SlimefunItems.NETHERSTAR_REACTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[]{SlimefunItems.BOOSTED_URANIUM, SlimefunItems.CARBONADO_EDGED_CAPACITOR, SlimefunItems.BOOSTED_URANIUM, SlimefunItems.REINFORCED_PLATE, new ItemStack(Material.NETHER_STAR), SlimefunItems.REINFORCED_PLATE, SlimefunItems.CORINTHIAN_BRONZE_INGOT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CORINTHIAN_BRONZE_INGOT}){
|
||||
|
||||
@Override
|
||||
@ -3076,15 +3076,15 @@ public final class SlimefunSetup {
|
||||
|
||||
}.registerChargeableBlock(true, 32768);
|
||||
|
||||
new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_MOTOR, "CARGO_MOTOR", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new SlimefunItem(Categories.CARGO, (SlimefunItemStack) SlimefunItems.CARGO_MOTOR, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS, SlimefunItems.SILVER_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.HARDENED_GLASS, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.HARDENED_GLASS}, new CustomItem(SlimefunItems.CARGO_MOTOR, 4))
|
||||
.register(true);
|
||||
|
||||
new CargoManagerBlock(Categories.CARGO, SlimefunItems.CARGO_MANAGER, "CARGO_MANAGER", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new CargoManagerBlock(Categories.CARGO, (SlimefunItemStack) SlimefunItems.CARGO_MANAGER, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, SlimefunItems.HOLOGRAM_PROJECTOR, null, SlimefunItems.REINFORCED_PLATE, SlimefunItems.CARGO_MOTOR, SlimefunItems.REINFORCED_PLATE, SlimefunItems.ALUMINUM_BRONZE_INGOT, SlimefunItems.ANDROID_MEMORY_CORE, SlimefunItems.ALUMINUM_BRONZE_INGOT})
|
||||
.register(true);
|
||||
|
||||
new SlimefunItem(Categories.CARGO, SlimefunItems.CARGO_NODE, "CARGO_NODE", RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new SlimefunItem(Categories.CARGO, (SlimefunItemStack) SlimefunItems.CARGO_NODE, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.CARGO_MOTOR, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT, SlimefunItems.SILVER_INGOT, SlimefunItems.BRONZE_INGOT}, new CustomItem(SlimefunItems.CARGO_NODE, 4))
|
||||
.register(true, new ItemInteractionHandler() {
|
||||
|
||||
|
@ -1,5 +1,7 @@
|
||||
package me.mrCookieSlime.Slimefun.listeners;
|
||||
|
||||
import java.util.Optional;
|
||||
|
||||
import org.bukkit.block.Furnace;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.EventPriority;
|
||||
@ -8,8 +10,8 @@ import org.bukkit.event.inventory.FurnaceBurnEvent;
|
||||
import org.bukkit.event.inventory.FurnaceSmeltEvent;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.cscorelib2.recipes.MinecraftRecipe;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Recipe.RecipeCalculator;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.EnhancedFurnace;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
@ -37,10 +39,15 @@ public class FurnaceListener implements Listener {
|
||||
if (furnace instanceof EnhancedFurnace) {
|
||||
Furnace f = (Furnace) e.getBlock().getState();
|
||||
int amount = f.getInventory().getSmelting().getType().toString().endsWith("_ORE") ? ((EnhancedFurnace) furnace).getOutput() : 1;
|
||||
ItemStack result = f.getInventory().getResult() == null ? RecipeCalculator.getSmeltedOutput(f.getInventory().getSmelting().getType()) : f.getInventory().getResult().clone();
|
||||
Optional<ItemStack> result = Optional.ofNullable(f.getInventory().getResult());
|
||||
|
||||
if (result != null) {
|
||||
f.getInventory().setResult(new CustomItem(result, Math.min(result.getAmount() + amount, result.getMaxStackSize())));
|
||||
if (!result.isPresent()) {
|
||||
result = SlimefunPlugin.getMinecraftRecipes().getRecipeOutput(MinecraftRecipe.FURNACE, f.getInventory().getSmelting());
|
||||
}
|
||||
|
||||
if (result.isPresent()) {
|
||||
ItemStack item = result.get();
|
||||
f.getInventory().setResult(new CustomItem(item, Math.min(item.getAmount() + amount, item.getMaxStackSize())));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -212,11 +212,11 @@ public class ItemListener implements Listener {
|
||||
|
||||
if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getItem(SlimefunGuideLayout.BOOK), true)) {
|
||||
if (p.isSneaking()) SlimefunGuide.openSettings(p, item);
|
||||
else SlimefunGuide.openGuide(p, true);
|
||||
else SlimefunGuide.openGuide(p, SlimefunGuideLayout.BOOK);
|
||||
}
|
||||
else if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getItem(SlimefunGuideLayout.CHEST), true)) {
|
||||
if (p.isSneaking()) SlimefunGuide.openSettings(p, item);
|
||||
else SlimefunGuide.openGuide(p, false);
|
||||
else SlimefunGuide.openGuide(p, SlimefunGuideLayout.CHEST);
|
||||
}
|
||||
else if (SlimefunManager.isItemSimiliar(item, SlimefunGuide.getItem(SlimefunGuideLayout.CHEAT_SHEET), true)) {
|
||||
if (p.isSneaking()) SlimefunGuide.openSettings(p, item);
|
||||
|
@ -32,10 +32,11 @@ import org.bukkit.util.Vector;
|
||||
|
||||
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.Talisman;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public class TalismanListener implements Listener {
|
||||
|
||||
@ -48,19 +49,19 @@ public class TalismanListener implements Listener {
|
||||
@EventHandler(priority=EventPriority.MONITOR)
|
||||
public void onDamageGet(EntityDamageEvent e) {
|
||||
if (!e.isCancelled()) {
|
||||
if (e instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) e).getDamager() instanceof Player && random.nextInt(100) < 45 && SlimefunManager.isItemSimiliar(((Player) ((EntityDamageByEntityEvent) e).getDamager()).getInventory().getItemInMainHand(), SlimefunItem.getItem("BLADE_OF_VAMPIRES"), true)) {
|
||||
if (e instanceof EntityDamageByEntityEvent && ((EntityDamageByEntityEvent) e).getDamager() instanceof Player && random.nextInt(100) < 45 && SlimefunManager.isItemSimiliar(((Player) ((EntityDamageByEntityEvent) e).getDamager()).getInventory().getItemInMainHand(), SlimefunItems.BLADE_OF_VAMPIRES, true)) {
|
||||
((Player) ((EntityDamageByEntityEvent) e).getDamager()).playSound(((EntityDamageByEntityEvent) e).getDamager().getLocation(), Sound.ENTITY_ARROW_HIT_PLAYER, 0.7F, 0.7F);
|
||||
((Player) ((EntityDamageByEntityEvent) e).getDamager()).addPotionEffect(new PotionEffect(PotionEffectType.HEAL, 1, 1));
|
||||
}
|
||||
|
||||
if (e.getEntity() instanceof Player) {
|
||||
if (e.getCause() == DamageCause.LAVA) Talisman.checkFor(e, SlimefunItem.getByID("LAVA_TALISMAN"));
|
||||
if (e.getCause() == DamageCause.DROWNING) Talisman.checkFor(e, SlimefunItem.getByID("WATER_TALISMAN"));
|
||||
if (e.getCause() == DamageCause.FALL) Talisman.checkFor(e, SlimefunItem.getByID("ANGEL_TALISMAN"));
|
||||
if (e.getCause() == DamageCause.FIRE) Talisman.checkFor(e, SlimefunItem.getByID("FIRE_TALISMAN"));
|
||||
if (e.getCause() == DamageCause.ENTITY_ATTACK) Talisman.checkFor(e, SlimefunItem.getByID("WARRIOR_TALISMAN"));
|
||||
if (e.getCause() == DamageCause.ENTITY_ATTACK) Talisman.checkFor(e, SlimefunItem.getByID("KNIGHT_TALISMAN"));
|
||||
if (e.getCause() == DamageCause.PROJECTILE && Talisman.checkFor(e, SlimefunItem.getByID("WHIRLWIND_TALISMAN")) && ((EntityDamageByEntityEvent) e).getDamager() instanceof Projectile) {
|
||||
if (e.getCause() == DamageCause.LAVA) Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_LAVA);
|
||||
if (e.getCause() == DamageCause.DROWNING) Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_WATER);
|
||||
if (e.getCause() == DamageCause.FALL) Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_ANGEL);
|
||||
if (e.getCause() == DamageCause.FIRE) Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_FIRE);
|
||||
if (e.getCause() == DamageCause.ENTITY_ATTACK) Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_WARRIOR);
|
||||
if (e.getCause() == DamageCause.ENTITY_ATTACK) Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_KNIGHT);
|
||||
if (e.getCause() == DamageCause.PROJECTILE && Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_WHIRLWIND) && ((EntityDamageByEntityEvent) e).getDamager() instanceof Projectile) {
|
||||
Vector direction = ((Player) e.getEntity()).getEyeLocation().getDirection().multiply(2.0);
|
||||
Projectile projectile = (Projectile) e.getEntity().getWorld().spawnEntity(((LivingEntity) e.getEntity()).getEyeLocation().add(direction.getX(), direction.getY(), direction.getZ()), ((EntityDamageByEntityEvent) e).getDamager().getType());
|
||||
projectile.setVelocity(direction);
|
||||
@ -74,7 +75,7 @@ public class TalismanListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onItemBreak(PlayerItemBreakEvent e) {
|
||||
if (Talisman.checkFor(e, SlimefunItem.getByID("ANVIL_TALISMAN"))) {
|
||||
if (Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_ANVIL)) {
|
||||
PlayerInventory inv = e.getPlayer().getInventory();
|
||||
int slot = inv.getHeldItemSlot();
|
||||
|
||||
@ -104,12 +105,12 @@ public class TalismanListener implements Listener {
|
||||
|
||||
@EventHandler
|
||||
public void onSprint(PlayerToggleSprintEvent e) {
|
||||
if (e.isSprinting()) Talisman.checkFor(e, SlimefunItem.getByID("TRAVELLER_TALISMAN"));
|
||||
if (e.isSprinting()) Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_TRAVELLER);
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onEnchant(EnchantItemEvent e) {
|
||||
if (Talisman.checkFor(e, SlimefunItem.getByID("MAGICIAN_TALISMAN"))) {
|
||||
if (Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_MAGICIAN)) {
|
||||
List<String> enchantments = new ArrayList<>();
|
||||
for (Enchantment en : Enchantment.values()) {
|
||||
for (int i = 1; i <= en.getMaxLevel(); i++) {
|
||||
@ -121,7 +122,7 @@ public class TalismanListener implements Listener {
|
||||
String enchant = enchantments.get(random.nextInt(enchantments.size()));
|
||||
e.getEnchantsToAdd().put(Enchantment.getByKey(NamespacedKey.minecraft(enchant.split("-")[0])), Integer.parseInt(enchant.split("-")[1]));
|
||||
}
|
||||
if (!e.getEnchantsToAdd().containsKey(Enchantment.SILK_TOUCH) && Enchantment.LOOT_BONUS_BLOCKS.canEnchantItem(e.getItem()) && Talisman.checkFor(e, SlimefunItem.getByID("WIZARD_TALISMAN"))) {
|
||||
if (!e.getEnchantsToAdd().containsKey(Enchantment.SILK_TOUCH) && Enchantment.LOOT_BONUS_BLOCKS.canEnchantItem(e.getItem()) && Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_WIZARD)) {
|
||||
if (e.getEnchantsToAdd().containsKey(Enchantment.LOOT_BONUS_BLOCKS)) e.getEnchantsToAdd().remove(Enchantment.LOOT_BONUS_BLOCKS);
|
||||
Set<Enchantment> enchantments = e.getEnchantsToAdd().keySet();
|
||||
for (Enchantment en : enchantments) {
|
||||
@ -149,10 +150,15 @@ public class TalismanListener implements Listener {
|
||||
fortune = (e.getBlock().getType() == Material.LAPIS_ORE ? 4 + random.nextInt(5) : 1) * (fortune + 1);
|
||||
}
|
||||
|
||||
if (!item.getEnchantments().containsKey(Enchantment.SILK_TOUCH) && e.getBlock().getType().toString().endsWith("_ORE") && Talisman.checkFor(e, SlimefunItem.getByID("MINER_TALISMAN"))) {
|
||||
if (drops.isEmpty()) drops = (List<ItemStack>) e.getBlock().getDrops();
|
||||
if (!item.getEnchantments().containsKey(Enchantment.SILK_TOUCH) && e.getBlock().getType().toString().endsWith("_ORE") && Talisman.checkFor(e, (SlimefunItemStack) SlimefunItems.TALISMAN_MINER)) {
|
||||
if (drops.isEmpty()) {
|
||||
drops = (List<ItemStack>) e.getBlock().getDrops();
|
||||
}
|
||||
|
||||
for (ItemStack drop : new ArrayList<>(drops)) {
|
||||
if (!drop.getType().isBlock()) drops.add(new CustomItem(drop, fortune * 2));
|
||||
if (!drop.getType().isBlock()) {
|
||||
drops.add(new CustomItem(drop, fortune * 2));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user