summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authordavidovski <david@davidovski.xyz>2025-11-04 17:35:30 +0000
committerdavidovski <david@davidovski.xyz>2025-11-04 17:35:30 +0000
commit2e47a68b69fac942e4efd7b90f248e15f02f6a82 (patch)
tree1753ffc8604689a97f02409efc17f297596bbc4f
parent5a008748459e230de0e875afff59e3b92c7aca0c (diff)
update v0.6 pre
-rw-r--r--pom.xml2
-rw-r--r--src/main/java/net/uomc/mineshaft/EatCommand.java7
-rw-r--r--src/main/java/net/uomc/mineshaft/FurnaceCommand.java5
-rw-r--r--src/main/java/net/uomc/mineshaft/PlayerStats.java11
-rw-r--r--src/main/java/net/uomc/mineshaft/RobCommand.java26
-rw-r--r--src/main/java/net/uomc/mineshaft/blacksmith/Blacksmith.java72
-rw-r--r--src/main/java/net/uomc/mineshaft/blacksmith/BlacksmithCommand.java106
-rw-r--r--src/main/java/net/uomc/mineshaft/crafting/Crafting.java28
-rw-r--r--src/main/java/net/uomc/mineshaft/farm/CompostCommand.java5
9 files changed, 226 insertions, 36 deletions
diff --git a/pom.xml b/pom.xml
index 7a67a91..093bc7c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>net.uomc.mineshaft</groupId>
<artifactId>Mineshaft</artifactId>
- <version>0.5.2</version>
+ <version>0.6.0</version>
<packaging>jar</packaging>
<properties>
<maven.compiler.source>11</maven.compiler.source>
diff --git a/src/main/java/net/uomc/mineshaft/EatCommand.java b/src/main/java/net/uomc/mineshaft/EatCommand.java
index 85a64e7..626207e 100644
--- a/src/main/java/net/uomc/mineshaft/EatCommand.java
+++ b/src/main/java/net/uomc/mineshaft/EatCommand.java
@@ -65,6 +65,7 @@ public class EatCommand extends CooldownCommand {
String edible = getEdibleItems(e.getMember());
+
if (edible.length() < 0) {
bot.sendErrorMessage(e, ":x: You have no edible items!");
return false;
@@ -92,6 +93,12 @@ public class EatCommand extends CooldownCommand {
public boolean eat(MessageReceivedEvent event, MineshaftItem item) {
Member member = event.getMember();
+
+ if (bot.getPlayerStats().isInBattle(member)) {
+ bot.sendErrorMessage(event, ":x: You can't eat until pvp is over!");
+ return false;
+ }
+
if (!bot.hasItem(member, item)) {
bot.sendErrorMessage(event, "You don't have any " + bot.getItem(item).getSymbol() + " to eat!");
return false;
diff --git a/src/main/java/net/uomc/mineshaft/FurnaceCommand.java b/src/main/java/net/uomc/mineshaft/FurnaceCommand.java
index 9212ac6..d3e1927 100644
--- a/src/main/java/net/uomc/mineshaft/FurnaceCommand.java
+++ b/src/main/java/net/uomc/mineshaft/FurnaceCommand.java
@@ -60,6 +60,7 @@ public class FurnaceCommand extends CooldownCommand {
String description = "You came back to your **" + bot.getItem(MineshaftItem.FURNACE).prettyValue(furnaces) + "** and collected the ingots:\n";
+
String awardsList = bot.createItemList(award, "+%s");
description += awardsList;
@@ -69,6 +70,10 @@ public class FurnaceCommand extends CooldownCommand {
em.setThumbnail(COMMAND_IMAGE);
em.setColor(PeelingUtils.hex2Rgb("#5c5a5a"));
+ if (furnaces == 1) {
+ em.setFooter(EmojiParser.parseToUnicode(":bulb:") + "Craft more furnaces to get more rewards");
+ }
+
e.getMessage().addReaction(Emoji.fromUnicode(EmojiParser.parseToUnicode(":fire:")));
bot.addItems(e.getMember(), award);
e.getMessage().replyEmbeds(em.build()).queue();
diff --git a/src/main/java/net/uomc/mineshaft/PlayerStats.java b/src/main/java/net/uomc/mineshaft/PlayerStats.java
index 40ef349..e1359e2 100644
--- a/src/main/java/net/uomc/mineshaft/PlayerStats.java
+++ b/src/main/java/net/uomc/mineshaft/PlayerStats.java
@@ -12,6 +12,8 @@ public class PlayerStats {
public static final String DIMENSION_TABLE = "dimension";
public static final String FARM_LEVEL_TABLE = "farms";
+ private static final String BATTLE_TABLE = "fighting";
+
private String playersDb;
private Map<String, SavedStat> stats;
@@ -73,6 +75,15 @@ public class PlayerStats {
public boolean isNether(Member member) {
return getStat(DIMENSION_TABLE).get(member) == 1;
}
+
+ public void setInBattle(Member member, boolean battle) {
+ getStat(BATTLE_TABLE).set(member, battle ? 1 : 0);
+ }
+
+ public boolean isInBattle(Member member) {
+ return getStat(BATTLE_TABLE).get(member) == 1;
+ }
+
public String getDbPath() {
return playersDb;
diff --git a/src/main/java/net/uomc/mineshaft/RobCommand.java b/src/main/java/net/uomc/mineshaft/RobCommand.java
index bfc0c51..d87f097 100644
--- a/src/main/java/net/uomc/mineshaft/RobCommand.java
+++ b/src/main/java/net/uomc/mineshaft/RobCommand.java
@@ -17,6 +17,7 @@ import net.dv8tion.jda.api.entities.emoji.Emoji;
import net.dv8tion.jda.api.entities.emoji.UnicodeEmoji;
import net.dv8tion.jda.api.events.message.MessageReceivedEvent;
import net.dv8tion.jda.api.events.message.react.MessageReactionAddEvent;
+import net.uomc.mineshaft.blacksmith.Sword;
public class RobCommand extends CooldownCommand {
@@ -59,11 +60,21 @@ public class RobCommand extends CooldownCommand {
}
if (!canFight(e.getMember())) {
- e.getMessage().reply(":x: You tried to kill " + target.getAsMention()
- + " you don't have a sword to fight with!\nUse `m!blacksmith` to forge one").queue();
+ e.getMessage().reply(":x: You need at least "+ Sword.swordToEmoji(1) + "to fight.\nšŸ’” Use `m!blacksmith` to forge one").queue();
return false;
}
+ if (bot.getPlayerStats().isInBattle(e.getMember())) {
+ e.getMessage().reply(":x: You are already fighting someone else!").queue();
+ return false;
+ }
+
+ if (bot.getPlayerStats().isInBattle(target)) {
+ e.getMessage().reply(":x: " + target.getAsMention() + " is already fighting someone else!").queue();
+ return false;
+ }
+
+
if (bot.getPlayerStats().isNether(target) != bot.getPlayerStats().isNether(e.getMember())) {
e.getMessage().reply(
":x: You tried to kill " + target.getAsMention() + " but they were in a different dimension!")
@@ -73,6 +84,9 @@ public class RobCommand extends CooldownCommand {
e.getMessage().addReaction(Emoji.fromUnicode(pvpEmoji)).queue();
+ bot.getPlayerStats().setInBattle(target, true);
+ bot.getPlayerStats().setInBattle(e.getMember(), true);
+
EmbedBuilder eb = new EmbedBuilder();
eb.setTitle("pvp");
String startString = e.getAuthor().getAsMention() + " is fighting " + target.getAsMention() + "...\n\n";
@@ -117,6 +131,7 @@ public class RobCommand extends CooldownCommand {
+ " Managed to escape!\n");
message.editMessageEmbeds(eb.build()).queueAfter(1, TimeUnit.SECONDS, m -> {
m.editMessageEmbeds(eb.build()).queue();
+ endFight(target, e.getMember());
});
return;
@@ -175,6 +190,7 @@ public class RobCommand extends CooldownCommand {
long hp = bot.getHealths().damage(message, target, damage, deathMessage);
if (hp <= 0) {
+ endFight(target, attacker);
return;
}
@@ -186,10 +202,16 @@ public class RobCommand extends CooldownCommand {
} else {
eb.appendDescription("\n" + target.getAsMention() + " is now on " + bot.getHealths().getHPString(target));
message.editMessageEmbeds(eb.build()).queue();
+ endFight(target, attacker);
}
return;
}
+ private void endFight(Member target, Member attacker) {
+ bot.getPlayerStats().setInBattle(target, false);
+ bot.getPlayerStats().setInBattle(attacker, false);
+ }
+
public boolean canFight(Member member) {
return bot.getSword(member).getLevel() != 0;
}
diff --git a/src/main/java/net/uomc/mineshaft/blacksmith/Blacksmith.java b/src/main/java/net/uomc/mineshaft/blacksmith/Blacksmith.java
index be3ad3c..98baf7f 100644
--- a/src/main/java/net/uomc/mineshaft/blacksmith/Blacksmith.java
+++ b/src/main/java/net/uomc/mineshaft/blacksmith/Blacksmith.java
@@ -16,8 +16,10 @@ import net.uomc.mineshaft.farm.Farm;
class Blacksmith extends Farm {
- public static long UPDATES_PER_LEVEL = 10;
- public static long MS_PER_UPDATE = 1000l * 60l * 10l;
+ public static long UPDATES_PER_LEVEL = 240;
+ // TODO fix this
+ public static long MS_PER_UPDATE = 1000l * 60l;
+ //public static long MS_PER_UPDATE = 1000l * 10l;
private SavedStat questionsStat;
public Blacksmith(Mineshaft bot) {
@@ -25,10 +27,36 @@ class Blacksmith extends Farm {
questionsStat = getBot().getPlayerStats().getStat("blacksmith_questions");
}
- public boolean upgradeArmour(Member member) {
+ public int collect(Member member) {
+ if (!isReady(member))
+ return 0;
+
+ if (isSword(member)) return collectSword(member);
+ return collectArmour(member);
+ }
+
+ public int collectSword(Member member) {
+ int levelRaw = (int) getPlanted(member);
+ getBot().getSword(member).setLevel(getWorkingLevel(member));
+
+ setPlanted(member, 0);
+ setQuantity(member, 0);
+ return levelRaw;
+ }
+
+ public int collectArmour(Member member) {
+ int levelRaw = (int) getPlanted(member);
+ getBot().getArmour(member).setLevel(getWorkingLevel(member));
+
+ setPlanted(member, 0);
+ setQuantity(member, 0);
+ return levelRaw;
+ }
+
+ public int upgradeArmour(Member member) {
int armourLevel = getBot().getArmour(member).getLevel();
if (armourLevel >= Armour.MAX_ARMOUR_LEVEL) {
- return false;
+ return 0;
}
armourLevel += 1;
@@ -37,22 +65,24 @@ class Blacksmith extends Farm {
getBot().getArmour(member).setLevel(0);
setQuantity(member, armourLevel * UPDATES_PER_LEVEL);
- return true;
+ setNextUpdate(member, System.currentTimeMillis() + MS_PER_UPDATE);
+ return armourLevel;
}
- public boolean upgradeSword(Member member) {
+ public int upgradeSword(Member member) {
int swordLevel = getBot().getSword(member).getLevel();
if (swordLevel >= Sword.MAX_SWORD_LEVEL) {
- return false;
+ return 0;
}
swordLevel += 1;
- setPlanted(member, -swordLevel);
+ setPlanted(member, swordLevel);
getBot().getSword(member).setLevel(0);
setQuantity(member, swordLevel * UPDATES_PER_LEVEL);
- return true;
+ setNextUpdate(member, System.currentTimeMillis() + MS_PER_UPDATE);
+ return swordLevel;
}
@@ -117,7 +147,9 @@ class Blacksmith extends Farm {
}
BinomialDistribution bd = new BinomialDistribution((int) updates, getProgressChance(member));
- setQuantity(member, getQuantity(member) - bd.sample());
+ int change = bd.sample();
+ setQuantity(member, getQuantity(member) - change);
+ System.out.println("Doing update on " + member.getEffectiveName() + ", updates = " + updates + ", changed by -" + change);
setNextUpdate(member, getNextUpdate(member) + MS_PER_UPDATE*updates);
}
@@ -144,11 +176,11 @@ class Blacksmith extends Farm {
long max = getWorkingLevel(member) * UPDATES_PER_LEVEL;
long current = getQuantity(member);
- return (max - Math.min(current, 0)) / max;
+ return (double) (max - Math.max(current, 0)) / (double) max;
}
public long getTimeEstimate(Member member, long updates) {
- return (long) (MS_PER_UPDATE * (1 - getProgressChance(member)) * updates);
+ return (long) (MS_PER_UPDATE * (1 / getProgressChance(member)) * updates);
}
public long getTimeEstimateRemaining(Member member) {
@@ -207,7 +239,7 @@ class Blacksmith extends Farm {
if (!isWorking(member))
return false;
- return getQuantity(member) < 0;
+ return getQuantity(member) <= 0;
}
public void incrementQuestions(Member member) {
@@ -228,12 +260,12 @@ class Blacksmith extends Farm {
long forges = getValidForgeCount(member);
if (forges > 1)
- b.append("We are busy working on your ");
+ b.append("We are busy working on your **");
else
- b.append("I am busy working on your ");
+ b.append("I am busy working on your **");
b.append(getWorkingName(member));
- b.append(".\n");
+ b.append("**.\n");
if (questions < 1)
return b.toString();
@@ -255,7 +287,7 @@ class Blacksmith extends Farm {
if (questions >= 5) {
double progress = getProgress(member);
- b.append("I am about " + + Math.round(100*progress) + "** of the way to finishing.\n");
+ b.append("I am about **" + + Math.round(100*progress) + "%** of the way to finishing.\n");
}
if (questions == 6)
@@ -309,12 +341,14 @@ class Blacksmith extends Farm {
if (questions == 100)
b.append("This is the 100th time you've asked... I'm sure you are proud of yourself");
- if (questions >= 500)
+ if (questions >= 500 && questions <= 510)
return "You have asked me too many times. No more updates sorry.";
+ if (questions == 511)
+ return "Ok fine. Come back later and I will tell you";
+
return b.toString();
}
-
}
diff --git a/src/main/java/net/uomc/mineshaft/blacksmith/BlacksmithCommand.java b/src/main/java/net/uomc/mineshaft/blacksmith/BlacksmithCommand.java
index db57d55..68f7497 100644
--- a/src/main/java/net/uomc/mineshaft/blacksmith/BlacksmithCommand.java
+++ b/src/main/java/net/uomc/mineshaft/blacksmith/BlacksmithCommand.java
@@ -3,6 +3,7 @@ package net.uomc.mineshaft.blacksmith;
import java.awt.Color;
import java.util.Arrays;
+import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.stream.Stream;
@@ -12,6 +13,7 @@ import com.mouldycheerio.dbot.commands.CommandDetails;
import com.mouldycheerio.dbot.commands.CommandFail;
import com.mouldycheerio.dbot.commands.DetailedCommand;
import com.mouldycheerio.dbot.util.PeelingUtils;
+import com.vdurmont.emoji.EmojiParser;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.Member;
@@ -61,16 +63,24 @@ public class BlacksmithCommand extends DetailedCommand {
long forges = bot.getItem(m, MineshaftItem.FORGE);
- EmbedBuilder em = new EmbedBuilder();
- em.setTitle(COMMAND_TITLE);
- em.setThumbnail(COMMAND_IMAGE);
- em.setColor(COMMAND_COLOUR);
+ EmbedBuilder em = createEmbedTemplate();
blacksmith.update(m);
if (blacksmith.isWorking(m)) {
- if (blacksmith.isReady(m)) {
- // do get new sword
+ int collect = blacksmith.collect(m);
+ if (collect != 0) {
+ String itemName = collect > 0 ? "Sword" : "Armour";
+ String levelName = collect > 0 ? bot.getSword(m).getName() : bot.getArmour(m).getName();
+ String fullName = levelName + " " + itemName;
+ em.setDescription("I have finished your **" + fullName + "**, use it well!");
+ if (collect > 0 && bot.getSword(m).getLevel() == 1) {
+ em.setFooter("You equipped " + fullName);
+ } else {
+ em.setFooter(EmojiParser.parseToUnicode(":bulb:") + "You can now fight players with m!pvp");
+ }
+
+ e.getMessage().replyEmbeds(em.build()).queue();
return;
}
@@ -80,30 +90,32 @@ public class BlacksmithCommand extends DetailedCommand {
return;
}
- if (args.length > 1 && "upgrade".equalsIgnoreCase(args[0])) {
+ if (args.length > 0 && "upgrade".equalsIgnoreCase(args[0])) {
if (forges < 1) {
em.setDescription(String.format("Sorry, I can't work without a forge %s!", bot.getItem(MineshaftItem.FORGE).getSymbol()));
+ e.getMessage().replyEmbeds(em.build()).queue();
return;
}
if (!upgrade(e, argList))
bot.sendErrorMessage(e, String.format(":x: Usage `%supgrade [sword|armour]`", bot.getPrefixManager().getPrefix(e.getGuild())));
+
return;
}
- em.appendDescription(String.format("Hello, I am your blacksmith. I can upgrade your tools and armour for you `%supgrade [sword|armour]`\n\n",
+ em.appendDescription(String.format("Hello, I am your blacksmith. I can upgrade your tools and armour for you `%supgrade [sword|armour]` \n\n",
bot.getPrefixManager().getPrefix(e.getGuild())
));
- String swordName = "You have a **" + bot.getSword(m).getName() + " Sword**";
+ String swordName = "You have a **" + bot.getSword(m).getName() + "** Sword";
Map<MineshaftItem, Long> swordUpgradeCost = blacksmith.getSwordUpgradeCost(m);
if (bot.getSword(m).getLevel() == 0) {
swordName = "**You have no sword**";
}
- String armourName = "You have a **" + bot.getArmour(m).getName() + " Armour**";
+ String armourName = "You have **" + bot.getArmour(m).getName() + "** Armour";
Map<MineshaftItem, Long> armourUpgradeCost = blacksmith.getArmourUpgradeCost(m);
if (bot.getArmour(m).getLevel() == 0) {
@@ -118,7 +130,7 @@ public class BlacksmithCommand extends DetailedCommand {
em.appendDescription("\n");
- em.appendDescription(String.format("**%s**\n", armourName));
+ em.appendDescription(String.format("%s\n", armourName));
if (blacksmith.canUpgradeArmour(m))
em.appendDescription(String.format("Upgrade to **%s** for **%s**\n",
blacksmith.getNextArmourName(m),
@@ -131,7 +143,7 @@ public class BlacksmithCommand extends DetailedCommand {
String total = bot.prettyValue(MineshaftItem.BLACKSMITH, blacksmiths);
if (forgeCount < blacksmiths) {
em.appendDescription("**" + forgeCount + "/" + total + "** are able to work.\n");
- em.appendDescription("Get more " + bot.getItem(MineshaftItem.FORGE).getSymbol() + " so they can work!");
+ em.appendDescription("Get more " + bot.getItem(MineshaftItem.FORGE).getSymbol() + " so they can work faster!");
} else {
em.appendDescription("Your **" + total + "** are all able to work!");
}
@@ -145,7 +157,75 @@ public class BlacksmithCommand extends DetailedCommand {
}
+ private EmbedBuilder createEmbedTemplate() {
+ EmbedBuilder em = new EmbedBuilder();
+ em.setTitle(COMMAND_TITLE);
+ em.setThumbnail(COMMAND_IMAGE);
+ em.setColor(COMMAND_COLOUR);
+ return em;
+ }
+
private boolean upgrade(MessageReceivedEvent e, List<String> argList) {
- throw new UnsupportedOperationException("Unimplemented method 'upgrade'");
+ if (argList.size() < 2) {
+ return false;
+ }
+
+ if (!argList.stream().anyMatch(x -> x.equalsIgnoreCase("armor") ||x.equalsIgnoreCase("armour") || x.equalsIgnoreCase("sword"))) {
+ return false;
+ }
+
+ EmbedBuilder em = createEmbedTemplate();
+
+ boolean isSword = argList.get(1).equalsIgnoreCase("sword");
+ String itemName = (isSword ? "sword" : "armour");
+ Map<MineshaftItem, Long> cost = isSword ? getSwordCost(e) : getArmourCost(e);
+
+ if (cost.size() == 0) {
+ em.setDescription(":x: Sorry but I can't upgrade your **" + itemName + "** any more!");
+ e.getMessage().replyEmbeds(em.build()).queue();;
+ return true;
+ }
+
+ if (!bot.hasItems(e.getMember(), cost)) {
+ em.setDescription("I need more materials to do this! \nYou are missing: **");
+
+ Map<MineshaftItem, Long> missing = bot.getMissingIngredients(e.getMember(), cost);
+ em.appendDescription(bot.createItemList(missing, "%s", ", "));
+ em.appendDescription("**");
+ e.getMessage().replyEmbeds(em.build()).queue();
+ return true;
+ }
+
+ bot.removeItems(e.getMember(), cost);
+
+ if (isSword) {
+ blacksmith.upgradeSword(e.getMember());
+ } else {
+ blacksmith.upgradeArmour(e.getMember());
+ }
+
+ em.setDescription("I am now going to be upgrading your **" + blacksmith.getWorkingName(e.getMember()) + "**! Come back later and I will let you know if its finished");
+ em.setFooter("You unequipped your " + itemName);
+ e.getMessage().replyEmbeds(em.build()).queue();;
+
+ return true;
}
+
+
+ private Map<MineshaftItem, Long> getArmourCost(MessageReceivedEvent e) {
+
+ if (!blacksmith.canUpgradeArmour(e.getMember())) {
+ return Collections.emptyMap();
+ }
+
+ return blacksmith.getArmourUpgradeCost(e.getMember());
+ }
+
+ private Map<MineshaftItem, Long> getSwordCost(MessageReceivedEvent e) {
+ if (!blacksmith.canUpgradeSword(e.getMember())) {
+ return Collections.emptyMap();
+ }
+
+ return blacksmith.getSwordUpgradeCost(e.getMember());
+ }
}
diff --git a/src/main/java/net/uomc/mineshaft/crafting/Crafting.java b/src/main/java/net/uomc/mineshaft/crafting/Crafting.java
index 9b257a2..67e95e2 100644
--- a/src/main/java/net/uomc/mineshaft/crafting/Crafting.java
+++ b/src/main/java/net/uomc/mineshaft/crafting/Crafting.java
@@ -73,6 +73,7 @@ public class Crafting extends DetailedCommand {
CraftingRecipe.make(MineshaftItem.BED)
.addIngredient(MineshaftItem.WOOL, 3l)
.setUnlockCondition((m) -> bot.getItem(m, MineshaftItem.STRING) > 0)
+ .setBuyMessage("Use `" + bot.getCommandController().getPrefix() + "sleep` to reduce your cooldowns!")
);
addRecipe(
@@ -105,6 +106,26 @@ public class Crafting extends DetailedCommand {
.addIngredient(MineshaftItem.PAPER, 27l)
.setUnlockCondition((m) -> bot.getItem(m, MineshaftItem.PAPER) > 0)
);
+
+ addRecipe(
+ CraftingRecipe.make(MineshaftItem.FORGE)
+ .addIngredient(MineshaftItem.IRON, 400l)
+ .setUnlockCondition((m) -> bot.getItem(m, MineshaftItem.BLACKSMITH) > 0)
+ );
+
+ addRecipe(
+ CraftingRecipe.make(MineshaftItem.BLACKSMITH)
+ .addIngredient(MineshaftItem.VILLAGER, 1l)
+ .addIngredient(MineshaftItem.COAL, 1600l)
+ .setUnlockCondition((m) -> bot.getItem(m, MineshaftItem.VILLAGER) > 0)
+ );
+
+ addRecipe(
+ CraftingRecipe.make(MineshaftItem.CAMPFIRE)
+ .addIngredient(MineshaftItem.COAL, 400l)
+ .setUnlockCondition((m) -> bot.getItem(m, MineshaftItem.FISH) > 0
+ || bot.getItem(m, MineshaftItem.POTATO) > 0)
+ );
}
@@ -182,11 +203,16 @@ public class Crafting extends DetailedCommand {
return;
}
+ String hintMessage = "šŸ’”" + recipe.getBuyMessage();
+ if (bot.hasItem(e.getMember(), recipe.getItem())) {
+ hintMessage = "";
+ }
+
bot.removeItems(e.getMember(), bot.multiply(recipe.getIngredients(), amount));
bot.addItem(e.getMember(), recipe.getItem(), recipe.getQuantity() * amount);
bot.sendSuccessMessage(e,
"You crafted " + bot.getItem(recipe.getItem()).prettyValue(recipe.getQuantity() * amount)
- + "!\n" + recipe.getBuyMessage()
+ + "!\n" + hintMessage
);
}
diff --git a/src/main/java/net/uomc/mineshaft/farm/CompostCommand.java b/src/main/java/net/uomc/mineshaft/farm/CompostCommand.java
index ce5deea..79e41ee 100644
--- a/src/main/java/net/uomc/mineshaft/farm/CompostCommand.java
+++ b/src/main/java/net/uomc/mineshaft/farm/CompostCommand.java
@@ -10,6 +10,7 @@ import java.util.concurrent.atomic.AtomicLong;
import com.mouldycheerio.dbot.commands.CommandDetails;
import com.mouldycheerio.dbot.commands.cooldowns.CooldownCommand;
import com.mouldycheerio.dbot.util.PeelingUtils;
+import com.vdurmont.emoji.EmojiParser;
import net.dv8tion.jda.api.EmbedBuilder;
import net.dv8tion.jda.api.entities.Member;
@@ -86,6 +87,10 @@ public class CompostCommand extends CooldownCommand {
em.setColor(COMMAND_COLOUR);
em.setThumbnail(COMMAND_IMAGE);
+ if (composters == 0) {
+ em.setFooter(EmojiParser.parseToUnicode(":bulb:") + "Craft more composters to compost more at a time! ");
+ }
+
e.getMessage().replyEmbeds(em.build()).queue();
return false;
}