diff --git a/src/main/java/me/theclashfruit/pissnshit/PissAndShit.java b/src/main/java/me/theclashfruit/pissnshit/PissAndShit.java index 383aaca1..fe6ee4aa 100644 --- a/src/main/java/me/theclashfruit/pissnshit/PissAndShit.java +++ b/src/main/java/me/theclashfruit/pissnshit/PissAndShit.java @@ -2,6 +2,7 @@ import com.simibubi.create.Create; import me.shedaniel.autoconfig.AutoConfig; +import me.shedaniel.autoconfig.ConfigHolder; import me.shedaniel.autoconfig.serializer.Toml4jConfigSerializer; import me.theclashfruit.pissnshit.config.MainConfig; import me.theclashfruit.pissnshit.network.PissingPacket; @@ -27,6 +28,7 @@ public class PissAndShit implements ModInitializer { public static final GameRules.Key PISS_SOURCE_CONVERSION = GameRuleRegistry.register("pissSourceConversion", GameRules.Category.UPDATES, GameRuleFactory.createBooleanRule(false)); public static MainConfig CONFIG; + public static ConfigHolder CONFIG_HOLDER; @Override public void onInitialize() { @@ -43,7 +45,8 @@ public void onInitialize() { AutoConfig.register(MainConfig.class, Toml4jConfigSerializer::new); - CONFIG = AutoConfig.getConfigHolder(MainConfig.class).getConfig(); + CONFIG_HOLDER = AutoConfig.getConfigHolder(MainConfig.class); + CONFIG = CONFIG_HOLDER.getConfig(); Identifier jungleTemple = new Identifier("minecraft", "chests/jungle_temple"); Identifier desertPyramid = new Identifier("minecraft", "chests/desert_pyramid"); diff --git a/src/main/java/me/theclashfruit/pissnshit/client/PissAndShitClient.java b/src/main/java/me/theclashfruit/pissnshit/client/PissAndShitClient.java index b7df1629..9feeb903 100644 --- a/src/main/java/me/theclashfruit/pissnshit/client/PissAndShitClient.java +++ b/src/main/java/me/theclashfruit/pissnshit/client/PissAndShitClient.java @@ -1,17 +1,16 @@ package me.theclashfruit.pissnshit.client; -import me.theclashfruit.pissnshit.client.gui.PissAndShitHudOverlay; +import me.theclashfruit.pissnshit.client.gui.hud.PissAndShitHudOverlay; import me.theclashfruit.pissnshit.network.PissSyncPacket; import me.theclashfruit.pissnshit.network.PissingPacket; import me.theclashfruit.pissnshit.network.ShitSyncPacket; import me.theclashfruit.pissnshit.registry.Fluids; -import me.theclashfruit.pissnshit.util.PissManager; -import me.theclashfruit.pissnshit.util.PlayerEntityUtil; +import me.theclashfruit.pissnshit.client.gui.screen.DisclaimerScreen; import net.fabricmc.api.ClientModInitializer; import net.fabricmc.fabric.api.blockrenderlayer.v1.BlockRenderLayerMap; +import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientLifecycleEvents; import net.fabricmc.fabric.api.client.event.lifecycle.v1.ClientTickEvents; import net.fabricmc.fabric.api.client.keybinding.v1.KeyBindingHelper; -import net.fabricmc.fabric.api.client.networking.v1.ClientPlayNetworking; import net.fabricmc.fabric.api.client.render.fluid.v1.FluidRenderHandlerRegistry; import net.fabricmc.fabric.api.client.render.fluid.v1.SimpleFluidRenderHandler; import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; @@ -19,11 +18,11 @@ import net.minecraft.client.option.KeyBinding; import net.minecraft.client.render.RenderLayer; import net.minecraft.client.util.InputUtil; -import net.minecraft.server.network.ServerPlayerEntity; -import net.minecraft.text.Text; import net.minecraft.util.Identifier; import org.lwjgl.glfw.GLFW; +import static me.theclashfruit.pissnshit.PissAndShit.CONFIG; + public class PissAndShitClient implements ClientModInitializer { private static KeyBinding keyBinding; @@ -46,6 +45,11 @@ public void onInitializeClient() { } }); + ClientLifecycleEvents.CLIENT_STARTED.register(c -> { + if (!CONFIG.hasShownDisclaimer) + c.setScreen(new DisclaimerScreen()); + }); + // Register Packets PissSyncPacket.register(); ShitSyncPacket.register(); diff --git a/src/main/java/me/theclashfruit/pissnshit/client/gui/PissAndShitHudOverlay.java b/src/main/java/me/theclashfruit/pissnshit/client/gui/hud/PissAndShitHudOverlay.java similarity index 98% rename from src/main/java/me/theclashfruit/pissnshit/client/gui/PissAndShitHudOverlay.java rename to src/main/java/me/theclashfruit/pissnshit/client/gui/hud/PissAndShitHudOverlay.java index 2977fcd4..3215f351 100644 --- a/src/main/java/me/theclashfruit/pissnshit/client/gui/PissAndShitHudOverlay.java +++ b/src/main/java/me/theclashfruit/pissnshit/client/gui/hud/PissAndShitHudOverlay.java @@ -1,4 +1,4 @@ -package me.theclashfruit.pissnshit.client.gui; +package me.theclashfruit.pissnshit.client.gui.hud; import com.mojang.blaze3d.systems.RenderSystem; import me.theclashfruit.pissnshit.util.PlayerEntityUtil; diff --git a/src/main/java/me/theclashfruit/pissnshit/client/gui/screen/DisclaimerScreen.java b/src/main/java/me/theclashfruit/pissnshit/client/gui/screen/DisclaimerScreen.java new file mode 100644 index 00000000..081b42b9 --- /dev/null +++ b/src/main/java/me/theclashfruit/pissnshit/client/gui/screen/DisclaimerScreen.java @@ -0,0 +1,57 @@ +package me.theclashfruit.pissnshit.client.gui.screen; + +import me.shedaniel.autoconfig.AutoConfig; +import me.theclashfruit.pissnshit.config.MainConfig; +import net.fabricmc.api.EnvType; +import net.fabricmc.api.Environment; +import net.minecraft.client.font.MultilineText; +import net.minecraft.client.gui.DrawContext; +import net.minecraft.client.gui.screen.Screen; +import net.minecraft.client.gui.widget.ButtonWidget; +import net.minecraft.text.Text; + +import static me.theclashfruit.pissnshit.PissAndShit.CONFIG; +import static me.theclashfruit.pissnshit.PissAndShit.CONFIG_HOLDER; + +@Environment(EnvType.CLIENT) +public class DisclaimerScreen extends Screen { + public DisclaimerScreen() { + super(Text.translatable("screen.pissnshit.disclaimer.title")); + } + + @Override + protected void init() { + ButtonWidget doneButton = ButtonWidget.builder(Text.translatable("gui.done"), button -> close()) + .dimensions(width / 2 - 155, height - 40, 150, 20) + .build(); + + ButtonWidget quitButton = ButtonWidget + .builder(Text.translatable("menu.quit"), button -> client.scheduleStop()) + .dimensions(width / 2 + 5, height - 40, 150, 20) + .build(); + + addDrawableChild(doneButton); + addDrawableChild(quitButton); + } + + @Override + public void render(DrawContext context, int mouseX, int mouseY, float delta) { + this.renderBackground(context); + + context.drawCenteredTextWithShadow(textRenderer, Text.translatable("screen.pissnshit.disclaimer.title"), width / 2, 20, 0xff5555); + + MultilineText + .create(textRenderer, Text.translatable("screen.pissnshit.disclaimer.message"), width - 20) + .drawCenterWithShadow(context, width / 2, ((height / 2) - (2 * 16)), 16, 0xffffff); + + super.render(context, mouseX, mouseY, delta); + } + + @Override + public void close() { + CONFIG.hasShownDisclaimer = true; + CONFIG_HOLDER.save(); + + super.close(); + } +} diff --git a/src/main/java/me/theclashfruit/pissnshit/config/MainConfig.java b/src/main/java/me/theclashfruit/pissnshit/config/MainConfig.java index cc16f1e0..243f849e 100644 --- a/src/main/java/me/theclashfruit/pissnshit/config/MainConfig.java +++ b/src/main/java/me/theclashfruit/pissnshit/config/MainConfig.java @@ -9,6 +9,9 @@ public class MainConfig implements ConfigData { @ConfigEntry.Gui.Excluded public int configVersion = 1; + @ConfigEntry.Gui.Excluded + public boolean hasShownDisclaimer = false; + @ConfigEntry.Gui.CollapsibleObject public ShittingMechanics shittingMechanics = new ShittingMechanics(); diff --git a/src/main/resources/assets/pissnshit/lang/en_us.json b/src/main/resources/assets/pissnshit/lang/en_us.json index 9743487c..6c828ee9 100644 --- a/src/main/resources/assets/pissnshit/lang/en_us.json +++ b/src/main/resources/assets/pissnshit/lang/en_us.json @@ -44,6 +44,9 @@ "gamerule.pissSourceConversion": "Piss converts to source", "itemGroup.pissnshit.creative_tab": "Create: Piss & Shit", + "screen.pissnshit.disclaimer.title": "Disclaimer", + "screen.pissnshit.disclaimer.message": "Thank you for installing §6Create: Piss & Shit§r.\n\nBefore you continue we'd like to warn you that this mod might contain offensive content for some, you're free to continue or exit Minecraft.", + "text.autoconfig.pissnshit.title": "Create: Piss & Shit Configuration", "text.autoconfig.pissnshit.option.shittingMechanics": "Shitting Mechanics",