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

Added Portable GEO-Scanner, Uranium Resources and improved gps

This commit is contained in:
TheBusyBiscuit 2019-09-23 17:50:35 +02:00
parent 28a4205e8c
commit dcee66839f
16 changed files with 228 additions and 56 deletions

View File

@ -0,0 +1,60 @@
package me.mrCookieSlime.Slimefun.GEO;
import java.util.logging.Level;
import org.bukkit.Chunk;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.api.Slimefun;
public final class GEOScanner {
private static final int[] geoscan_border = new int[] {0, 1, 2, 3, 5, 6, 7, 8, 9, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
private GEOScanner() {}
public static void scanChunk(Player p, Chunk chunk) {
if (Slimefun.getGPSNetwork().getNetworkComplexity(p.getUniqueId()) < 600) {
SlimefunPlugin.getLocal().sendMessages(p, "gps.insufficient-complexity", true, msg -> msg.replace("%complexity%", "600"));
return;
}
ChestMenu menu = new ChestMenu("&4GEO-Scan Results");
for (int slot : geoscan_border) {
menu.addItem(slot, new CustomItem(new ItemStack(Material.GRAY_STAINED_GLASS_PANE), " "),
(pl, slotn, item, action) -> false
);
}
try {
menu.addItem(4, new CustomItem(CustomSkull.getItem("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvODQ0OWI5MzE4ZTMzMTU4ZTY0YTQ2YWIwZGUxMjFjM2Q0MDAwMGUzMzMyYzE1NzQ5MzJiM2M4NDlkOGZhMGRjMiJ9fX0="), "&eScanned Chunk", "", "&8\u21E8 &7World: " + chunk.getWorld().getName(), "&8\u21E8 &7X: " + chunk.getX() + " Z: " + chunk.getZ()), (pl, slot, stack, action) -> false);
} catch (Exception e) {
Slimefun.getLogger().log(Level.SEVERE, "Error while scanning a chunk for Slimefun " + Slimefun.getVersion(), e);
}
int index = 10;
for (OreGenResource resource: OreGenSystem.listResources()) {
int supply = OreGenSystem.getSupplies(resource, chunk, true);
ItemStack item = new CustomItem(resource.getIcon(), "&r" + resource.getName(), "&8\u21E8 &e" + supply + ' ' + resource.getMeasurementUnit());
if (supply > 1) {
item.setAmount(supply > item.getMaxStackSize() ? item.getMaxStackSize(): supply);
}
menu.addItem(index, item, (pl, slot, stack, action) -> false);
index++;
if (index % 9 == 8) {
index += 2;
}
}
menu.open(p);
}
}

View File

@ -25,4 +25,9 @@ public interface OreGenResource {
*/
String getMeasurementUnit();
/**
* Returns whether this Resource is considered a fluid
*/
boolean isLiquid();
}

View File

@ -20,14 +20,18 @@ public final class OreGenSystem {
}
public static void registerResource(OreGenResource resource) {
SlimefunPlugin.getUtilities().resources.put(resource.getName(), resource);
Slimefun.getLogger().log(Level.INFO, "Registering Ore Gen: " + resource.getName());
Config cfg = new Config("plugins/Slimefun/generators/" + resource.getName() + ".cfg");
Config cfg = new Config("plugins/Slimefun/generators/" + resource.getName() + ".yml");
cfg.setDefaultValue("enabled", true);
for (Biome biome: Biome.values()) {
cfg.setDefaultValue(biome.toString(), resource.getDefaultSupply(biome));
cfg.setDefaultValue("spawn-rates." + biome.toString(), resource.getDefaultSupply(biome));
}
cfg.save();
if (cfg.getBoolean("enabled")) {
Slimefun.getLogger().log(Level.INFO, "Registering Ore Gen: " + resource.getName());
SlimefunPlugin.getUtilities().resources.put(resource.getName(), resource);
SlimefunPlugin.getUtilities().resource_configs.put(resource.getName(), cfg);
}
}
public static OreGenResource getResource(String name) {
@ -35,25 +39,31 @@ public final class OreGenSystem {
}
private static int getDefault(OreGenResource resource, Biome biome) {
if (resource == null) return 0;
Config cfg = new Config("plugins/Slimefun/generators/" + resource.getName() + ".cfg");
return cfg.getInt(biome.toString());
if (resource == null) {
return 0;
}
else {
return SlimefunPlugin.getUtilities().resource_configs.get(resource.getName()).getInt("spawn-rates." + biome.toString());
}
}
public static void setSupplies(OreGenResource resource, Chunk chunk, int amount) {
if (resource == null) return;
BlockStorage.setChunkInfo(chunk, "resources_" + resource.getName().toUpperCase(), String.valueOf(amount));
if (resource != null) {
BlockStorage.setChunkInfo(chunk, "resources_" + resource.getName().toUpperCase(), String.valueOf(amount));
}
}
public static int generateSupplies(OreGenResource resource, Chunk chunk) {
if (resource == null) return 0;
int supplies = getDefault(resource, chunk.getBlock(5, 50, 5).getBiome());
int supplies = getDefault(resource, chunk.getBlock(7, 60, 7).getBiome());
BlockStorage.setChunkInfo(chunk, "resources_" + resource.getName().toUpperCase(), String.valueOf(supplies));
return supplies;
}
public static int getSupplies(OreGenResource resource, Chunk chunk, boolean generate) {
if (resource == null) return 0;
if (BlockStorage.hasChunkInfo(chunk, "resources_" + resource.getName().toUpperCase())) {
return Integer.parseInt(BlockStorage.getChunkInfo(chunk, "resources_" + resource.getName().toUpperCase()));
}

View File

@ -28,4 +28,9 @@ public class NetherIceResource implements OreGenResource {
return "Blocks";
}
@Override
public boolean isLiquid() {
return false;
}
}

View File

@ -81,4 +81,9 @@ public class OilResource implements OreGenResource {
return "Buckets";
}
@Override
public boolean isLiquid() {
return true;
}
}

View File

@ -0,0 +1,49 @@
package me.mrCookieSlime.Slimefun.GEO.resources;
import java.util.Random;
import org.bukkit.block.Biome;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.Slimefun.GEO.OreGenResource;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
public class UraniumResource implements OreGenResource {
private final Random random = new Random();
@Override
public int getDefaultSupply(Biome biome) {
switch (biome) {
case THE_END:
case END_BARRENS:
case END_MIDLANDS:
case SMALL_END_ISLANDS:
case NETHER:
return 0;
default:
return random.nextInt(5) + 1;
}
}
@Override
public String getName() {
return "Small Chunks of Uranium";
}
@Override
public ItemStack getIcon() {
return SlimefunItems.SMALL_URANIUM.clone();
}
@Override
public String getMeasurementUnit() {
return "Pieces";
}
@Override
public boolean isLiquid() {
return false;
}
}

View File

@ -9,7 +9,6 @@ import java.util.logging.Level;
import org.bukkit.Bukkit;
import org.bukkit.ChatColor;
import org.bukkit.Chunk;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.Sound;
@ -25,15 +24,13 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.general.Math.DoubleHandler;
import me.mrCookieSlime.CSCoreLibPlugin.general.World.CustomSkull;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.GEO.OreGenResource;
import me.mrCookieSlime.Slimefun.GEO.OreGenSystem;
import me.mrCookieSlime.Slimefun.api.Slimefun;
public class GPSNetwork {
private Map<UUID, Set<Location>> transmitters = new HashMap<>();
private int[] border = new int[] {0, 1, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
private int[] inventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43};
private static final int[] border = new int[] {0, 1, 3, 5, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
private static final int[] inventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43};
private static final int[] teleporter_border = new int[] {0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 26, 27, 35, 36, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53};
private static final int[] teleporter_inventory = new int[] {19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34, 37, 38, 39, 40, 41, 42, 43};
@ -158,8 +155,7 @@ public class GPSNetwork {
menu.addItem(slot, new CustomItem(globe, entry.getKey(), "&8\u21E8 &7World: &r" + l.getWorld().getName(), "&8\u21E8 &7X: &r" + l.getX(), "&8\u21E8 &7Y: &r" + l.getY(), "&8\u21E8 &7Z: &r" + l.getZ(), "", "&8\u21E8 &cClick to delete"));
menu.addMenuClickHandler(slot, (pl, slotn, item, action) -> {
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', entry.getKey()))
.toUpperCase().replace(' ', '_');
String id = ChatColor.stripColor(ChatColor.translateAlternateColorCodes('&', entry.getKey())).toUpperCase().replace(' ', '_');
Config cfg = new Config("data-storage/Slimefun/waypoints/" + pl.getUniqueId().toString() + ".yml");
cfg.setValue(id, null);
cfg.save();
@ -222,25 +218,6 @@ public class GPSNetwork {
return transmitters.containsKey(uuid) ? transmitters.get(uuid): new HashSet<>();
}
public void scanChunk(Player p, Chunk chunk) {
if (getNetworkComplexity(p.getUniqueId()) < 600) {
SlimefunPlugin.getLocal().sendMessages(p, "gps.insufficient-complexity", true, msg -> msg.replace("%complexity%", "600"));
return;
}
ChestMenu menu = new ChestMenu("&4Scan Results");
int index = 0;
for (OreGenResource resource: OreGenSystem.listResources()) {
int supply = OreGenSystem.getSupplies(resource, chunk, true);
menu.addItem(index, new CustomItem(resource.getIcon(), "&7Resource: &e" + resource.getName(), "", "&7Scanned Chunk:", "&8\u21E8 &7X: " + chunk.getX() + " Z: " + chunk.getZ(), "", "&7Result: &e" + supply + ' ' + resource.getMeasurementUnit()), (pl, slot, item, action) -> false);
index++;
}
menu.open(p);
}
public static void openTeleporterGUI(Player p, UUID uuid, Block b, final int complexity) {
if (SlimefunPlugin.getUtilities().teleporterUsers.contains(p.getUniqueId())) return;

View File

@ -14,7 +14,7 @@ import org.bukkit.inventory.ItemStack;
public class RecipeType {
public static final RecipeType MULTIBLOCK = new RecipeType(new CustomItem(Material.BRICK, "&bMultiBlock", "", "&a&oBuild it in the World"));
public static final RecipeType MULTIBLOCK = new RecipeType(new CustomItem(Material.BRICKS, "&bMultiBlock", "", "&a&oBuild it in the World"));
public static final RecipeType ARMOR_FORGE = new RecipeType(new CustomItem(Material.ANVIL, "&bArmor Forge", "", "&a&oCraft it in an Armor Forge"), "ARMOR_FORGE");
public static final RecipeType GRIND_STONE = new RecipeType(new CustomItem(Material.DISPENSER, "&bGrind Stone", "", "&a&oGrind it using the Grind Stone"), "GRIND_STONE");
public static final RecipeType MOB_DROP = new RecipeType(new CustomItem(Material.IRON_SWORD, "&bMob Drop", "", "&a&oKill the specified Mob to obtain this Item"));

View File

@ -682,6 +682,7 @@ public final class SlimefunItems {
public static final ItemStack ANDROID_INTERFACE_ITEMS = new CustomItem(Material.DISPENSER, "&7Android Interface &9(Items)", "", "&rItems stored in an Android's Inventory", "&rwill be inserted into this Interface", "&rwhen its Script tells them to do so");
public static final ItemStack GPS_GEO_SCANNER = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMmFkOGNmZWIzODdhNTZlM2U1YmNmODUzNDVkNmE0MTdiMjQyMjkzODg3ZGIzY2UzYmE5MWZhNDA5YjI1NGI4NiJ9fX0="), "&bGPS Geo-Scanner", "", "&rScans a Chunk for natural Resources", "&rsuch as &8Oil");
public static final ItemStack PORTABLE_GEO_SCANNER = new CustomItem(Material.CLOCK, "&bPortable Geo-Scanner", "", "&rScans a Chunk for natural Resources", "", "&eRight Click&7 to scan");
public static final ItemStack OIL_PUMP = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYWZlMWEwNDBhNDI1ZTMxYTQ2ZDRmOWE5Yjk4MDZmYTJmMGM0N2VlODQ3MTFjYzE5MzJmZDhhYjMyYjJkMDM4In19fQ=="), "&rOil Pump", "", "&7Pumps up Oil and fills it into Buckets", "", "&c&l! &cMake sure to Geo-Scan the Chunk first");
public static final ItemStack BUCKET_OF_OIL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNmNlMDRiNDFkMTllYzc5MjdmOTgyYTYzYTk0YTNkNzlmNzhlY2VjMzMzNjMwNTFmZGUwODMxYmZhYmRiZCJ9fX0="), "&rBucket of Oil");
public static final ItemStack BUCKET_OF_FUEL = new CustomItem(getSkull("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYTg0ZGRjYTc2NjcyNWI4Yjk3NDEzZjI1OWMzZjc2NjgwNzBmNmFlNTU0ODNhOTBjOGU1NTI1Mzk0ZjljMDk5In19fQ=="), "&rBucket of Fuel");

View File

@ -19,6 +19,7 @@ import me.mrCookieSlime.Slimefun.api.energy.ChargableBlock;
import me.mrCookieSlime.Slimefun.api.inventory.BlockMenuPreset;
import me.mrCookieSlime.Slimefun.api.item_transport.ItemTransportFlow;
@Deprecated
public abstract class ADrill extends AContainer {
private static final int[] border = {0, 1, 2, 3, 4, 5, 6, 7, 8, 13, 31, 36, 37, 38, 39, 40, 41, 42, 43, 44, 9, 10, 11, 12, 18, 21, 27, 28, 29, 30, 19, 20};

View File

@ -0,0 +1,30 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.Slimefun.GEO.GEOScanner;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;
public class PortableGEOScanner extends SimpleSlimefunItem<ItemInteractionHandler> {
public PortableGEOScanner(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
super(category, item, id, recipeType, recipe);
}
@Override
public ItemInteractionHandler getItemHandler() {
return (e, p, item) -> {
if (SlimefunManager.isItemSimiliar(item, getItem(), true)) {
e.setCancelled(true);
GEOScanner.scanChunk(p, p.getLocation().getChunk());
return true;
}
return false;
};
}
}

View File

@ -0,0 +1,30 @@
package me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.Slimefun.GEO.GEOScanner;
import me.mrCookieSlime.Slimefun.Lists.RecipeType;
import me.mrCookieSlime.Slimefun.Objects.Category;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SimpleSlimefunItem;
import me.mrCookieSlime.Slimefun.Objects.handlers.ItemInteractionHandler;
import me.mrCookieSlime.Slimefun.api.BlockStorage;
public class GEOScannerBlock extends SimpleSlimefunItem<ItemInteractionHandler> {
public GEOScannerBlock(Category category, ItemStack item, String id, RecipeType recipeType, ItemStack[] recipe) {
super(category, item, id, recipeType, recipe);
}
@Override
public ItemInteractionHandler getItemHandler() {
return (e, p, stack) -> {
if (e.getClickedBlock() == null) return false;
String item = BlockStorage.checkID(e.getClickedBlock());
if (item == null || !item.equals("GPS_GEO_SCANNER")) return false;
e.setCancelled(true);
GEOScanner.scanChunk(p, e.getClickedBlock().getChunk());
return true;
};
}
}

View File

@ -178,7 +178,7 @@ public final class ResearchSetup {
Slimefun.registerResearch(new Research(178, "GPS Emergency Waypoint", 30), SlimefunItems.GPS_EMERGENCY_TRANSMITTER);
Slimefun.registerResearch(new Research(179, "Programmable Androids", 50), SlimefunItems.PROGRAMMABLE_ANDROID, SlimefunItems.PROGRAMMABLE_ANDROID_FARMER, SlimefunItems.PROGRAMMABLE_ANDROID_BUTCHER, SlimefunItems.PROGRAMMABLE_ANDROID_FISHERMAN, SlimefunItems.PROGRAMMABLE_ANDROID_MINER, SlimefunItems.PROGRAMMABLE_ANDROID_WOODCUTTER);
Slimefun.registerResearch(new Research(180, "Android Interfaces", 26), SlimefunItems.ANDROID_INTERFACE_FUEL, SlimefunItems.ANDROID_INTERFACE_ITEMS);
Slimefun.registerResearch(new Research(181, "GEO-Scans", 30), SlimefunItems.GPS_GEO_SCANNER);
Slimefun.registerResearch(new Research(181, "GEO-Scans", 30), SlimefunItems.GPS_GEO_SCANNER, SlimefunItems.PORTABLE_GEO_SCANNER);
Slimefun.registerResearch(new Research(182, "Combustion Reactor", 38), SlimefunItems.COMBUSTION_REACTOR);
Slimefun.registerResearch(new Research(183, "Teleporter Base Components", 42), SlimefunItems.GPS_TELEPORTATION_MATRIX, SlimefunItems.GPS_TELEPORTER_PYLON);
Slimefun.registerResearch(new Research(184, "Teleporter Activation", 36), SlimefunItems.GPS_ACTIVATION_DEVICE_PERSONAL, SlimefunItems.GPS_ACTIVATION_DEVICE_SHARED);

View File

@ -93,6 +93,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.MonsterJerky;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfContainment;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfTheSeeker;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PickaxeOfVeinMining;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.PortableGEOScanner;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SeismicAxe;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SmeltersPickaxe;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.items.SoulboundRune;
@ -131,6 +132,7 @@ import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FluidPum
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodComposter;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.FoodFabricator;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.Freezer;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.GEOScannerBlock;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.GPSTransmitter;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.HeatedPressureChamber;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.machines.electric.NetherDrill;
@ -2302,7 +2304,7 @@ public final class SlimefunSetup {
});
new SlimefunItem(Categories.GPS, SlimefunItems.GPS_MARKER_TOOL, "GPS_MARKER_TOOL", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, new ItemStack(Material.LAPIS_LAZULI), SlimefunItems.BASIC_CIRCUIT_BOARD, new ItemStack(Material.LAPIS_LAZULI), new ItemStack(Material.REDSTONE), SlimefunItems.REDSTONE_ALLOY, new ItemStack(Material.REDSTONE)})
new ItemStack[] {null, SlimefunItems.ELECTRO_MAGNET, null, new ItemStack(Material.LAPIS_LAZULI), SlimefunItems.BASIC_CIRCUIT_BOARD, new ItemStack(Material.LAPIS_LAZULI), new ItemStack(Material.REDSTONE), SlimefunItems.REDSTONE_ALLOY, new ItemStack(Material.REDSTONE)})
.register(true);
new SlimefunItem(Categories.GPS, SlimefunItems.GPS_EMERGENCY_TRANSMITTER, "GPS_EMERGENCY_TRANSMITTER", RecipeType.ENHANCED_CRAFTING_TABLE,
@ -2707,22 +2709,13 @@ public final class SlimefunSetup {
new CustomItem(SlimefunItems.WITHER_PROOF_GLASS, 4))
.register(true);
new SlimefunItem(Categories.GPS, SlimefunItems.GPS_GEO_SCANNER, "GPS_GEO_SCANNER", RecipeType.ENHANCED_CRAFTING_TABLE,
new GEOScannerBlock(Categories.GPS, SlimefunItems.GPS_GEO_SCANNER, "GPS_GEO_SCANNER", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {null, null, SlimefunItems.ELECTRO_MAGNET, null, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRO_MAGNET, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.ELECTRO_MAGNET})
.register(true, new ItemInteractionHandler() {
.register(true);
@Override
public boolean onRightClick(ItemUseEvent e, Player p, ItemStack stack) {
if (e.getClickedBlock() == null) return false;
String item = BlockStorage.checkID(e.getClickedBlock());
if (item == null || !item.equals("GPS_GEO_SCANNER")) return false;
e.setCancelled(true);
Slimefun.getGPSNetwork().scanChunk(p, e.getClickedBlock().getChunk());
return true;
}
});
new PortableGEOScanner(Categories.GPS, SlimefunItems.PORTABLE_GEO_SCANNER, "PORTABLE_GEO_SCANNER", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.ELECTRO_MAGNET, new ItemStack(Material.COMPASS), SlimefunItems.ELECTRO_MAGNET, SlimefunItems.STEEL_INGOT, SlimefunItems.GPS_MARKER_TOOL, SlimefunItems.STEEL_INGOT, SlimefunItems.SOLDER_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.SOLDER_INGOT})
.register(true);
new OilPump(Categories.GPS, SlimefunItems.OIL_PUMP, "OIL_PUMP", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[] {SlimefunItems.STEEL_INGOT, SlimefunItems.MEDIUM_CAPACITOR, SlimefunItems.STEEL_INGOT, SlimefunItems.STEEL_INGOT, SlimefunItems.ELECTRIC_MOTOR, SlimefunItems.STEEL_INGOT, null, new ItemStack(Material.BUCKET), null}) {
@ -2741,6 +2734,7 @@ public final class SlimefunSetup {
new NetherDrill(Categories.GPS, SlimefunItems.NETHER_DRILL, "NETHER_DRILL", RecipeType.ENHANCED_CRAFTING_TABLE,
new ItemStack[]{SlimefunItems.LEAD_INGOT, SlimefunItems.POWER_CRYSTAL, SlimefunItems.LEAD_INGOT, SlimefunItems.REINFORCED_PLATE, SlimefunItems.OIL_PUMP, SlimefunItems.REINFORCED_PLATE, SlimefunItems.LEAD_INGOT, SlimefunItems.BIG_CAPACITOR, SlimefunItems.LEAD_INGOT}){
@Override
public int getSpeed() {
return 1;
@ -2750,6 +2744,7 @@ public final class SlimefunSetup {
public int getEnergyConsumption() {
return 51;
}
}.registerChargeableBlock(true, 1024);
new SlimefunItem(Categories.RESOURCES, SlimefunItems.BUCKET_OF_OIL, "BUCKET_OF_OIL", new RecipeType(SlimefunItems.OIL_PUMP),

View File

@ -23,6 +23,7 @@ import me.mrCookieSlime.CSCoreLibPlugin.general.Reflection.ReflectionUtils;
import me.mrCookieSlime.Slimefun.GEO.OreGenSystem;
import me.mrCookieSlime.Slimefun.GEO.resources.NetherIceResource;
import me.mrCookieSlime.Slimefun.GEO.resources.OilResource;
import me.mrCookieSlime.Slimefun.GEO.resources.UraniumResource;
import me.mrCookieSlime.Slimefun.GPS.GPSNetwork;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
import me.mrCookieSlime.Slimefun.Objects.SlimefunItem.SlimefunArmorPiece;
@ -206,6 +207,7 @@ public final class SlimefunPlugin extends JavaPlugin {
// Generating Oil as an OreGenResource (its a cool API)
OreGenSystem.registerResource(new OilResource());
OreGenSystem.registerResource(new NetherIceResource());
OreGenSystem.registerResource(new UraniumResource());
// Setting up GitHub Connectors...

View File

@ -16,6 +16,7 @@ import org.bukkit.entity.Entity;
import org.bukkit.entity.EntityType;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
import me.mrCookieSlime.Slimefun.GEO.OreGenResource;
import me.mrCookieSlime.Slimefun.Lists.Categories;
import me.mrCookieSlime.Slimefun.Objects.Category;
@ -118,6 +119,7 @@ public final class Utilities {
public final Set<UUID> teleporterUsers = new HashSet<>();
public final Map<String, OreGenResource> resources = new HashMap<>();
public final Map<String, Config> resource_configs = new HashMap<>();
public final Set<GitHubConnector> connectors = new HashSet<>();
public final Map<String, String> contributorHeads = new HashMap<>();