Skip to content

Commit

Permalink
add base stuff :3
Browse files Browse the repository at this point in the history
  • Loading branch information
Morazzer committed Dec 7, 2024
1 parent 0a7d383 commit a1b685e
Show file tree
Hide file tree
Showing 7 changed files with 180 additions and 9 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package codes.cookies.mod.commands.dev;

import codes.cookies.mod.commands.dev.debug.FiestaDebugCommand;
import codes.cookies.mod.commands.dev.debug.HudEditScreenDebugCommand;
import codes.cookies.mod.commands.dev.debug.PrintCorpseLocationsDebugCommand;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;
Expand Down Expand Up @@ -49,7 +50,8 @@ public class DebugSubCommand extends ClientCommand {
new GetRepoItemDebugCommand(),
new PrintModStuffDebugCommand(),
new HudEditScreenDebugCommand(),
new PrintCorpseLocationsDebugCommand()
new PrintCorpseLocationsDebugCommand(),
new FiestaDebugCommand()
};

for (ClientCommand clientCommand : clientCommands) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
package codes.cookies.mod.commands.dev.debug;

import codes.cookies.mod.commands.system.ClientCommand;
import codes.cookies.mod.features.mining.fiesta.MiningFiesta;
import com.mojang.brigadier.builder.LiteralArgumentBuilder;

import net.fabricmc.fabric.api.client.command.v2.FabricClientCommandSource;

import org.jetbrains.annotations.NotNull;

public class FiestaDebugCommand extends ClientCommand {

@Override
public @NotNull LiteralArgumentBuilder<FabricClientCommandSource> getCommand() {
return literal("fiesta")
.then(literal("start").executes(run(MiningFiesta::start)))
.then(literal("stop").executes(run(MiningFiesta::stop)));
}
}
12 changes: 12 additions & 0 deletions src/main/java/codes/cookies/mod/events/MiningFiestaEvents.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
package codes.cookies.mod.events;

import codes.cookies.mod.utils.cookies.CookiesEventUtils;

import net.fabricmc.fabric.api.event.Event;

