Skip to content

Commit

Permalink
feat: port mod to Minecraft 1.17.1
Browse files Browse the repository at this point in the history
  • Loading branch information
iGoodie committed Jul 26, 2021
1 parent 89fb4eb commit 13186a1
Show file tree
Hide file tree
Showing 35 changed files with 463 additions and 351 deletions.
45 changes: 27 additions & 18 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -3,21 +3,26 @@ buildscript {
maven { url = 'https://maven.minecraftforge.net' }
jcenter()
mavenCentral()
gradlePluginPortal()
}
dependencies {
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '5.1.+', changing: true
classpath "com.github.jengelman.gradle.plugins:shadow:5.1.0"
}
}

apply plugin: 'net.minecraftforge.gradle'
// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
apply plugin: 'eclipse'
apply plugin: 'com.github.johnrengelman.shadow'
apply plugin: 'idea'
apply plugin: 'maven-publish'

version = mod_version
group = "igoodie.twitchspawn"
archivesBaseName = "twitchspawn_" + minecraft_version

sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility = compileJava.targetCompatibility = '16' // Need this here so eclipse task generates correctly.
sourceCompatibility = targetCompatibility = compileJava.sourceCompatibility =
compileJava.targetCompatibility = '16' // Need this here so eclipse task generates correctly.

println('Java: ' + System.getProperty('java.version') + ' JVM: ' + System.getProperty('java.vm.version') + '(' + System.getProperty('java.vendor') + ') Arch: ' + System.getProperty('os.arch'))

Expand Down Expand Up @@ -88,28 +93,22 @@ minecraft {
}

repositories {
mavenLocal()
jcenter()
mavenCentral()
}

configurations {
mods
shade
compile.extendsFrom shade
}

