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
package com.replaymod.core.events;
import net.fabricmc.fabric.api.event.Event;
import net.fabricmc.fabric.api.event.EventFactory;
import de.johni0702.minecraft.gui.utils.Event;
public interface KeyBindingEventCallback {
Event<KeyBindingEventCallback> EVENT = EventFactory.createArrayBacked(
KeyBindingEventCallback.class,
(listeners) -> () -> {
Event<KeyBindingEventCallback> EVENT = Event.create((listeners) ->
() -> {
for (KeyBindingEventCallback listener : listeners) {
listener.onKeybindingEvent();
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@@ -15,6 +15,7 @@ import com.replaymod.replaystudio.replay.ReplayFile;
import com.replaymod.replaystudio.replay.ZipReplayFile;
import com.replaymod.replaystudio.studio.ReplayStudio;
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.Logger;
@@ -29,7 +30,7 @@ import java.nio.file.Path;
import static com.replaymod.core.versions.MCVer.*;
public class ReplayModOnline implements Module {
public class ReplayModOnline extends EventRegistrations implements Module {
{ instance = this; }
public static ReplayModOnline instance;
@@ -80,7 +81,7 @@ public class ReplayModOnline implements Module {
}
new GuiHandler(this).register();
ReplayClosedCallback.EVENT.register(replayHandler -> onReplayClosed());
register();
// Initial 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() {
if (currentReplayOutputFile != null) {
if (currentReplayOutputFile.exists()) { // Replay was modified, ask user for new name

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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