public interface MiningFiestaEvents {

Event<Runnable> START = CookiesEventUtils.runnable();
Event<Runnable> STOP = CookiesEventUtils.runnable();

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@

import codes.cookies.mod.features.Loader;
import codes.cookies.mod.features.mining.commissions.CommissionCompletionHighlighter;
import codes.cookies.mod.features.mining.fiesta.MiningFiesta;
import codes.cookies.mod.features.mining.fiesta.MiningFiestaTracker;
import codes.cookies.mod.features.mining.hollows.CrystalRunHud;
import codes.cookies.mod.features.mining.hollows.MinesOfDivanHelper;
import codes.cookies.mod.features.mining.shafts.CorpseWaypoints;
Expand Down Expand Up @@ -29,6 +31,8 @@ static void load() {
Loader.load("MineshaftCorpseMessages", MineshaftAnnouncements::register);
Loader.load("CrystalRunHud", CrystalRunHud::new);
Loader.load("GlossyGemstoneMessage", GlossyGemstoneMessage::register);
Loader.load("MiningFiesta", MiningFiesta::register);
Loader.load("MiningFiestaTracker", MiningFiestaTracker::register);
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package codes.cookies.mod.features.mining.fiesta;

import codes.cookies.mod.events.ChatMessageEvents;
import codes.cookies.mod.events.MiningFiestaEvents;
import lombok.Getter;

public class MiningFiesta {

private static boolean active;
@Getter
private static long timeStarted;
private static final long FIESTA_TIME =( 60 * 60 * 1000 * 2) + (20 * 60 * 1000);

public static void register() {
active = false;
timeStarted = -1;
ChatMessageEvents.EVENT.register(MiningFiesta::handleMessage);
}

private static void handleMessage(String content) {
if ("MINING FIESTA is now underway! Equip your pickaxe and head to the mines!".equalsIgnoreCase(content.trim())) {
start();
} else if ("MINING FIESTA has concluded! Put your pickaxe down and haul your ores home!".equalsIgnoreCase(content.trim())) {
stop();
}
}

public static boolean isActive() {
if (timeStarted + FIESTA_TIME < System.currentTimeMillis()) {
active = false;
}

return active;
}

public static void startIfNotActive() {
if (isActive()) {
return;
}

start();
}

public static void start() {
timeStarted = System.currentTimeMillis();
active = true;
MiningFiestaEvents.START.invoker().run();
}

public static void stop() {
active = false;
MiningFiestaEvents.STOP.invoker().run();
timeStarted = -1;
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,72 @@
package codes.cookies.mod.features.mining.fiesta;

import java.util.ArrayList;
import java.util.List;

import codes.cookies.mod.events.ChatMessageEvents;
import codes.cookies.mod.events.MiningFiestaEvents;
import codes.cookies.mod.utils.cookies.Constants;
import codes.cookies.mod.utils.cookies.CookiesUtils;

import net.minecraft.text.Text;

public class MiningFiestaTracker {

private static final List<Integer> pristineDrops = new ArrayList<>();
private static int glossyGemstone;

public static void register() {
ChatMessageEvents.register(MiningFiestaTracker::trackPristine, "cookies-regex:PRISTINE! You found .*? x\\d+!");
MiningFiestaEvents.START.register(MiningFiestaTracker::reset);
MiningFiestaEvents.STOP.register(MiningFiestaTracker::finishFiesta);
}

private static void reset() {
pristineDrops.clear();
glossyGemstone = 0;
}

private static void finishFiesta() {
CookiesUtils.sendMessage(Text.literal("§m §r{ Cookies Mod }§m §r")
.withColor(Constants.MAIN_COLOR));
CookiesUtils.sendRawMessage("");
CookiesUtils.sendRawMessage("Total Pristine Drops: " + pristineDrops.size());
CookiesUtils.sendRawMessage("Flawed Through Pristine: " + pristineDrops.stream()
.mapToInt(Integer::intValue)
.sum());
CookiesUtils.sendRawMessage("Glossy Gemstones Obtained: " + glossyGemstone);
CookiesUtils.sendRawMessage("Active for: " + CookiesUtils.formattedMs((System.currentTimeMillis() - MiningFiesta.getTimeStarted())));
CookiesUtils.sendRawMessage("");
CookiesUtils.sendMessage(Text.literal("§m §r").withColor(Constants.MAIN_COLOR));
}

private static void trackPristine(String message) {
if (!MiningFiesta.isActive()) {
return;
}

final String literalAmount = message.replaceAll("\\D", "");
if (literalAmount.isEmpty()) {
return;
}

final int amount;
try {
amount = Integer.parseInt(literalAmount);
} catch (NumberFormatException e) {
return;
}

pristineDrops.add(amount);
}

public static void trackGlossyGemstone(int amount) {
MiningFiesta.startIfNotActive();
if (!MiningFiesta.isActive()) {
return;
}

glossyGemstone += amount;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import codes.cookies.mod.config.categories.mining.MiningConfig;
import codes.cookies.mod.events.SackContentsChangeCallback;
import codes.cookies.mod.features.mining.fiesta.MiningFiestaTracker;
import codes.cookies.mod.repository.RepositoryItem;
import codes.cookies.mod.utils.cookies.CookiesUtils;

Expand All @@ -11,23 +12,28 @@ public static void register() {
SackContentsChangeCallback.DELTA_CALLBACK.register(GlossyGemstoneMessage::update);
}

public static void update(RepositoryItem repositoryItem, Integer integer) {
if (!MiningConfig.getInstance().glossyGemstoneMessages.getValue()) {
public static void update(RepositoryItem repositoryItem, Integer amount) {

if (!repositoryItem.getInternalId().equals("GLOSSY_GEMSTONE")) {
return;
}

if (!repositoryItem.getInternalId().equals("GLOSSY_GEMSTONE")) {
if (amount == null) {
return;
}

if (integer == null) {
if (amount >= 0) {
MiningFiestaTracker.trackGlossyGemstone(amount);
}

if (!MiningConfig.getInstance().glossyGemstoneMessages.getValue()) {
return;
}

if (integer > 1) {
CookiesUtils.sendWhiteMessage("Found %s glossy gemstones!".formatted(integer));
} else if (integer == 1) {
CookiesUtils.sendWhiteMessage("Found %s glossy gemstone!".formatted(integer));
if (amount > 1) {
CookiesUtils.sendWhiteMessage("Found %s glossy gemstones!".formatted(amount));
} else if (amount == 1) {
CookiesUtils.sendWhiteMessage("Found %s glossy gemstone!".formatted(amount));
}
}

Expand Down

0 comments on commit a1b685e

Please sign in to comment.