reupload codebase
Some checks are pending
Run Gradle Build / gradle (push) Waiting to run
Validate Gradle Wrapper / Validation (push) Waiting to run

This commit is contained in:
Stachelbeere1248 2025-04-14 21:30:10 +02:00
parent b8727c04a0
commit 4ab94cd179
Signed by: Stachelbeere1248
SSH key fingerprint: SHA256:IozEKdw2dB8TZxkpPdMxcWSoWTIMwoLaCcZJ1AJnY2o
11 changed files with 254 additions and 47 deletions

6
.gitignore vendored
View file

@ -3,4 +3,8 @@
run/
build/
.gradle/
.classpath
.project
.settings
.factorypath
bin/

View file

@ -65,8 +65,6 @@ sourceSets.main {
repositories {
mavenCentral()
maven("https://repo.spongepowered.org/maven/")
// If you don't want to log in with your real minecraft account, remove this line
maven("https://pkgs.dev.azure.com/djtheredstoner/DevAuth/_packaging/public/maven/v1")
}
val shadowImpl: Configuration by configurations.creating {
@ -83,10 +81,6 @@ dependencies {
isTransitive = false
}
annotationProcessor("org.spongepowered:mixin:0.8.5-SNAPSHOT")
// If you don't want to log in with your real minecraft account, remove this line
runtimeOnly("me.djtheredstoner:DevAuth-forge-legacy:1.2.1")
}
// Tasks:

View file

@ -3,4 +3,5 @@ org.gradle.jvmargs=-Xmx2g
baseGroup = xyz.stachel.bonzotimer
mcVersion = 1.8.9
modid = bonzo-timer
version = 1.0.0
version = 1.1.2
org.gradle.java.installations.paths=/home/stachel/down/zulu8.84.0.15-ca-jdk8.0.442-linux_x64

View file

@ -0,0 +1,38 @@
package xyz.stachel.bonzotimer;
import org.apache.logging.log4j.Logger;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
@Mod(modid = "bonzo-timer", useMetadata=true)
public class BonzoTimer {
private static BonzoTimer instance;
private Logger logger;
public BonzoTimer() {
instance = this;
}
public static BonzoTimer getInstance() {
return BonzoTimer.instance;
}
@Mod.EventHandler
public void preInit(FMLPreInitializationEvent event) {
this.logger = event.getModLog();
}
@Mod.EventHandler
public void init(FMLInitializationEvent event) {
MinecraftForge.EVENT_BUS.register(new ChatHandler());
MinecraftForge.EVENT_BUS.register(new RenderGameOverlayHandler());
}
public Logger getLogger() {
return this.logger;
}
}

View file

@ -0,0 +1,142 @@
package xyz.stachel.bonzotimer;
import net.minecraft.client.Minecraft;
import net.minecraft.event.ClickEvent;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.ChatStyle;
import net.minecraft.util.EnumChatFormatting;
import net.minecraftforge.client.event.ClientChatReceivedEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import org.jetbrains.annotations.NotNull;
import net.minecraftforge.fml.common.gameevent.TickEvent;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class ChatHandler {
private static final Pattern PARTY_PATTERN = Pattern.compile("Party > (?:(?:\\[VIP\\+?]|\\[MVP\\+?\\+?]) )?([a-zA-Z0-9_]{2,16}): (.*)");
private static final Pattern TRANSFER_PATTERN = Pattern.compile("The party was transferred to (?:\\[(?:VIP\\+?|MVP\\+{0,2}|YOUTUBE|MOD|ADMIN)\\] )?([a-zA-Z0-9_]{2,16}) by (?:\\[(?:VIP\\+?|MVP\\+{0,2}|YOUTUBE|MOD|ADMIN)\\] )?([a-zA-Z0-9_]{2,16})");
private static final Pattern PROMOTE_PATTERN = Pattern.compile("(?:\\[(?:VIP\\+?|MVP\\+{0,2}|YOUTUBE|MOD|ADMIN)\\])?([a-zA-Z0-9_]{2,16}) has promoted (?:\\[(?:VIP\\+?|MVP\\+{0,2}|YOUTUBE|MOD|ADMIN)\\] )?([a-zA-Z0-9_]{2,16}) to Party Leader");
private static final String[] COLOR_MAPPING = { "§6ORANGE", "§aGREEN", "§4RED" ,"§9BLUE", "§5PRPLX" };
private int transferCountdown = 10;
private boolean autotransferEnabled;
private int colorChangeCooldown = 0;
private int color = 0;
private String oldLeader = null;
@SubscribeEvent
public void onTick(TickEvent.@NotNull ClientTickEvent event) {
if (colorChangeCooldown > 0) {
colorChangeCooldown--;
} else {
color = 0;
}
if (transferCountdown > 1) {
transferCountdown--;
} else if (transferCountdown == 1) {
transferCountdown--;
Minecraft.getMinecraft().thePlayer.sendChatMessage("/p transfer " + this.oldLeader);
}
}
@SubscribeEvent
public void onChatReceived(@NotNull ClientChatReceivedEvent event) {
if (event.type == 2) return;
final String message = event.message.getUnformattedText().trim().replaceAll("§[0-9a-f]", "");
if (autotransferEnabled) {
final Matcher transfer = TRANSFER_PATTERN.matcher(message);
final Matcher promote = PROMOTE_PATTERN.matcher(message);
String newLeader = "";
if (transfer.matches()) {
this.oldLeader = transfer.group(2);
newLeader = transfer.group(1);
} else if (promote.matches()) {
this.oldLeader = promote.group(1);
newLeader = promote.group(2);
}
if (!newLeader.equals("") && newLeader.equals(Minecraft.getMinecraft().thePlayer.getName())) {
this.transferCountdown = 10;
}
}
final Matcher partyChat = PARTY_PATTERN.matcher(message);
if (partyChat.matches()) {
final String partyMessage = partyChat.group(2);
final String user = partyChat.group(1);
switch (partyMessage) {
case "!warp":
Minecraft.getMinecraft().thePlayer.sendChatMessage("/p warp");
break;
case "!help":
Minecraft.getMinecraft().thePlayer.sendChatMessage("Commands: !warp, !m7, !f7, !ptme");
break;
case "!m7":
Minecraft.getMinecraft().thePlayer.sendChatMessage("/joindungeon master_catacombs_floor_seven");
break;
case "!f7":
Minecraft.getMinecraft().thePlayer.sendChatMessage("/joindungeon catacombs_floor_seven");
break;
case "!ptme":
event.message.appendSibling(
new ChatComponentText(" [ACCEPT]")
.setChatStyle(new ChatStyle()
.setChatClickEvent(new ClickEvent(ClickEvent.Action.RUN_COMMAND, "/p transfer " + user))
.setColor(EnumChatFormatting.RED).setBold(true))
);
break;
case "!autotransfer on":
autotransferEnabled = true;
break;
case "!autotranfer off":
autotransferEnabled = false;
break;
}
} else {
switch (message) {
case "Your Bonzo's Mask saved your life!":
case "Your ⚚ Bonzo's Mask saved your life!":
Timer.setInstance(new Timer((byte) 60));
Minecraft.getMinecraft().thePlayer.sendChatMessage("Bonzo's Mask popped (3s)");
break;
case "Second Wind Activated! Your Spirit Mask saved your life!":
case "Second Wind Activated! Your ⚚ Spirit Mask saved your life!":
Timer.setInstance(new Timer((byte) 60));
Minecraft.getMinecraft().thePlayer.sendChatMessage("Spirit Mask popped (3s)");
break;
case "Your Phoenix Pet saved you from certain death!":
Timer.setInstance(new Timer((byte) 60));
Minecraft.getMinecraft().thePlayer.sendChatMessage("Phoenix pet popped (3s)");
break;
case "The SOUL dragon is spawning!":
this.changeColor(5);
break;
case "The APEX dragon is spawning!":
this.changeColor(4);
break;
case "The ICE dragon is spawning!":
this.changeColor(3);
break;
case "The FLAME dragon is spawning!":
this.changeColor(2);
break;
case "The POWER dragon is spawning!":
this.changeColor(1);
break;
default:
BonzoTimer.getInstance().getLogger().debug(message);
break;
}
}
}
private void changeColor(final int color) {
if (this.color < color || this.colorChangeCooldown == 0) {
this.color = color;
this.colorChangeCooldown = 10;
final String title = ChatHandler.COLOR_MAPPING[color-1];
Minecraft.getMinecraft().ingameGUI.displayTitle(title, "", 0, 5, 1);
};
}
}

View file

@ -1,16 +0,0 @@
package xyz.stachel.bonzotimer;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.init.Blocks;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
@Mod(modid = "bonzo-timer", useMetadata=true)
public class ExampleMod {
@Mod.EventHandler
public void init(FMLInitializationEvent event) {
System.out.println("Dirt: " + Blocks.dirt.getUnlocalizedName());
// Below is a demonstration of an access-transformed class access.
System.out.println("Color State: " + new GlStateManager.Color());
}
}

View file

@ -0,0 +1,33 @@
package xyz.stachel.bonzotimer;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import org.jetbrains.annotations.NotNull;
import java.awt.*;
import java.util.Objects;
public class RenderGameOverlayHandler {
private final FontRenderer fontRenderer;
public RenderGameOverlayHandler() {
this.fontRenderer = Objects.requireNonNull(Minecraft.getMinecraft().fontRendererObj, "FontRenderer must not be null!");
}
@SubscribeEvent
public void onRenderGameOverlay(RenderGameOverlayEvent.Post event) {
if (event.type != RenderGameOverlayEvent.ElementType.TEXT) return;
Timer.getInstance().ifPresent(timer -> {
String s = String.format("%1.1f s", (float)timer.remaining() / 20);
final ScaledResolution res = new ScaledResolution(Minecraft.getMinecraft());
final int h = res.getScaledHeight();
final int w = res.getScaledWidth();
final int x = w/2 - fontRenderer.getStringWidth(s)/2;
final int y = h/4;
fontRenderer.drawStringWithShadow(s, x, y, 0xFF0000);
});
}
}

View file

@ -0,0 +1,29 @@
package xyz.stachel.bonzotimer;
import net.minecraft.client.Minecraft;
import java.util.Optional;
public class Timer {
private static Timer instance;
private final long started;
private final byte duration;
public Timer(byte ticks) {
this.duration = ticks;
this.started = Minecraft.getMinecraft().theWorld.getTotalWorldTime();
}
public byte remaining() {
byte remaining = (byte) ((started + duration) - Minecraft.getMinecraft().theWorld.getTotalWorldTime());
if (remaining <= 0) instance = null;
return remaining;
}
public static Optional<Timer> getInstance() {
return Optional.ofNullable(instance);
}
public static void setInstance(Timer instance) {
Timer.instance = instance;
}
}

View file

@ -1,16 +0,0 @@
package xyz.stachel.bonzotimer.mixin;
import net.minecraft.client.gui.GuiMainMenu;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
@Mixin(GuiMainMenu.class)
public class MixinGuiMainMenu {
@Inject(method = "initGui", at = @At("HEAD"))
public void onInitGui(CallbackInfo ci) {
System.out.println("Hello from Main Menu!");
}
}

View file

@ -1,2 +0,0 @@
public net.minecraft.client.renderer.GlStateManager$Color

View file

@ -1,18 +1,18 @@
[
{
"modid": "${modid}",
"name": "Xample Mod",
"description": "A mod that is used as an example.",
"name": "Bonzo Timer",
"description": "A minimal Hypixel SkyBlock mod.",
"version": "${version}",
"mcversion": "${mcversion}",
"url": "https://github.com/romangraef/Forge1.8.9Template/",
"url": "https://git.stachel.xyz/bonzo-timer/bonzo-timer_1.8.9",
"updateUrl": "",
"authorList": [
"You"
"Stachelbeere1248"
],
"credits": "",
"logoFile": "",
"screenshots": [],
"dependencies": []
}
]
]