Skip to content

Commit

Permalink
fix
Browse files Browse the repository at this point in the history
  • Loading branch information
TexBlock committed Jun 15, 2023
1 parent bee49d3 commit f7fd0f9
Show file tree
Hide file tree
Showing 5 changed files with 121 additions and 2 deletions.
4 changes: 2 additions & 2 deletions gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,8 @@ loom.platform=forge
yarn_mappings=1.17.1+build.65

# Mod Properties
mod_version=0.1.5
maven_group=fi.dy.masa
mod_version=0.1.6
maven_group=org.thinkingstudio.mafglib
archives_base_name=MaFgLib
mod_id=malilib
mod_author=ThinkingStudio
17 changes: 17 additions & 0 deletions src/main/java/fi/dy/masa/malilib/MaLiLib.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,12 @@
package fi.dy.masa.malilib;

import fi.dy.masa.malilib.compat.forge.event.ForgeInputEventHandler;
import fi.dy.masa.malilib.compat.forge.event.ForgeTickEventHandler;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.eventbus.api.IEventBus;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.event.lifecycle.FMLClientSetupEvent;
import net.minecraftforge.fml.event.lifecycle.InterModProcessEvent;
import net.minecraftforge.fml.javafmlmod.FMLJavaModLoadingContext;

import fi.dy.masa.malilib.compat.forge.ForgePlatformCompat;
Expand All @@ -19,15 +23,28 @@ public MaLiLib() {
IEventBus modEventBus = FMLJavaModLoadingContext.get().getModEventBus();

modEventBus.addListener(this::onInitializeClient);
modEventBus.addListener(this::onInterModProcess);
}

public void onInitializeClient(FMLClientSetupEvent event) {
// Make sure the mod being absent on the other network side does not cause
// the client to display the server as incompatible
ForgePlatformCompat.getInstance().getModClientExtensionPoint();
InitializationHandler.getInstance().registerInitializationHandler(new MaLiLibInitHandler());

// Config Screen
ForgePlatformCompat.getInstance().getMod(MaLiLibReference.MOD_ID).registerModConfigScreen((screen) -> {
MaLiLibConfigGui gui = new MaLiLibConfigGui();
gui.setParent(screen);
return gui;
});

// Mixin doesn't work, maybe?
MinecraftForge.EVENT_BUS.register(new ForgeInputEventHandler());
MinecraftForge.EVENT_BUS.register(new ForgeTickEventHandler());
}

