From dc825ad776f9fe9f763267874f6fa70c4870fc46 Mon Sep 17 00:00:00 2001 From: davidovski Date: Wed, 15 Oct 2025 04:01:15 +0100 Subject: v5 --- src/main/java/net/uomc/mineshaft/Pickaxes.java | 122 +++++++++++++++++++++++-- 1 file changed, 115 insertions(+), 7 deletions(-) (limited to 'src/main/java/net/uomc/mineshaft/Pickaxes.java') diff --git a/src/main/java/net/uomc/mineshaft/Pickaxes.java b/src/main/java/net/uomc/mineshaft/Pickaxes.java index 42a1f92..16d6958 100644 --- a/src/main/java/net/uomc/mineshaft/Pickaxes.java +++ b/src/main/java/net/uomc/mineshaft/Pickaxes.java @@ -3,20 +3,27 @@ package net.uomc.mineshaft; import java.io.File; import java.sql.SQLException; import java.util.Collections; +import java.util.List; +import java.util.stream.Collectors; import org.json.JSONObject; import com.mouldycheerio.dbot.util.DatabaseUtils; import com.mouldycheerio.dbot.util.PeelingUtils; +import net.dv8tion.jda.api.entities.Guild; import net.dv8tion.jda.api.entities.Member; -class Pickaxes { +public class Pickaxes { private static final int MAX_PICKAXE_LEVEL = 5; private static final String LEVEL_TABLE = "levels"; private static final String FORTUNE_TABLE = "ench_fortune"; + private static final String EFFICIENCY_TABLE = "ench_efficiency"; + private static final String DIMENSION_TABLE = "dimension"; + + private static final String FARM_LEVEL_TABLE = "farm"; private String pickaxesDb; @@ -27,11 +34,45 @@ class Pickaxes { private void initDB() { try { - DatabaseUtils.createSimpleKVtable(pickaxesDb, LEVEL_TABLE); DatabaseUtils.createSimpleKVtable(pickaxesDb, FORTUNE_TABLE); } catch (SQLException e) { - // e.printStackTrace(); } + try { + DatabaseUtils.createSimpleKVtable(pickaxesDb, DIMENSION_TABLE); + } catch (SQLException e) { + } + try { + DatabaseUtils.createSimpleKVtable(pickaxesDb, EFFICIENCY_TABLE); + } catch (SQLException e) { + } + try { + DatabaseUtils.createSimpleKVtable(pickaxesDb, LEVEL_TABLE); + } catch (SQLException e) { + } + try { + DatabaseUtils.createSimpleKVtable(pickaxesDb, FARM_LEVEL_TABLE); + } catch (SQLException e) { + } + } + + public void setFarmLevel(Member member, long value) { + try { + DatabaseUtils.putInKVtable(pickaxesDb, FARM_LEVEL_TABLE, member.getId() + ":" + member.getGuild().getId(), value); + } catch (SQLException e) { + e.printStackTrace(); + } + } + public long getFarmLevel(String member, String guild) { + try { + return DatabaseUtils.getInKVtable(pickaxesDb, FARM_LEVEL_TABLE, member + ":" + guild); + } catch (SQLException e) { + e.printStackTrace(); + } + return 0l; + } + + public long getFarmLevel(Member member) { + return getFarmLevel(member.getId(), member.getGuild().getId()); } public void setLevel(Member member, long value) { @@ -42,15 +83,52 @@ class Pickaxes { } } + public long getLevel(String member, String guild) { + try { + return DatabaseUtils.getInKVtable(pickaxesDb, LEVEL_TABLE, member + ":" + guild); + } catch (SQLException e) { + e.printStackTrace(); + } + return 0l; + } + public long getLevel(Member member) { + return getLevel(member.getId(), member.getGuild().getId()); + } + public List getMembersGuilds() { + try { + return DatabaseUtils.listKeys(pickaxesDb, LEVEL_TABLE); + } catch (SQLException e) { + e.printStackTrace(); + } + return Collections.emptyList(); + } + + public List getMembers(Guild guild) { + return getMembersGuilds().stream().filter(m -> guild.getId().equals(m.split(":")[1])).map(m -> m.split(":")[0]).collect(Collectors.toList()); + } + + private void setEfficiency(Member member, long value) { try { - return DatabaseUtils.getInKVtable(pickaxesDb, LEVEL_TABLE, member.getId() + ":" + member.getGuild().getId()); + DatabaseUtils.putInKVtable(pickaxesDb, EFFICIENCY_TABLE, member.getId() + ":" + member.getGuild().getId(), value); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public long getEfficiency(String member, String guild) { + try { + return DatabaseUtils.getInKVtable(pickaxesDb, EFFICIENCY_TABLE, member + ":" + guild); } catch (SQLException e) { e.printStackTrace(); } return 0l; } + public long getEfficiency(Member member) { + return getEfficiency(member.getId(), member.getGuild().getId()); + } + private void setFortune(Member member, long value) { try { DatabaseUtils.putInKVtable(pickaxesDb, FORTUNE_TABLE, member.getId() + ":" + member.getGuild().getId(), value); @@ -59,15 +137,36 @@ class Pickaxes { } } - private long getFortune(Member member) { + public long getFortune(String member, String guild) { try { - return DatabaseUtils.getInKVtable(pickaxesDb, FORTUNE_TABLE, member.getId() + ":" + member.getGuild().getId()); + return DatabaseUtils.getInKVtable(pickaxesDb, FORTUNE_TABLE, member + ":" + guild); } catch (SQLException e) { e.printStackTrace(); } return 0l; } + public long getFortune(Member member) { + return getFortune(member.getId(), member.getGuild().getId()); + } + + public void setNether(Member member, boolean nether) { + try { + DatabaseUtils.putInKVtable(pickaxesDb, DIMENSION_TABLE, member.getId() + ":" + member.getGuild().getId(), nether ? 1: 0); + } catch (SQLException e) { + e.printStackTrace(); + } + } + + public boolean isNether(Member member) { + try { + return DatabaseUtils.getInKVtable(pickaxesDb, DIMENSION_TABLE, member.getId() + ":" + member.getGuild().getId()) == 1; + } catch (SQLException e) { + e.printStackTrace(); + } + return false; + } + public boolean isEnchanted(Member member) { long fortune = getFortune(member); return fortune > 0; @@ -85,7 +184,7 @@ class Pickaxes { return pickaxeLevelToName(level); } - private static String pickaxeLevelToName(long level) { + public static String pickaxeLevelToName(long level) { switch ((int) level) { case 0: return "Stone"; @@ -144,11 +243,20 @@ class Pickaxes { return (int) getFortune(member); } + public int getPickaxeEfficiency(Member member) { + return (int) getEfficiency(member); + } + public int incrementFortune(Member member) { setFortune(member, getFortune(member) + 1); return (int) getFortune(member); } + public int incrementEfficiency(Member member) { + setEfficiency(member, getEfficiency(member) + 1); + return (int) getEfficiency(member); + } + public static String getRomanNumber(int number) { return String.join("", Collections.nCopies(number, "I")) .replace("IIIII", "V") -- cgit v1.2.3