mirror of
https://github.com/StarWishsama/Slimefun4.git
synced 2024-09-20 03:35:51 +00:00
Added Nether Gold Pan
This commit is contained in:
parent
85227f0814
commit
c9bd5840e0
@ -43,6 +43,7 @@ public final class SlimefunItems {
|
||||
|
||||
/* Gadgets */
|
||||
public static final ItemStack GOLD_PAN = new SlimefunItemStack("GOLD_PAN", Material.BOWL, "&6Gold Pan", "&a&oCan get you all kinds of Goodies...", "", "&7&eRight Click&7 to pan various Stuff out of Gravel");
|
||||
public static final ItemStack NETHER_GOLD_PAN = new SlimefunItemStack("NETHER_GOLD_PAN", Material.BOWL, "&4Nether Gold Pan", "", "&7&eRight Click&7 to pan various stuff out of Soul Sand");
|
||||
public static final ItemStack PARACHUTE = new SlimefunItemStack("PARACHUTE", Material.LEATHER_CHESTPLATE, Color.WHITE, "&r&lParachute", "", "&7Hold &eShift&7 to use");
|
||||
public static final ItemStack GRAPPLING_HOOK = new SlimefunItemStack("GRAPPLING_HOOK", Material.LEAD, "&6Grappling Hook", "", "&7&eRight Click&7 to use");
|
||||
public static final ItemStack SOLAR_HELMET = new SlimefunItemStack("SOLAR_HELMET", Material.IRON_HELMET, "&bSolar Helmet", "", "&a&oCharges held Items and Armor");
|
||||
@ -514,7 +515,7 @@ public final class SlimefunItems {
|
||||
@Deprecated
|
||||
public static final ItemStack ADVANCED_DIGITAL_MINER = new CustomItem(Material.DIAMOND_PICKAXE, "&6Advanced Digital Miner", "", "&4DEPRECATED", "&cThis machine will soon be removed!");
|
||||
|
||||
public static final ItemStack AUTOMATED_PANNING_MACHINE = new SlimefunItemStack("AUTOMATED_PANNING_MACHINE", Material.BOWL, "&aAutomated Panning Machine", "", "&aA MultiBlock Version of the Gold Pan");
|
||||
public static final ItemStack AUTOMATED_PANNING_MACHINE = new SlimefunItemStack("AUTOMATED_PANNING_MACHINE", Material.BOWL, "&eAutomated Panning Machine", "", "&rA MultiBlock Version of the Gold Pan", "&rand Nether Gold Pan combined in one machine.");
|
||||
public static final ItemStack OUTPUT_CHEST = new SlimefunItemStack("OUTPUT_CHEST", Material.CHEST, "&4Output Chest", "", "&c&oA basic machine will try to put", "&c&oitems in this chest if it's placed", "&c&oadjacent to the dispenser.");
|
||||
public static final ItemStack HOLOGRAM_PROJECTOR = new SlimefunItemStack("HOLOGRAM_PROJECTOR", Material.QUARTZ_SLAB, "&bHologram Projector", "", "&rProjects an Editable Hologram");
|
||||
|
||||
|
@ -4,6 +4,7 @@ import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Material;
|
||||
@ -17,21 +18,19 @@ import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public class GoldPan extends SimpleSlimefunItem<ItemInteractionHandler> implements RecipeDisplayItem {
|
||||
|
||||
private final Random random = new Random();
|
||||
private final List<ItemStack> recipes;
|
||||
|
||||
private int chanceSiftedOre;
|
||||
private int chanceFlint;
|
||||
private int chanceClay;
|
||||
|
||||
public GoldPan(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe, String[] keys, Object[] values) {
|
||||
super(category, item, recipeType, recipe, keys, values);
|
||||
public GoldPan(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, recipeType, recipe, new String[] {"chance.FLINT", "chance.CLAY", "chance.SIFTED_ORE"}, new Integer[] {40, 25, 35});
|
||||
|
||||
recipes = Arrays.asList(
|
||||
new ItemStack(Material.GRAVEL), new ItemStack(Material.FLINT),
|
||||
@ -50,9 +49,10 @@ public class GoldPan extends SimpleSlimefunItem<ItemInteractionHandler> implemen
|
||||
@Override
|
||||
public ItemInteractionHandler getItemHandler() {
|
||||
return (e, p, item) -> {
|
||||
if (SlimefunManager.isItemSimiliar(item, SlimefunItems.GOLD_PAN, true)) {
|
||||
if (isItem(item)) {
|
||||
if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.GRAVEL && SlimefunPlugin.getProtectionManager().hasPermission(p, e.getClickedBlock().getLocation(), ProtectableAction.BREAK_BLOCK)) {
|
||||
List<ItemStack> drops = new ArrayList<>();
|
||||
Random random = ThreadLocalRandom.current();
|
||||
|
||||
if (random.nextInt(100) < chanceSiftedOre) drops.add(SlimefunItems.SIFTED_ORE);
|
||||
else if (random.nextInt(100) < chanceClay) drops.add(new ItemStack(Material.CLAY_BALL));
|
||||
|
@ -0,0 +1,94 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
|
||||
import io.github.thebusybiscuit.cscorelib2.protection.ProtectableAction;
|
||||
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
|
||||
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
|
||||
import me.mrCookieSlime.Slimefun.Objects.Category;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.interfaces.RecipeDisplayItem;
|
||||
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
import me.mrCookieSlime.Slimefun.api.SlimefunItemStack;
|
||||
|
||||
public class NetherGoldPan extends SimpleSlimefunItem<ItemInteractionHandler> implements RecipeDisplayItem {
|
||||
|
||||
private final List<ItemStack> recipes;
|
||||
|
||||
private int chanceQuartz;
|
||||
private int chanceGoldNuggets;
|
||||
private int chanceNetherWart;
|
||||
private int chanceBlazePowder;
|
||||
private int chanceGlowstoneDust;
|
||||
private int chanceGhastTear;
|
||||
|
||||
public NetherGoldPan(Category category, SlimefunItemStack item, RecipeType recipeType, ItemStack[] recipe) {
|
||||
super(category, item, recipeType, recipe,
|
||||
new String[] {"chance.QUARTZ", "chance.GOLD_NUGGET", "chance.NETHER_WART", "chance.BLAZE_POWDER", "chance.GLOWSTONE_DUST", "chance.GHAST_TEAR"},
|
||||
new Integer[] {50, 25, 10, 8, 5, 2}
|
||||
);
|
||||
|
||||
recipes = Arrays.asList(
|
||||
new ItemStack(Material.SOUL_SAND), new ItemStack(Material.QUARTZ),
|
||||
new ItemStack(Material.SOUL_SAND), new ItemStack(Material.GOLD_NUGGET),
|
||||
new ItemStack(Material.SOUL_SAND), new ItemStack(Material.NETHER_WART),
|
||||
new ItemStack(Material.SOUL_SAND), new ItemStack(Material.BLAZE_POWDER),
|
||||
new ItemStack(Material.SOUL_SAND), new ItemStack(Material.GLOWSTONE_DUST),
|
||||
new ItemStack(Material.SOUL_SAND), new ItemStack(Material.GHAST_TEAR)
|
||||
);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postRegister() {
|
||||
chanceQuartz = (int) Slimefun.getItemValue(getID(), "chance.QUARTZ");
|
||||
chanceGoldNuggets = (int) Slimefun.getItemValue(getID(), "chance.GOLD_NUGGET");
|
||||
chanceNetherWart = (int) Slimefun.getItemValue(getID(), "chance.NETHER_WART");
|
||||
chanceBlazePowder = (int) Slimefun.getItemValue(getID(), "chance.BLAZE_POWDER");
|
||||
chanceGlowstoneDust = (int) Slimefun.getItemValue(getID(), "chance.GLOWSTONE_DUST");
|
||||
chanceGhastTear = (int) Slimefun.getItemValue(getID(), "chance.GHAST_TEAR");
|
||||
}
|
||||
|
||||
@Override
|
||||
public ItemInteractionHandler getItemHandler() {
|
||||
return (e, p, item) -> {
|
||||
if (isItem(item)) {
|
||||
if (e.getClickedBlock() != null && e.getClickedBlock().getType() == Material.SOUL_SAND && SlimefunPlugin.getProtectionManager().hasPermission(p, e.getClickedBlock().getLocation(), ProtectableAction.BREAK_BLOCK)) {
|
||||
List<ItemStack> drops = new ArrayList<>();
|
||||
Random random = ThreadLocalRandom.current();
|
||||
|
||||
if (random.nextInt(100) < chanceQuartz) drops.add(new ItemStack(Material.QUARTZ));
|
||||
else if (random.nextInt(100) < chanceGoldNuggets) drops.add(new ItemStack(Material.GOLD_NUGGET));
|
||||
else if (random.nextInt(100) < chanceNetherWart) drops.add(new ItemStack(Material.NETHER_WART));
|
||||
else if (random.nextInt(100) < chanceBlazePowder) drops.add(new ItemStack(Material.BLAZE_POWDER));
|
||||
else if (random.nextInt(100) < chanceGlowstoneDust) drops.add(new ItemStack(Material.GLOWSTONE_DUST));
|
||||
else if (random.nextInt(100) < chanceGhastTear) drops.add(new ItemStack(Material.GHAST_TEAR));
|
||||
|
||||
e.getClickedBlock().getWorld().playEffect(e.getClickedBlock().getLocation(), Effect.STEP_SOUND, e.getClickedBlock().getType());
|
||||
e.getClickedBlock().setType(Material.AIR);
|
||||
|
||||
for (ItemStack drop: drops) {
|
||||
e.getClickedBlock().getWorld().dropItemNaturally(e.getClickedBlock().getLocation(), drop);
|
||||
}
|
||||
}
|
||||
e.setCancelled(true);
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
};
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ItemStack> getDisplayRecipes() {
|
||||
return recipes;
|
||||
}
|
||||
|
||||
}
|
@ -1,6 +1,7 @@
|
||||
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.multiblocks;
|
||||
|
||||
import java.util.Random;
|
||||
import java.util.concurrent.ThreadLocalRandom;
|
||||
|
||||
import org.bukkit.Effect;
|
||||
import org.bukkit.GameMode;
|
||||
@ -21,12 +22,19 @@ import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
|
||||
import me.mrCookieSlime.Slimefun.api.Slimefun;
|
||||
|
||||
public class AutomatedPanningMachine extends MultiBlockMachine {
|
||||
|
||||
private final Random random = new Random();
|
||||
|
||||
// Gold Pan
|
||||
private int chanceSiftedOre;
|
||||
private int chanceFlint;
|
||||
private int chanceClay;
|
||||
|
||||
// Nether Gold Pan
|
||||
private int chanceQuartz;
|
||||
private int chanceGoldNuggets;
|
||||
private int chanceNetherWart;
|
||||
private int chanceBlazePowder;
|
||||
private int chanceGlowstoneDust;
|
||||
private int chanceGhastTear;
|
||||
|
||||
public AutomatedPanningMachine() {
|
||||
super(
|
||||
@ -48,24 +56,34 @@ public class AutomatedPanningMachine extends MultiBlockMachine {
|
||||
super.postRegister();
|
||||
|
||||
String goldPan = "GOLD_PAN";
|
||||
String netherGoldPan = "NETHER_GOLD_PAN";
|
||||
|
||||
chanceSiftedOre = (int) Slimefun.getItemValue(goldPan, "chance.SIFTED_ORE");
|
||||
chanceClay = (int) Slimefun.getItemValue(goldPan, "chance.CLAY");
|
||||
chanceFlint = (int) Slimefun.getItemValue(goldPan, "chance.FLINT");
|
||||
|
||||
chanceQuartz = (int) Slimefun.getItemValue(netherGoldPan, "chance.QUARTZ");
|
||||
chanceGoldNuggets = (int) Slimefun.getItemValue(netherGoldPan, "chance.GOLD_NUGGET");
|
||||
chanceNetherWart = (int) Slimefun.getItemValue(netherGoldPan, "chance.NETHER_WART");
|
||||
chanceBlazePowder = (int) Slimefun.getItemValue(netherGoldPan, "chance.BLAZE_POWDER");
|
||||
chanceGlowstoneDust = (int) Slimefun.getItemValue(netherGoldPan, "chance.GLOWSTONE_DUST");
|
||||
chanceGhastTear = (int) Slimefun.getItemValue(netherGoldPan, "chance.GHAST_TEAR");
|
||||
}
|
||||
|
||||
@Override
|
||||
public void onInteract(Player p, Block b) {
|
||||
final ItemStack input = p.getInventory().getItemInMainHand();
|
||||
|
||||
if (SlimefunManager.isItemSimiliar(input, new ItemStack(Material.GRAVEL), true)) {
|
||||
if (SlimefunManager.isItemSimiliar(input, new ItemStack(Material.GRAVEL), true) || SlimefunManager.isItemSimiliar(input, new ItemStack(Material.SOUL_SAND), true)) {
|
||||
final Material block = input.getType();
|
||||
|
||||
if (p.getGameMode() != GameMode.CREATIVE) ItemUtils.consumeItem(input, false);
|
||||
|
||||
ItemStack output = getRandomDrop();
|
||||
ItemStack output = getRandomDrop(ThreadLocalRandom.current(), block);
|
||||
TaskQueue queue = new TaskQueue();
|
||||
|
||||
queue.thenRepeatEvery(20, 5, () ->
|
||||
b.getWorld().playEffect(b.getRelative(BlockFace.DOWN).getLocation(), Effect.STEP_SOUND, Material.GRAVEL)
|
||||
b.getWorld().playEffect(b.getRelative(BlockFace.DOWN).getLocation(), Effect.STEP_SOUND, block)
|
||||
);
|
||||
|
||||
queue.thenRun(20, () -> {
|
||||
@ -93,17 +111,38 @@ public class AutomatedPanningMachine extends MultiBlockMachine {
|
||||
}
|
||||
}
|
||||
|
||||
private ItemStack getRandomDrop() {
|
||||
if (random.nextInt(100) < chanceSiftedOre) {
|
||||
return SlimefunItems.SIFTED_ORE;
|
||||
private ItemStack getRandomDrop(Random random, Material input) {
|
||||
if (input == Material.GRAVEL) {
|
||||
if (random.nextInt(100) < chanceSiftedOre) {
|
||||
return SlimefunItems.SIFTED_ORE;
|
||||
}
|
||||
else if (random.nextInt(100) < chanceClay) {
|
||||
return new ItemStack(Material.CLAY_BALL);
|
||||
}
|
||||
else if (random.nextInt(100) < chanceFlint) {
|
||||
return new ItemStack(Material.FLINT);
|
||||
}
|
||||
}
|
||||
else if (random.nextInt(100) < chanceClay) {
|
||||
return new ItemStack(Material.CLAY_BALL);
|
||||
else if (input == Material.SOUL_SAND) {
|
||||
if (random.nextInt(100) < chanceQuartz) {
|
||||
return new ItemStack(Material.QUARTZ);
|
||||
}
|
||||
else if (random.nextInt(100) < chanceGoldNuggets) {
|
||||
return new ItemStack(Material.GOLD_NUGGET);
|
||||
}
|
||||
else if (random.nextInt(100) < chanceNetherWart) {
|
||||
return new ItemStack(Material.NETHER_WART);
|
||||
}
|
||||
else if (random.nextInt(100) < chanceBlazePowder) {
|
||||
return new ItemStack(Material.BLAZE_POWDER);
|
||||
}
|
||||
else if (random.nextInt(100) < chanceGlowstoneDust) {
|
||||
return new ItemStack(Material.GLOWSTONE_DUST);
|
||||
}
|
||||
else if (random.nextInt(100) < chanceGhastTear) {
|
||||
return new ItemStack(Material.GHAST_TEAR);
|
||||
}
|
||||
}
|
||||
else if (random.nextInt(100) < chanceFlint) {
|
||||
return new ItemStack(Material.FLINT);
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
@ -245,6 +245,7 @@ public final class ResearchSetup {
|
||||
Slimefun.registerResearch(new Research(247, "GEO-Miner", 24), SlimefunItems.GEO_MINER);
|
||||
Slimefun.registerResearch(new Research(248, "Lightning Rune", 24), SlimefunItems.RUNE_LIGHTNING);
|
||||
Slimefun.registerResearch(new Research(249, "Totem of Undying", 36), SlimefunItems.TOTEM_OF_UNDYING);
|
||||
Slimefun.registerResearch(new Research(250, "Charging Bench", 8), SlimefunItems.CHARGING_BENCH);
|
||||
Slimefun.registerResearch(new Research(250, "Charging Bench", 8), SlimefunItems.CHARGING_BENCH);
|
||||
Slimefun.registerResearch(new Research(251, "Nether Gold Pan", 8), SlimefunItems.NETHER_GOLD_PAN);
|
||||
}
|
||||
}
|
||||
|
@ -91,6 +91,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MagicSugar;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MeatJerky;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.Multimeter;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.NetherGoldPan;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfContainment;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker;
|
||||
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfVeinMining;
|
||||
@ -333,8 +334,11 @@ public final class SlimefunSetup {
|
||||
.register(true);
|
||||
|
||||
new GoldPan(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.GOLD_PAN, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, null, null, new ItemStack(Material.STONE), new ItemStack(Material.BOWL), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE)},
|
||||
new String[] {"chance.FLINT", "chance.CLAY", "chance.SIFTED_ORE"}, new Integer[] {40, 25, 35})
|
||||
new ItemStack[] {null, null, null, new ItemStack(Material.STONE), new ItemStack(Material.BOWL), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE), new ItemStack(Material.STONE)})
|
||||
.register(true);
|
||||
|
||||
new NetherGoldPan(Categories.TOOLS, (SlimefunItemStack) SlimefunItems.NETHER_GOLD_PAN, RecipeType.ENHANCED_CRAFTING_TABLE,
|
||||
new ItemStack[] {null, null, null, new ItemStack(Material.NETHER_BRICK), SlimefunItems.GOLD_PAN, new ItemStack(Material.NETHER_BRICK), new ItemStack(Material.NETHER_BRICK), new ItemStack(Material.NETHER_BRICK), new ItemStack(Material.NETHER_BRICK)})
|
||||
.register(true);
|
||||
|
||||
new SlimefunItem(Categories.MISC, (SlimefunItemStack) SlimefunItems.SIFTED_ORE, RecipeType.GOLD_PAN,
|
||||
|
Loading…
Reference in New Issue
Block a user