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:
parent
f6057bf24d
commit
989ed45a02
@ -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;
|
||||
|
@ -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) {
|
||||
|
@ -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;
|
||||
|
@ -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.
|
||||
|
@ -78,6 +78,7 @@ public class GitHubService {
|
||||
|
||||
for (JsonElement elem : array) {
|
||||
JsonObject obj = elem.getAsJsonObject();
|
||||
|
||||
if (obj.has("pull_request")) prCount++;
|
||||
else issueCount++;
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
@ -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;
|
@ -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:
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
@ -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:
|
@ -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!");
|
||||
|
Loading…
Reference in New Issue
Block a user