reupload codebase
This commit is contained in:
parent
b8727c04a0
commit
4ab94cd179
11 changed files with 254 additions and 47 deletions
6
.gitignore
vendored
6
.gitignore
vendored
|
@ -3,4 +3,8 @@
|
|||
run/
|
||||
build/
|
||||
.gradle/
|
||||
|
||||
.classpath
|
||||
.project
|
||||
.settings
|
||||
.factorypath
|
||||
bin/
|
||||
|
|
|
@ -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:
|
||||
|
|
|
@ -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
|
||||
|
|
38
src/main/java/xyz/stachel/bonzotimer/BonzoTimer.java
Normal file
38
src/main/java/xyz/stachel/bonzotimer/BonzoTimer.java
Normal 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;
|
||||
}
|
||||
}
|
142
src/main/java/xyz/stachel/bonzotimer/ChatHandler.java
Normal file
142
src/main/java/xyz/stachel/bonzotimer/ChatHandler.java
Normal 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);
|
||||
};
|
||||
}
|
||||
}
|
|
@ -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());
|
||||
}
|
||||
}
|
|
@ -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);
|
||||
});
|
||||
}
|
||||
}
|
29
src/main/java/xyz/stachel/bonzotimer/Timer.java
Normal file
29
src/main/java/xyz/stachel/bonzotimer/Timer.java
Normal 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;
|
||||
}
|
||||
}
|
|
@ -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!");
|
||||
}
|
||||
}
|
|
@ -1,2 +0,0 @@
|
|||
|
||||
public net.minecraft.client.renderer.GlStateManager$Color
|
|
@ -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": []
|
||||
}
|
||||
]
|
||||
]
|
||||
|
|
Loading…
Add table
Reference in a new issue