-
Notifications
You must be signed in to change notification settings - Fork 9
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Showing
5 changed files
with
176 additions
and
2 deletions.
There are no files selected for viewing
50 changes: 50 additions & 0 deletions
50
common/src/main/java/com/klikli_dev/modonomicon/api/events/EntryClickedEvent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,50 @@ | ||
package com.klikli_dev.modonomicon.api.events; | ||
|
||
import com.klikli_dev.modonomicon.client.gui.book.EntryDisplayState; | ||
import net.minecraft.resources.ResourceLocation; | ||
|
||
public class EntryClickedEvent extends ModonomiconEvent { | ||
protected ResourceLocation bookId; | ||
protected ResourceLocation entryId; | ||
|
||
protected double mouseX; | ||
protected double mouseY; | ||
protected int button; | ||
|
||
protected EntryDisplayState displayState; | ||
|
||
public EntryClickedEvent(ResourceLocation bookId, ResourceLocation entryId, double mouseX, double mouseY, int button, EntryDisplayState displayState) { | ||
super(true); | ||
|
||
this.bookId = bookId; | ||
this.entryId = entryId; | ||
this.mouseX = mouseX; | ||
this.mouseY = mouseY; | ||
this.button = button; | ||
this.displayState = displayState; | ||
} | ||
|
||
public ResourceLocation getBookId() { | ||
return this.bookId; | ||
} | ||
|
||
public ResourceLocation getEntryId() { | ||
return this.entryId; | ||
} | ||
|
||
public double getMouseX() { | ||
return this.mouseX; | ||
} | ||
|
||
public double getMouseY() { | ||
return this.mouseY; | ||
} | ||
|
||
public int getButton() { | ||
return this.button; | ||
} | ||
|
||
public EntryDisplayState getDisplayState() { | ||
return this.displayState; | ||
} | ||
} |
9 changes: 9 additions & 0 deletions
9
common/src/main/java/com/klikli_dev/modonomicon/api/events/EventPriority.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package com.klikli_dev.modonomicon.api.events; | ||
|
||
public enum EventPriority { | ||
HIGHEST, | ||
HIGH, | ||
NORMAL, | ||
LOW, | ||
LOWEST; | ||
} |
33 changes: 33 additions & 0 deletions
33
common/src/main/java/com/klikli_dev/modonomicon/api/events/ModonomiconEvent.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
package com.klikli_dev.modonomicon.api.events; | ||
|
||
public abstract class ModonomiconEvent { | ||
private final boolean isCancelable; | ||
private boolean isCanceled = false; | ||
|
||
public ModonomiconEvent() { | ||
this(true); | ||
} | ||
|
||
public ModonomiconEvent(boolean isCancelable) { | ||
this.isCancelable = isCancelable; | ||
} | ||
|
||
public boolean isCancelable() { | ||
return this.isCancelable; | ||
} | ||
|
||
public boolean isCanceled() { | ||
return this.isCanceled; | ||
} | ||
|
||
public void setCanceled(boolean cancel) { | ||
if (!this.isCancelable()) { | ||
throw new UnsupportedOperationException( | ||
"Attempted to call ModonomiconEvent#setCanceled() on a non-cancelable event of type: " | ||
+ this.getClass().getCanonicalName() | ||
); | ||
} | ||
this.isCanceled = cancel; | ||
} | ||
|
||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
70 changes: 70 additions & 0 deletions
70
common/src/main/java/com/klikli_dev/modonomicon/events/ModonomiconEvents.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,70 @@ | ||
package com.klikli_dev.modonomicon.events; | ||
|
||
import com.klikli_dev.modonomicon.api.events.EntryClickedEvent; | ||
import com.klikli_dev.modonomicon.api.events.EventPriority; | ||
import com.klikli_dev.modonomicon.bookstate.BookStatesSaveData; | ||
import com.klikli_dev.modonomicon.bookstate.BookVisualStateManager; | ||
import com.mojang.datafixers.util.Pair; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
import java.util.function.Consumer; | ||
|
||
public class ModonomiconEvents { | ||
|
||
private static final Client client = new Client(); | ||
|
||
private static final Server server = new Server(); | ||
|
||
public static Client client() { | ||
return client; | ||
} | ||
|
||
public static Server server() { | ||
return server; | ||
} | ||
|
||
public static class Server{ | ||
|
||
} | ||
|
||
public static class Client{ | ||
|
||
private final List<Pair<Consumer<EntryClickedEvent>, EventPriority>> entryClickedCallbacks = new ArrayList<>(); | ||
|
||
/** | ||
* Register a callback for the EntryClickedEvent with Normal priority. | ||
* Forge: Should be called in FMLClientSetupEvent | ||
* Fabric: Should be called from ClientModInitializer | ||
*/ | ||
public void onEntryClicked(Consumer<EntryClickedEvent> callback) { | ||
this.onEntryClicked(callback, EventPriority.NORMAL); | ||
|
||
} | ||
|
||
/** | ||
* Register a callback for the EntryClickedEvent with the given priority. | ||
* Forge: Should be called in FMLClientSetupEvent | ||
* Fabric: Should be called from ClientModInitializer | ||
*/ | ||
public void onEntryClicked(Consumer<EntryClickedEvent> callback, EventPriority priority) { | ||
this.entryClickedCallbacks.add(Pair.of(callback, priority)); | ||
this.entryClickedCallbacks.sort((a, b) -> b.getSecond().compareTo(a.getSecond())); | ||
} | ||
|
||
/** | ||
* Fires the entry clicked event, and returns true if the event was canceled. | ||
*/ | ||
public boolean entryClicked(EntryClickedEvent event) { | ||
for (var callback : this.entryClickedCallbacks) { | ||
callback.getFirst().accept(event); | ||
if (event.isCanceled()) { | ||
break; | ||
} | ||
} | ||
|
||
return event.isCanceled(); | ||
} | ||
} | ||
|
||
} |