public void onInterModProcess(InterModProcessEvent event) {
((InitializationHandler) InitializationHandler.getInstance()).onGameInitDone();
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
package fi.dy.masa.malilib.compat.forge.event;

import fi.dy.masa.malilib.event.InputEventHandler;

import net.minecraft.client.MinecraftClient;

import net.minecraftforge.client.event.GuiScreenEvent;
import net.minecraftforge.client.event.InputEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;

public class ForgeInputEventHandler {
private final MinecraftClient client = MinecraftClient.getInstance();
@SubscribeEvent
public void onKeyboardInput(InputEvent.KeyInputEvent event) {
if (client.currentScreen == null) {
// This event isn't cancellable, and is fired after vanilla key handling >_>
// So this one needs to be handled with a Mixin
((InputEventHandler) InputEventHandler.getInputManager()).onKeyInput(event.getKey(), event.getScanCode(), event.getModifiers(), event.getAction() != 0);
}
}

@SubscribeEvent
public void onMouseInputEvent(InputEvent.RawMouseEvent event) {
int mouseX = 0;
int mouseY = 0;

if (client.currentScreen == null && ((InputEventHandler) InputEventHandler.getInputManager()).onMouseClick(mouseX, mouseY, event.getButton(), event.getAction() != 0)) {
event.setCanceled(true);
}
}

@SubscribeEvent
public void onMouseScrollEvent(InputEvent.MouseScrollEvent event) {
if (((InputEventHandler) InputEventHandler.getInputManager()).onMouseScroll((int) event.getMouseX(), (int) event.getMouseY(), 0, event.getScrollDelta())) {
event.setCanceled(true);
}
}

@SubscribeEvent
public void onGuiKeyboardKeyPressPre(GuiScreenEvent.KeyboardKeyPressedEvent.Pre event) {
if (((InputEventHandler) InputEventHandler.getInputManager()).onKeyInput(event.getKeyCode(), event.getScanCode(), event.getModifiers(), true)) {
event.setCanceled(true);
}
}

@SubscribeEvent
public void onGuiKeyboardKeyReleasePre(GuiScreenEvent.KeyboardKeyReleasedEvent.Pre event) {
if (((InputEventHandler) InputEventHandler.getInputManager()).onKeyInput(event.getKeyCode(), event.getScanCode(), event.getModifiers(), false)) {
event.setCanceled(true);
}
}

@SubscribeEvent
public void onGuiMouseClickPre(GuiScreenEvent.MouseClickedEvent.Pre event) {
if (((InputEventHandler) InputEventHandler.getInputManager()).onMouseClick((int) event.getMouseX(), (int) event.getMouseY(), event.getButton(), true)) {
event.setCanceled(true);
}
}

@SubscribeEvent
public void onGuiMouseReleasePre(GuiScreenEvent.MouseReleasedEvent.Pre event) {
if (((InputEventHandler) InputEventHandler.getInputManager()).onMouseClick((int) event.getMouseX(), (int) event.getMouseY(), event.getButton(), false)) {
event.setCanceled(true);
}
}

@SubscribeEvent
public void onGuiMouseScrolledPre(GuiScreenEvent.MouseScrollEvent.Pre event) {
if (((InputEventHandler) InputEventHandler.getInputManager()).onMouseScroll((int) event.getMouseX(), (int) event.getMouseY(), event.getScrollDelta(), 0)) {
event.setCanceled(true);
}
}

@SubscribeEvent
public void onGuiMouseMovedPre(GuiScreenEvent.MouseDragEvent.Pre event) {
((InputEventHandler) InputEventHandler.getInputManager()).onMouseMove((int) event.getMouseX(), (int) event.getMouseY());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package fi.dy.masa.malilib.compat.forge.event;

import fi.dy.masa.malilib.event.TickHandler;
import fi.dy.masa.malilib.hotkeys.KeybindMulti;

import net.minecraft.client.MinecraftClient;
import net.minecraftforge.event.TickEvent;
import net.minecraftforge.event.TickEvent.Phase;
import net.minecraftforge.eventbus.api.SubscribeEvent;

public class ForgeTickEventHandler {
private final MinecraftClient client = MinecraftClient.getInstance();
@SubscribeEvent
public void onClientTickEnd(TickEvent.ClientTickEvent event) {
if (event.phase == Phase.END) {
KeybindMulti.reCheckPressedKeys();
TickHandler.getInstance().onClientTick(client);
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,25 +24,29 @@ public abstract class MixinMinecraftClient

private ClientWorld worldBefore;

/*
@Inject(method = "<init>(Lnet/minecraft/client/RunArgs;)V", at = @At("RETURN"))
private void onInitComplete(RunArgs args, CallbackInfo ci)
{
// Register all mod handlers
((InitializationHandler) InitializationHandler.getInstance()).onGameInitDone();
}
*/

@Inject(method = "scheduleStop()V", at = @At("RETURN"))
private void onStop(CallbackInfo ci)
{
((ConfigManager) ConfigManager.getInstance()).saveAllConfigs();
}

/*
@Inject(method = "tick()V", at = @At("RETURN"))
private void onPostKeyboardInput(CallbackInfo ci)
{
KeybindMulti.reCheckPressedKeys();
TickHandler.getInstance().onClientTick((MinecraftClient)(Object) this);
}
*/

@Inject(method = "joinWorld(Lnet/minecraft/client/world/ClientWorld;)V", at = @At("HEAD"))
private void onLoadWorldPre(@Nullable ClientWorld worldClientIn, CallbackInfo ci)
Expand Down

0 comments on commit f7fd0f9

Please sign in to comment.