dependencies {
// Specify the version of Minecraft to use, If this is any group other then 'net.minecraft' it is assumed
// that the dep is a ForgeGradle 'patcher' dependency. And it's patches will be applied.
// The userdev artifact is a special name and will get all sorts of transformations applied to it.
minecraft "net.minecraftforge:forge:${minecraft_version}-${forge_version}"

// Nightly Config by Electronwill
shade group: 'com.electronwill.night-config', name: 'core', version: '3.6.0'
shade group: 'com.electronwill.night-config', name: 'toml', version: '3.6.0'
shadow group: 'com.electronwill.night-config', name: 'core', version: '3.6.0'
shadow group: 'com.electronwill.night-config', name: 'toml', version: '3.6.0'

// SocketIO Client
shade group: 'io.socket', name: 'socket.io-client', version: '1.0.0'
shadow "io.socket:socket.io-client:1.0.0"

// JUnit 5 for testings
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.5.0'
Expand All @@ -122,14 +121,16 @@ dependencies {

}

shadowJar {
configurations = [project.configurations.shadow]
classifier ""
// relocate 'com.electronwill.nightconfig.core', "com.electronwill.nightconfig.${mod_id}.core"
// relocate 'com.electronwill.nightconfig.toml', "com.electronwill.nightconfig.${mod_id}.toml"
// relocate "io.socket.client", "io.socket.${mod_id}.client"
}

// Example for how to get properties into the manifest for reading by the runtime..
jar {
// Include shaded source in the built mod jar
configurations.shade.each { dependency ->
from(project.zipTree(dependency)) {
exclude 'META-INF', 'META-INF/**'
}
}
manifest {
attributes([
"Specification-Title" : mod_id,
Expand Down Expand Up @@ -165,3 +166,11 @@ publishing {
test {
useJUnitPlatform()
}

artifacts {
archives shadowJar
}

reobf {
shadowJar {}
}
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ org.gradle.daemon=false

mod_id=twitchspawn
mod_group=net.programmer.igoodie
mod_version=1.9.0
mod_version=1.9.0-bughunt.1

minecraft_version=1.17.1
forge_version=37.0.1
forge_version=37.0.9

mcpMappings_channel=official
mcpMappings_version=1.17.1
33 changes: 17 additions & 16 deletions src/main/java/net/programmer/igoodie/twitchspawn/TwitchSpawn.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,11 @@
package net.programmer.igoodie.twitchspawn;

import net.minecraft.command.arguments.ArgumentSerializer;
import net.minecraft.command.arguments.ArgumentTypes;
import net.minecraft.entity.player.ServerPlayerEntity;
import net.minecraft.commands.synchronization.ArgumentTypes;
import net.minecraft.network.chat.TranslatableComponent;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.sounds.SoundEvent;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.event.RegisterCommandsEvent;
import net.minecraftforge.event.RegistryEvent;
Expand All @@ -17,16 +16,18 @@
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLCommonSetupEvent;
import net.minecraftforge.fml.event.lifecycle.FMLDedicatedServerSetupEvent;
import net.minecraftforge.fml.event.server.FMLServerAboutToStartEvent;
import net.minecraftforge.fml.event.server.FMLServerStartingEvent;
import net.minecraftforge.fml.event.server.FMLServerStoppingEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;
import net.minecraftforge.fml.network.NetworkDirection;
import net.minecraftforge.fmllegacy.network.NetworkDirection;
import net.minecraftforge.fmlserverevents.FMLServerAboutToStartEvent;
import net.minecraftforge.fmlserverevents.FMLServerStartingEvent;
import net.minecraftforge.fmlserverevents.FMLServerStoppingEvent;
import net.programmer.igoodie.twitchspawn.client.gui.GlobalChatCooldownOverlay;
import net.programmer.igoodie.twitchspawn.client.gui.StatusIndicatorOverlay;
import net.programmer.igoodie.twitchspawn.command.RulesetNameArgumentType;
import net.programmer.igoodie.twitchspawn.command.StreamerArgumentType;
import net.programmer.igoodie.twitchspawn.command.TwitchSpawnCommand;
import net.programmer.igoodie.twitchspawn.command.serializer.RulesetNameArgumentSerializer;
import net.programmer.igoodie.twitchspawn.command.serializer.StreamerArgumentSerializer;
import net.programmer.igoodie.twitchspawn.configuration.ConfigManager;
import net.programmer.igoodie.twitchspawn.configuration.PreferencesConfig;
import net.programmer.igoodie.twitchspawn.network.NetworkManager;
Expand Down Expand Up @@ -59,9 +60,9 @@ private void commonSetup(final FMLCommonSetupEvent event) {
NetworkManager.initialize();

ArgumentTypes.register("twitchspawn:streamer", StreamerArgumentType.class,
new ArgumentSerializer<>(StreamerArgumentType::streamerNick));
new StreamerArgumentSerializer());
ArgumentTypes.register("twitchspawn:ruleset", RulesetNameArgumentType.class,
new ArgumentSerializer<>(RulesetNameArgumentType::rulesetName));
new RulesetNameArgumentSerializer());

} catch (TwitchSpawnLoadingErrors e) {
e.bindFMLWarnings(ModLoadingStage.COMMON_SETUP);
Expand Down Expand Up @@ -114,24 +115,24 @@ public void onServerStopping(FMLServerStoppingEvent event) {

@SubscribeEvent
public void onPlayerLoggedIn(PlayerEvent.PlayerLoggedInEvent event) {
ServerPlayerEntity entity = (ServerPlayerEntity) event.getPlayer();
ServerPlayer entity = (ServerPlayer) event.getPlayer();

String translationKey = TRACE_MANAGER.isRunning() ?
"commands.twitchspawn.status.on" : "commands.twitchspawn.status.off";

entity.sendMessage(new TranslationTextComponent(translationKey), entity.getUniqueID());
entity.sendMessage(new TranslatableComponent(translationKey), entity.getUUID());

if (TRACE_MANAGER.isRunning())
TRACE_MANAGER.connectStreamer(entity.getName().getString());

NetworkManager.CHANNEL.sendTo(new StatusChangedPacket(TRACE_MANAGER.isRunning()),
entity.connection.netManager,
entity.connection.connection,
NetworkDirection.PLAY_TO_CLIENT);
}

@SubscribeEvent
public void onPlayerLoggedOut(PlayerEvent.PlayerLoggedOutEvent event) {
ServerPlayerEntity entity = (ServerPlayerEntity) event.getPlayer();
ServerPlayer entity = (ServerPlayer) event.getPlayer();

if (TRACE_MANAGER.isRunning())
TRACE_MANAGER.disconnectStreamer(entity.getName().getString());
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package net.programmer.igoodie.twitchspawn.client.gui;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.util.ResourceLocation;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.resources.ResourceLocation;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
import net.minecraftforge.eventbus.api.SubscribeEvent;
Expand Down Expand Up @@ -32,7 +33,7 @@ public static void onRenderGuiPre(RenderGameOverlayEvent.Pre event) {

@SubscribeEvent
public static void onRenderGuiPost(RenderGameOverlayEvent.Post event) {
if (event.getType() != ElementType.HOTBAR)
if (event.getType() != ElementType.TEXT)
return; // Render only on HOTBAR

// Already drew, stop here
Expand Down Expand Up @@ -60,34 +61,38 @@ public static void onRenderGuiPost(RenderGameOverlayEvent.Post event) {
y = 5;
}

MatrixStack matrixStack = event.getMatrixStack();
PoseStack matrixStack = event.getMatrixStack();

matrixStack.push();
matrixStack.pushPose();
matrixStack.scale(scale, scale, scale);
renderGlyph(matrixStack, String.format("%02d", minutes), x, (int) (y / scale));
renderGlyph(matrixStack, ":", x + 32, (int) (y / scale));
renderGlyph(matrixStack, String.format("%02d", seconds), (x + 10 + 2 * 18), (int) (y / scale));
renderGlyph(matrixStack, "i", (int) (x + 10 + 4.25f * 18), (int) ((y - 2) / scale));
matrixStack.pop();
matrixStack.popPose();
}

drew = true;
}

public static void renderGlyph(MatrixStack ms, String number, int x, int y) {
public static void renderGlyph(PoseStack ms, String number, int x, int y) {
Minecraft minecraft = Minecraft.getInstance();

minecraft.getTextureManager().bindTexture(cooldownGlyphs);
ms.push();
GlStateManager.enableBlend();
RenderSystem.setShader(GameRenderer::getPositionTexShader);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
RenderSystem.setShaderTexture(0, cooldownGlyphs);

ms.pushPose();

RenderSystem.enableBlend();

if (number.equals("i")) {
int ux = 0;
int uy = 20;
int w = 28;
int h = 25;

minecraft.ingameGUI.blit(
minecraft.gui.blit(
ms,
x, y,
ux, uy,
Expand All @@ -106,7 +111,7 @@ public static void renderGlyph(MatrixStack ms, String number, int x, int y) {
int w = 18;
int h = 18;

minecraft.ingameGUI.blit(
minecraft.gui.blit(
ms,
x + offset, y,
ux, uy,
Expand All @@ -117,9 +122,12 @@ public static void renderGlyph(MatrixStack ms, String number, int x, int y) {
}
}

GlStateManager.disableBlend();
ms.pop();
minecraft.getTextureManager().bindTexture(AbstractGui.GUI_ICONS_LOCATION);
RenderSystem.disableBlend();
ms.popPose();

RenderSystem.setShader(GameRenderer::getPositionTexShader);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
RenderSystem.setShaderTexture(0, Gui.GUI_ICONS_LOCATION);
}

}
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
package net.programmer.igoodie.twitchspawn.client.gui;

import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.platform.GlStateManager;
import com.mojang.blaze3d.systems.RenderSystem;
import com.mojang.blaze3d.vertex.PoseStack;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.player.ClientPlayerEntity;
import net.minecraft.client.gui.AbstractGui;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.SoundEvent;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.player.LocalPlayer;
import net.minecraft.client.renderer.GameRenderer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.sounds.SoundEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
import net.minecraftforge.event.TickEvent;
Expand All @@ -29,7 +30,7 @@ public static void setRunning(boolean running) {
String soundName = running ? "pop_in" : "pop_out";

Minecraft minecraft = Minecraft.getInstance();
ClientPlayerEntity self = minecraft.player;
LocalPlayer self = minecraft.player;

if (self != null) { // Here to hopefully fix an obscure Null Pointer (From UNKNOWN PENGUIN's log)
self.playSound(new SoundEvent(new ResourceLocation(TwitchSpawn.MOD_ID, soundName)), 1f, 1f);
Expand All @@ -53,17 +54,21 @@ public static void onRenderGuiPost(RenderGameOverlayEvent.Post event) {
return; // The display is disabled, stop here

Minecraft minecraft = Minecraft.getInstance();
MatrixStack matrixStack = event.getMatrixStack();
PoseStack matrixStack = event.getMatrixStack();

if (event.getType() != ElementType.HOTBAR)
if (event.getType() != ElementType.TEXT)
return; // Render only on HOTBAR

// Already drew, stop here
if (drew) return;

minecraft.getTextureManager().bindTexture(indicatorIcons);
matrixStack.push();
GlStateManager.enableBlend();
RenderSystem.enableBlend();
RenderSystem.defaultBlendFunc();
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
RenderSystem.setShader(GameRenderer::getPositionTexShader);
RenderSystem.setShaderTexture(0, indicatorIcons);

matrixStack.pushPose();

int x = 5, y = 5;
int ux = -1, uy = -1;
Expand All @@ -82,11 +87,14 @@ public static void onRenderGuiPost(RenderGameOverlayEvent.Post event) {
}

matrixStack.scale(1f, 1f, 1f);
minecraft.ingameGUI.blit(matrixStack, x, y, ux, uy, w, h);
minecraft.gui.blit(matrixStack, x, y, ux, uy, w, h);

matrixStack.popPose();

GlStateManager.disableBlend();
matrixStack.pop();
minecraft.getTextureManager().bindTexture(AbstractGui.GUI_ICONS_LOCATION);
RenderSystem.setShader(GameRenderer::getPositionTexShader);
RenderSystem.setShaderColor(1.0F, 1.0F, 1.0F, 1.0F);
RenderSystem.disableBlend();
RenderSystem.setShaderTexture(0, Gui.GUI_ICONS_LOCATION);

drew = true;
}
Expand Down
Loading

0 comments on commit 13186a1

Please sign in to comment.