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

Added Salt to the GEO Miner (and reduced technical debt)

This commit is contained in:
TheBusyBiscuit 2019-12-17 00:18:04 +01:00
parent f6057bf24d
commit 989ed45a02
11 changed files with 165 additions and 53 deletions

View File

@ -11,11 +11,11 @@ import org.bukkit.inventory.ItemStack;
import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import me.mrCookieSlime.CSCoreLibPlugin.PlayerRunnable;
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage;
import me.mrCookieSlime.CSCoreLibPlugin.general.Chat.TellRawMessage.HoverAction;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.CustomBookOverlay;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunGuide;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Objects.Category;

View File

@ -24,6 +24,7 @@ import io.github.thebusybiscuit.cscorelib2.inventory.ItemUtils;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.cscorelib2.recipes.MinecraftRecipe;
import io.github.thebusybiscuit.cscorelib2.skull.SkullItem;
import io.github.thebusybiscuit.slimefun4.core.utils.ChatUtils;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu;
import me.mrCookieSlime.Slimefun.SlimefunGuide;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
@ -429,9 +430,7 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
menu.addItem(8, new CustomItem(Material.KNOWLEDGE_BOOK, "&rView this Item on our Wiki &7(Slimefun Wiki)", "", "&7\u21E8 Click to open"));
menu.addMenuClickHandler(8, (pl, slot, itemstack, action) -> {
pl.closeInventory();
pl.sendMessage("");
pl.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&o" + item.getWiki()));
pl.sendMessage("");
ChatUtils.sendURL(pl, item.getWiki());
return false;
});
} catch (Exception x) {
@ -444,9 +443,7 @@ public class ChestSlimefunGuide implements ISlimefunGuide {
menu.addItem(7, new CustomItem(SkullItem.fromBase64("eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvYjQzNTNmZDBmODYzMTQzNTM4NzY1ODYwNzViOWJkZjBjNDg0YWFiMDMzMWI4NzJkZjExYmQ1NjRmY2IwMjllZCJ9fX0="), "&rDemonstration Video &7(Youtube)", "", "&7\u21E8 Click to watch"));
menu.addMenuClickHandler(7, (pl, slot, itemstack, action) -> {
pl.closeInventory();
pl.sendMessage("");
pl.sendMessage(ChatColor.translateAlternateColorCodes('&', "&7&o" + Slimefun.getItemConfig().getString(item.getID() + ".youtube")));
pl.sendMessage("");
ChatUtils.sendURL(pl, Slimefun.getItemConfig().getString(item.getID() + ".youtube"));
return false;
});
} catch (Exception x) {

View File

@ -15,13 +15,13 @@ import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.SkullMeta;
import io.github.thebusybiscuit.cscorelib2.chat.ChatColors;
import io.github.thebusybiscuit.cscorelib2.item.CustomItem;
import io.github.thebusybiscuit.cscorelib2.skull.SkullItem;
import io.github.thebusybiscuit.slimefun4.core.services.github.Contributor;
import io.github.thebusybiscuit.slimefun4.core.utils.ChatUtils;
import io.github.thebusybiscuit.slimefun4.core.utils.NumberUtils;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.ChestMenu;
import me.mrCookieSlime.CSCoreLibPlugin.general.Inventory.Item.CustomItem;
import me.mrCookieSlime.Slimefun.SlimefunGuide;
import me.mrCookieSlime.Slimefun.SlimefunPlugin;
import me.mrCookieSlime.Slimefun.Setup.SlimefunManager;

View File

@ -16,9 +16,8 @@ public class ContributionsConnector extends GitHubConnector {
private static final List<String> blacklist = Arrays.asList(
"invalid-email-address",
"renovate-bot",
"ImgBotApp",
"TheBusyBot",
"imgbot"
"imgbot[bot]"
);
// Matches a GitHub name with a Minecraft name.

View File

@ -78,6 +78,7 @@ public class GitHubService {
for (JsonElement elem : array) {
JsonObject obj = elem.getAsJsonObject();
if (obj.has("pull_request")) prCount++;
else issueCount++;
}

View File

@ -0,0 +1,61 @@
package io.github.thebusybiscuit.slimefun4.core.services.github;
import java.util.HashMap;
import java.util.Map;
import java.util.Optional;
import java.util.UUID;
import io.github.thebusybiscuit.cscorelib2.players.MinecraftAccount;
import io.github.thebusybiscuit.cscorelib2.players.MinecraftAccount.TooManyRequestsException;
public class GitHubTask implements Runnable {
private final GitHubService gitHubService;
public GitHubTask(GitHubService github) {
gitHubService = github;
}
@Override
public void run() {
gitHubService.getConnectors().forEach(GitHubConnector::pullFile);
// Store all queried usernames to prevent 429 responses for pinging the
// same URL twice in one run.
Map<String, String> skins = new HashMap<>();
for (Contributor contributor : gitHubService.getContributors().values()) {
if (!contributor.hasTexture()) {
try {
if (skins.containsKey(contributor.getMinecraftName())) {
contributor.setTexture(Optional.of(skins.get(contributor.getMinecraftName())));
}
else {
contributor.setTexture(grabTexture(skins, contributor.getMinecraftName()));
}
}
catch(IllegalArgumentException x) {
// There cannot be a texture found because it is not a valid MC username
contributor.setTexture(Optional.empty());
}
catch(TooManyRequestsException x) {
break;
}
}
}
}
private Optional<String> grabTexture(Map<String, String> skins, String username) throws TooManyRequestsException {
Optional<UUID> uuid = MinecraftAccount.getUUID(username);
if (uuid.isPresent()) {
Optional<String> skin = MinecraftAccount.getSkin(uuid.get());
skins.put(username, skin.orElse(""));
return skin;
}
else {
return Optional.empty();
}
}
}

View File

@ -1,4 +1,4 @@
package me.mrCookieSlime.Slimefun.GEO.resources;
package io.github.thebusybiscuit.slimefun4.implementation.geo.resources;
import org.bukkit.block.Biome;
import org.bukkit.inventory.ItemStack;

View File

@ -1,6 +1,7 @@
package me.mrCookieSlime.Slimefun.GEO.resources;
package io.github.thebusybiscuit.slimefun4.implementation.geo.resources;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
import org.bukkit.block.Biome;
import org.bukkit.inventory.ItemStack;
@ -10,10 +11,10 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
public class OilResource implements OreGenResource {
private final Random random = new Random();
@Override
public int getDefaultSupply(Biome biome) {
Random random = ThreadLocalRandom.current();
switch (biome) {
case SNOWY_BEACH:
case STONE_SHORE:
@ -55,6 +56,13 @@ public class OilResource implements OreGenResource {
case DEEP_OCEAN:
case OCEAN:
case COLD_OCEAN:
case DEEP_COLD_OCEAN:
case DEEP_FROZEN_OCEAN:
case DEEP_LUKEWARM_OCEAN:
case DEEP_WARM_OCEAN:
case LUKEWARM_OCEAN:
case WARM_OCEAN:
return random.nextInt(62) + 24;
case SWAMP:

View File

@ -0,0 +1,73 @@
package io.github.thebusybiscuit.slimefun4.implementation.geo.resources;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
import org.bukkit.block.Biome;
import org.bukkit.inventory.ItemStack;
import me.mrCookieSlime.Slimefun.GEO.OreGenResource;
import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
public class SaltResource implements OreGenResource {
@Override
public int getDefaultSupply(Biome biome) {
Random random = ThreadLocalRandom.current();
switch (biome) {
case SNOWY_BEACH:
case STONE_SHORE:
case BEACH:
case DESERT_LAKES:
case RIVER:
case ICE_SPIKES:
case FROZEN_RIVER:
return random.nextInt(40) + 3;
case DEEP_OCEAN:
case OCEAN:
case COLD_OCEAN:
case DEEP_COLD_OCEAN:
case DEEP_FROZEN_OCEAN:
case DEEP_LUKEWARM_OCEAN:
case DEEP_WARM_OCEAN:
case FROZEN_OCEAN:
case LUKEWARM_OCEAN:
case WARM_OCEAN:
return random.nextInt(60) + 24;
case SWAMP:
case SWAMP_HILLS:
return random.nextInt(20) + 4;
case THE_END:
case NETHER:
return 0;
default:
return random.nextInt(6) + 4;
}
}
@Override
public String getName() {
return "Salt";
}
@Override
public ItemStack getIcon() {
return SlimefunItems.SALT.clone();
}
@Override
public String getMeasurementUnit() {
return "Crystal(s)";
}
@Override
public boolean isLiquid() {
return false;
}
}

View File

@ -1,6 +1,7 @@
package me.mrCookieSlime.Slimefun.GEO.resources;
package io.github.thebusybiscuit.slimefun4.implementation.geo.resources;
import java.util.Random;
import java.util.concurrent.ThreadLocalRandom;
import org.bukkit.block.Biome;
import org.bukkit.inventory.ItemStack;
@ -10,10 +11,10 @@ import me.mrCookieSlime.Slimefun.Lists.SlimefunItems;
public class UraniumResource implements OreGenResource {
private final Random random = new Random();
@Override
public int getDefaultSupply(Biome biome) {
Random random = ThreadLocalRandom.current();
switch (biome) {
case THE_END:
case END_BARRENS:

View File

@ -1,8 +1,6 @@
package me.mrCookieSlime.Slimefun;
import java.io.File;
import java.util.Optional;
import java.util.UUID;
import java.util.logging.Level;
import org.bukkit.Bukkit;
@ -11,8 +9,6 @@ import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;
import io.github.thebusybiscuit.cscorelib2.players.MinecraftAccount;
import io.github.thebusybiscuit.cscorelib2.players.MinecraftAccount.TooManyRequestsException;
import io.github.thebusybiscuit.cscorelib2.protection.ProtectionManager;
import io.github.thebusybiscuit.cscorelib2.recipes.RecipeSnapshot;
import io.github.thebusybiscuit.cscorelib2.reflection.ReflectionUtils;
@ -23,16 +19,16 @@ import io.github.thebusybiscuit.slimefun4.core.services.BlockDataService;
import io.github.thebusybiscuit.slimefun4.core.services.CustomItemDataService;
import io.github.thebusybiscuit.slimefun4.core.services.CustomTextureService;
import io.github.thebusybiscuit.slimefun4.core.services.MetricsService;
import io.github.thebusybiscuit.slimefun4.core.services.github.Contributor;
import io.github.thebusybiscuit.slimefun4.core.services.github.GitHubConnector;
import io.github.thebusybiscuit.slimefun4.core.services.github.GitHubService;
import io.github.thebusybiscuit.slimefun4.core.services.github.GitHubTask;
import io.github.thebusybiscuit.slimefun4.implementation.geo.resources.NetherIceResource;
import io.github.thebusybiscuit.slimefun4.implementation.geo.resources.OilResource;
import io.github.thebusybiscuit.slimefun4.implementation.geo.resources.SaltResource;
import io.github.thebusybiscuit.slimefun4.implementation.geo.resources.UraniumResource;
import me.mrCookieSlime.CSCoreLibPlugin.CSCoreLib;
import me.mrCookieSlime.CSCoreLibPlugin.PluginUtils;
import me.mrCookieSlime.CSCoreLibPlugin.Configuration.Config;
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.SlimefunItem;
@ -232,10 +228,11 @@ public final class SlimefunPlugin extends JavaPlugin {
getLogger().log(Level.INFO, "Loading World Generators...");
// Generating Oil as an OreGenResource (its a cool API)
// Generating Oil as an OreGenResource (it iss a cool API)
OreGenSystem.registerResource(new OilResource());
OreGenSystem.registerResource(new NetherIceResource());
OreGenSystem.registerResource(new UraniumResource());
OreGenSystem.registerResource(new SaltResource());
// Setting up GitHub Connectors...
gitHubService.connect(config.getBoolean("options.print-out-github-data-retrieving"));
@ -308,32 +305,7 @@ public final class SlimefunPlugin extends JavaPlugin {
}
}, 100L, config.getInt("URID.custom-ticker-delay"));
getServer().getScheduler().runTaskTimerAsynchronously(this, () -> {
gitHubService.getConnectors().forEach(GitHubConnector::pullFile);
for (Contributor contributor : gitHubService.getContributors().values()) {
if (!contributor.hasTexture()) {
try {
Optional<UUID> uuid = MinecraftAccount.getUUID(contributor.getMinecraftName());
if (uuid.isPresent()) {
Optional<String> skin = MinecraftAccount.getSkin(uuid.get());
contributor.setTexture(skin);
}
else {
contributor.setTexture(Optional.empty());
}
}
catch(IllegalArgumentException x) {
// There cannot be a texture found because it is not a valid MC username
contributor.setTexture(Optional.empty());
}
catch(TooManyRequestsException x) {
break;
}
}
}
}, 80L, 60 * 60 * 20L);
getServer().getScheduler().runTaskTimerAsynchronously(this, new GitHubTask(gitHubService), 80L, 60 * 60 * 20L);
// Hooray!
getLogger().log(Level.INFO, "Finished!");