Use own event distribution system instead abusing fabric's one

This commit is contained in:
Jonas Herzig
2019-05-20 10:06:10 +02:00
parent 7cbf7f7c94
commit 0e086d91a6
22 changed files with 75 additions and 101 deletions

2
jGui

Submodule jGui updated: e0af866315...caea250b67

View File

@@ -1,13 +1,11 @@
//#if MC>=11300 //#if MC>=11300
package com.replaymod.core.events; package com.replaymod.core.events;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface KeyBindingEventCallback { public interface KeyBindingEventCallback {
Event<KeyBindingEventCallback> EVENT = EventFactory.createArrayBacked( Event<KeyBindingEventCallback> EVENT = Event.create((listeners) ->
KeyBindingEventCallback.class, () -> {
(listeners) -> () -> {
for (KeyBindingEventCallback listener : listeners) { for (KeyBindingEventCallback listener : listeners) {
listener.onKeybindingEvent(); listener.onKeybindingEvent();
} }

View File

@@ -1,13 +1,11 @@
//#if MC>=11300 //#if MC>=11300
package com.replaymod.core.events; package com.replaymod.core.events;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface KeyEventCallback { public interface KeyEventCallback {
Event<KeyEventCallback> EVENT = EventFactory.createArrayBacked( Event<KeyEventCallback> EVENT = Event.create((listeners) ->
KeyEventCallback.class, (key, scanCode, action, modifiers) -> {
(listeners) -> (key, scanCode, action, modifiers) -> {
for (KeyEventCallback listener : listeners) { for (KeyEventCallback listener : listeners) {
listener.onKeyEvent(key, scanCode, action, modifiers); listener.onKeyEvent(key, scanCode, action, modifiers);
} }

View File

@@ -1,13 +1,11 @@
//#if MC>=11300 //#if MC>=11300
package com.replaymod.core.events; package com.replaymod.core.events;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface PostRenderCallback { public interface PostRenderCallback {
Event<PostRenderCallback> EVENT = EventFactory.createArrayBacked( Event<PostRenderCallback> EVENT = Event.create((listeners) ->
PostRenderCallback.class, () -> {
(listeners) -> () -> {
for (PostRenderCallback listener : listeners) { for (PostRenderCallback listener : listeners) {
listener.postRender(); listener.postRender();
} }

View File

@@ -1,13 +1,11 @@
//#if MC>=11400 //#if MC>=11400
package com.replaymod.core.events; package com.replaymod.core.events;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface PostRenderWorldCallback { public interface PostRenderWorldCallback {
Event<PostRenderWorldCallback> EVENT = EventFactory.createArrayBacked( Event<PostRenderWorldCallback> EVENT = Event.create((listeners) ->
PostRenderWorldCallback.class, () -> {
(listeners) -> () -> {
for (PostRenderWorldCallback listener : listeners) { for (PostRenderWorldCallback listener : listeners) {
listener.postRenderWorld(); listener.postRenderWorld();
} }

View File

@@ -1,13 +1,11 @@
//#if MC>=11300 //#if MC>=11300
package com.replaymod.core.events; package com.replaymod.core.events;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface PreRenderCallback { public interface PreRenderCallback {
Event<PreRenderCallback> EVENT = EventFactory.createArrayBacked( Event<PreRenderCallback> EVENT = Event.create((listeners) ->
PreRenderCallback.class, () -> {
(listeners) -> () -> {
for (PreRenderCallback listener : listeners) { for (PreRenderCallback listener : listeners) {
listener.preRender(); listener.preRender();
} }

View File

@@ -1,13 +1,11 @@
//#if MC>=11300 //#if MC>=11300
package com.replaymod.core.events; package com.replaymod.core.events;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface PreRenderHandCallback { public interface PreRenderHandCallback {
Event<PreRenderHandCallback> EVENT = EventFactory.createArrayBacked( Event<PreRenderHandCallback> EVENT = Event.create((listeners) ->
PreRenderHandCallback.class, () -> {
(listeners) -> () -> {
for (PreRenderHandCallback listener : listeners) { for (PreRenderHandCallback listener : listeners) {
if (listener.preRenderHand()) { if (listener.preRenderHand()) {
return true; return true;

View File

@@ -1,13 +1,11 @@
package com.replaymod.core.events; package com.replaymod.core.events;
import com.replaymod.core.SettingsRegistry; import com.replaymod.core.SettingsRegistry;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface SettingsChangedCallback { public interface SettingsChangedCallback {
Event<SettingsChangedCallback> EVENT = EventFactory.createArrayBacked( Event<SettingsChangedCallback> EVENT = Event.create((listeners) ->
SettingsChangedCallback.class, (registry, key) -> {
(listeners) -> (registry, key) -> {
for (SettingsChangedCallback listener : listeners) { for (SettingsChangedCallback listener : listeners) {
listener.onSettingsChanged(registry, key); listener.onSettingsChanged(registry, key);
} }

View File

@@ -95,12 +95,7 @@ public class PlayerOverview extends EventRegistrations implements Extra {
} }
}); });
ReplayOpenedCallback.EVENT.register(this::onReplayOpen); register();
ReplayClosedCallback.EVENT.register(this::onReplayClose);
//#if MC>=11400
//#else
//$$ FORGE_BUS.register(this);
//#endif
} }
public boolean isHidden(UUID uuid) { public boolean isHidden(UUID uuid) {
@@ -115,6 +110,7 @@ public class PlayerOverview extends EventRegistrations implements Extra {
} }
} }
{ on(ReplayOpenedCallback.EVENT, this::onReplayOpen); }
private void onReplayOpen(ReplayHandler replayHandler) throws IOException { private void onReplayOpen(ReplayHandler replayHandler) throws IOException {
Optional<Set<UUID>> savedData = replayHandler.getReplayFile().getInvisiblePlayers(); Optional<Set<UUID>> savedData = replayHandler.getReplayFile().getInvisiblePlayers();
if (savedData.isPresent()) { if (savedData.isPresent()) {
@@ -125,6 +121,7 @@ public class PlayerOverview extends EventRegistrations implements Extra {
} }
} }
{ on(ReplayClosedCallback.EVENT, this::onReplayClose); }
private void onReplayClose(ReplayHandler replayHandler) { private void onReplayClose(ReplayHandler replayHandler) {
hiddenPlayers.clear(); hiddenPlayers.clear();
} }

View File

@@ -15,6 +15,7 @@ import com.replaymod.replaystudio.replay.ReplayFile;
import com.replaymod.replaystudio.replay.ZipReplayFile; import com.replaymod.replaystudio.replay.ZipReplayFile;
import com.replaymod.replaystudio.studio.ReplayStudio; import com.replaymod.replaystudio.studio.ReplayStudio;
import de.johni0702.minecraft.gui.container.GuiScreen; import de.johni0702.minecraft.gui.container.GuiScreen;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
@@ -29,7 +30,7 @@ import java.nio.file.Path;
import static com.replaymod.core.versions.MCVer.*; import static com.replaymod.core.versions.MCVer.*;
public class ReplayModOnline implements Module { public class ReplayModOnline extends EventRegistrations implements Module {
{ instance = this; } { instance = this; }
public static ReplayModOnline instance; public static ReplayModOnline instance;
@@ -80,7 +81,7 @@ public class ReplayModOnline implements Module {
} }
new GuiHandler(this).register(); new GuiHandler(this).register();
ReplayClosedCallback.EVENT.register(replayHandler -> onReplayClosed()); register();
// Initial login prompt // Initial login prompt
if (!core.getSettingsRegistry().get(Setting.SKIP_LOGIN_PROMPT)) { if (!core.getSettingsRegistry().get(Setting.SKIP_LOGIN_PROMPT)) {
@@ -164,6 +165,7 @@ public class ReplayModOnline implements Module {
} }
} }
{ on(ReplayClosedCallback.EVENT, replayHandler -> onReplayClosed()); }
private void onReplayClosed() { private void onReplayClosed() {
if (currentReplayOutputFile != null) { if (currentReplayOutputFile != null) {
if (currentReplayOutputFile.exists()) { // Replay was modified, ask user for new name if (currentReplayOutputFile.exists()) { // Replay was modified, ask user for new name

View File

@@ -1,8 +1,7 @@
package com.replaymod.pathing.player; package com.replaymod.pathing.player;
import com.replaymod.core.utils.WrappedTimer; import com.replaymod.core.utils.WrappedTimer;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
import net.minecraft.client.render.RenderTickCounter; import net.minecraft.client.render.RenderTickCounter;
/** /**
@@ -45,12 +44,13 @@ public class ReplayTimer extends WrappedTimer {
} }
public interface UpdatedCallback { public interface UpdatedCallback {
Event<UpdatedCallback> EVENT = EventFactory.createArrayBacked(UpdatedCallback.class, Event<UpdatedCallback> EVENT = Event.create((listeners) ->
(listeners) -> () -> { () -> {
for (UpdatedCallback listener : listeners) { for (UpdatedCallback listener : listeners) {
listener.onUpdate(); listener.onUpdate();
} }
}); }
);
void onUpdate(); void onUpdate();
} }
} }

View File

@@ -4,6 +4,7 @@ import com.replaymod.core.Module;
import com.replaymod.core.ReplayMod; import com.replaymod.core.ReplayMod;
import com.replaymod.render.utils.RenderJob; import com.replaymod.render.utils.RenderJob;
import com.replaymod.replay.events.ReplayClosedCallback; import com.replaymod.replay.events.ReplayClosedCallback;
import de.johni0702.minecraft.gui.utils.EventRegistrations;
import net.minecraft.util.crash.CrashReport; import net.minecraft.util.crash.CrashReport;
import net.minecraft.util.crash.CrashException; import net.minecraft.util.crash.CrashException;
import org.apache.commons.io.FileUtils; import org.apache.commons.io.FileUtils;
@@ -18,7 +19,7 @@ import java.util.List;
import static com.replaymod.core.versions.MCVer.*; import static com.replaymod.core.versions.MCVer.*;
public class ReplayModRender implements Module { public class ReplayModRender extends EventRegistrations implements Module {
{ instance = this; } { instance = this; }
public static ReplayModRender instance; public static ReplayModRender instance;
@@ -40,7 +41,9 @@ public class ReplayModRender implements Module {
@Override @Override
public void initClient() { public void initClient() {
ReplayClosedCallback.EVENT.register(replayHandler -> renderQueue.clear()); on(ReplayClosedCallback.EVENT, replayHandler -> renderQueue.clear());
register();
} }
public File getVideoFolder() { public File getVideoFolder() {

View File

@@ -1,13 +1,12 @@
package com.replaymod.render.events; package com.replaymod.render.events;
import com.replaymod.render.rendering.VideoRenderer; import com.replaymod.render.rendering.VideoRenderer;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface ReplayRenderCallback { public interface ReplayRenderCallback {
interface Pre { interface Pre {
Event<Pre> EVENT = EventFactory.createArrayBacked(Pre.class, Event<Pre> EVENT = Event.create((listeners) ->
(listeners) -> (renderer) -> { (renderer) -> {
for (Pre listener : listeners) { for (Pre listener : listeners) {
listener.beforeRendering(renderer); listener.beforeRendering(renderer);
} }
@@ -17,8 +16,8 @@ public interface ReplayRenderCallback {
} }
interface Post { interface Post {
Event<Post> EVENT = EventFactory.createArrayBacked(Post.class, Event<Post> EVENT = Event.create((listeners) ->
(listeners) -> (renderer) -> { (renderer) -> {
for (Post listener : listeners) { for (Post listener : listeners) {
listener.afterRendering(renderer); listener.afterRendering(renderer);
} }

View File

@@ -1,16 +1,15 @@
package com.replaymod.render.hooks; package com.replaymod.render.hooks;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface FogStateCallback { public interface FogStateCallback {
Event<FogStateCallback> EVENT = EventFactory.createArrayBacked(FogStateCallback.class, Event<FogStateCallback> EVENT = Event.create((listeners) ->
(enabled) -> {}, (enabled) -> {
(listeners) -> (enabled) -> {
for (FogStateCallback listener : listeners) { for (FogStateCallback listener : listeners) {
listener.fogStateChanged(enabled); listener.fogStateChanged(enabled);
} }
}); }
);
void fogStateChanged(boolean enabled); void fogStateChanged(boolean enabled);
} }

View File

@@ -1,16 +1,15 @@
package com.replaymod.render.hooks; package com.replaymod.render.hooks;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface Texture2DStateCallback { public interface Texture2DStateCallback {
Event<Texture2DStateCallback> EVENT = EventFactory.createArrayBacked(Texture2DStateCallback.class, Event<Texture2DStateCallback> EVENT = Event.create((listeners) ->
(slot, enabled) -> {}, (slot, enabled) -> {
(listeners) -> (slot, enabled) -> {
for (Texture2DStateCallback listener : listeners) { for (Texture2DStateCallback listener : listeners) {
listener.texture2DStateChanged(slot, enabled); listener.texture2DStateChanged(slot, enabled);
} }
}); }
);
void texture2DStateChanged(int slot, boolean enabled); void texture2DStateChanged(int slot, boolean enabled);
} }

View File

@@ -639,8 +639,8 @@ public class CameraEntity
//#if MC>=11400 //#if MC>=11400
{ on(RenderSpectatorCrosshairCallback.EVENT, this::shouldRenderSpectatorCrosshair); } { on(RenderSpectatorCrosshairCallback.EVENT, this::shouldRenderSpectatorCrosshair); }
private TriState shouldRenderSpectatorCrosshair() { private Boolean shouldRenderSpectatorCrosshair() {
return TriState.of(canSpectate(mc.targetedEntity)); return canSpectate(mc.targetedEntity);
} }
//#else //#else
//$$ @SubscribeEvent //$$ @SubscribeEvent

View File

@@ -1,24 +1,21 @@
//#if MC>=11300 //#if MC>=11300
package com.replaymod.replay.events; package com.replaymod.replay.events;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
import net.fabricmc.fabric.api.util.TriState;
public interface RenderSpectatorCrosshairCallback { public interface RenderSpectatorCrosshairCallback {
Event<RenderSpectatorCrosshairCallback> EVENT = EventFactory.createArrayBacked( Event<RenderSpectatorCrosshairCallback> EVENT = Event.create((listeners) ->
RenderSpectatorCrosshairCallback.class, () -> {
(listeners) -> () -> {
for (RenderSpectatorCrosshairCallback listener : listeners) { for (RenderSpectatorCrosshairCallback listener : listeners) {
TriState state = listener.shouldRenderSpectatorCrosshair(); Boolean state = listener.shouldRenderSpectatorCrosshair();
if (state != TriState.DEFAULT) { if (state != null) {
return state; return state;
} }
} }
return TriState.DEFAULT; return null;
} }
); );
TriState shouldRenderSpectatorCrosshair(); Boolean shouldRenderSpectatorCrosshair();
} }
//#endif //#endif

View File

@@ -1,12 +1,11 @@
package com.replaymod.replay.events; package com.replaymod.replay.events;
import com.replaymod.replay.ReplayHandler; import com.replaymod.replay.ReplayHandler;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
public interface ReplayClosedCallback { public interface ReplayClosedCallback {
Event<ReplayClosedCallback> EVENT = EventFactory.createArrayBacked(ReplayClosedCallback.class, Event<ReplayClosedCallback> EVENT = Event.create((listeners) ->
(listeners) -> (replayHandler) -> { (replayHandler) -> {
for (ReplayClosedCallback listener : listeners) { for (ReplayClosedCallback listener : listeners) {
listener.replayClosed(replayHandler); listener.replayClosed(replayHandler);
} }

View File

@@ -1,14 +1,13 @@
package com.replaymod.replay.events; package com.replaymod.replay.events;
import com.replaymod.replay.ReplayHandler; import com.replaymod.replay.ReplayHandler;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
import java.io.IOException; import java.io.IOException;
public interface ReplayClosingCallback { public interface ReplayClosingCallback {
Event<ReplayClosingCallback> EVENT = EventFactory.createArrayBacked(ReplayClosingCallback.class, Event<ReplayClosingCallback> EVENT = Event.create((listeners) ->
(listeners) -> (replayHandler) -> { (replayHandler) -> {
for (ReplayClosingCallback listener : listeners) { for (ReplayClosingCallback listener : listeners) {
listener.replayClosing(replayHandler); listener.replayClosing(replayHandler);
} }

View File

@@ -1,14 +1,13 @@
package com.replaymod.replay.events; package com.replaymod.replay.events;
import com.replaymod.replay.ReplayHandler; import com.replaymod.replay.ReplayHandler;
import net.fabricmc.fabric.api.event.Event; import de.johni0702.minecraft.gui.utils.Event;
import net.fabricmc.fabric.api.event.EventFactory;
import java.io.IOException; import java.io.IOException;
public interface ReplayOpenedCallback { public interface ReplayOpenedCallback {
Event<ReplayOpenedCallback> EVENT = EventFactory.createArrayBacked(ReplayOpenedCallback.class, Event<ReplayOpenedCallback> EVENT = Event.create((listeners) ->
(listeners) -> (replayHandler) -> { (replayHandler) -> {
for (ReplayOpenedCallback listener : listeners) { for (ReplayOpenedCallback listener : listeners) {
listener.replayOpened(replayHandler); listener.replayOpened(replayHandler);
} }

View File

@@ -2,7 +2,6 @@
package com.replaymod.replay.mixin; package com.replaymod.replay.mixin;
import com.replaymod.replay.events.RenderSpectatorCrosshairCallback; import com.replaymod.replay.events.RenderSpectatorCrosshairCallback;
import net.fabricmc.fabric.api.util.TriState;
import net.minecraft.client.gui.hud.InGameHud; import net.minecraft.client.gui.hud.InGameHud;
import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.At;
@@ -13,9 +12,9 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfoReturnable;
public class MixinInGameHud { public class MixinInGameHud {
@Inject(method = "shouldRenderSpectatorCrosshair", at = @At("HEAD"), cancellable = true) @Inject(method = "shouldRenderSpectatorCrosshair", at = @At("HEAD"), cancellable = true)
private void shouldRenderSpectatorCrosshair(CallbackInfoReturnable<Boolean> ci) { private void shouldRenderSpectatorCrosshair(CallbackInfoReturnable<Boolean> ci) {
TriState state = RenderSpectatorCrosshairCallback.EVENT.invoker().shouldRenderSpectatorCrosshair(); Boolean state = RenderSpectatorCrosshairCallback.EVENT.invoker().shouldRenderSpectatorCrosshair();
if (state != TriState.DEFAULT) { if (state != null) {
ci.setReturnValue(state.get()); ci.setReturnValue(state);
} }
} }
} }

View File

@@ -220,10 +220,6 @@ dependencies {
modCompile 'net.fabricmc:fabric:' + [ modCompile 'net.fabricmc:fabric:' + [
11400: '0.2.7+build.127' 11400: '0.2.7+build.127'
][mcVersion] ][mcVersion]
} else {
shadow('net.fabricmc.fabric-api:fabric-lib:0.1.0') { // for Event, EventFactory, etc.
transitive = false
}
} }
if (FG3) { if (FG3) {