Commit d7a488cd863f5b077fc10a34b3e9db3c037d9e99
1 parent
1901d26a
Relocate common
Showing
53 changed files
with
2290 additions
and
2295 deletions
Too many changes to show.
To preserve performance only 53 of 213 files are displayed.
resources/liteloader.properties deleted
100644 → 0
java/common/com/mumfrey/liteloader/Configurable.java renamed to src/main/java/com/mumfrey/liteloader/Configurable.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -import com.mumfrey.liteloader.modconfig.ConfigPanel; | |
| 4 | - | |
| 5 | -/** | |
| 6 | - * Interface for mods which want to provide a configuration panel inside the "mod info" screen | |
| 7 | - * | |
| 8 | - * @author Adam Mummery-Smith | |
| 9 | - */ | |
| 10 | -public interface Configurable | |
| 11 | -{ | |
| 12 | - /** | |
| 13 | - * Get the class of the configuration panel to use, the returned class must have a | |
| 14 | - * default (no-arg) constructor | |
| 15 | - * | |
| 16 | - * @return configuration panel class | |
| 17 | - */ | |
| 18 | - public abstract Class<? extends ConfigPanel> getConfigPanelClass(); | |
| 19 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +import com.mumfrey.liteloader.modconfig.ConfigPanel; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * Interface for mods which want to provide a configuration panel inside the "mod info" screen | |
| 7 | + * | |
| 8 | + * @author Adam Mummery-Smith | |
| 9 | + */ | |
| 10 | +public interface Configurable | |
| 11 | +{ | |
| 12 | + /** | |
| 13 | + * Get the class of the configuration panel to use, the returned class must have a | |
| 14 | + * default (no-arg) constructor | |
| 15 | + * | |
| 16 | + * @return configuration panel class | |
| 17 | + */ | |
| 18 | + public abstract Class<? extends ConfigPanel> getConfigPanelClass(); | |
| 19 | +} | ... | ... |
java/common/com/mumfrey/liteloader/LiteMod.java renamed to src/main/java/com/mumfrey/liteloader/LiteMod.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -import java.io.File; | |
| 4 | - | |
| 5 | -import com.mumfrey.liteloader.api.Listener; | |
| 6 | -import com.mumfrey.liteloader.modconfig.Exposable; | |
| 7 | - | |
| 8 | -/** | |
| 9 | - * Base interface for mods | |
| 10 | - * | |
| 11 | - * @author Adam Mummery-Smith | |
| 12 | - */ | |
| 13 | -public interface LiteMod extends Exposable, Listener | |
| 14 | -{ | |
| 15 | - /** | |
| 16 | - * Get the mod version string | |
| 17 | - * | |
| 18 | - * @return the mod version as a string | |
| 19 | - */ | |
| 20 | - public abstract String getVersion(); | |
| 21 | - | |
| 22 | - /** | |
| 23 | - * Do startup stuff here, minecraft is not fully initialised when this function is called so mods *must not* | |
| 24 | - * interact with minecraft in any way here | |
| 25 | - * | |
| 26 | - * @param configPath Configuration path to use | |
| 27 | - */ | |
| 28 | - public abstract void init(File configPath); | |
| 29 | - | |
| 30 | - /** | |
| 31 | - * Called when the loader detects that a version change has happened since this mod was last loaded | |
| 32 | - * | |
| 33 | - * @param version new version | |
| 34 | - * @param configPath Path for the new version-specific config | |
| 35 | - * @param oldConfigPath Path for the old version-specific config | |
| 36 | - */ | |
| 37 | - public abstract void upgradeSettings(String version, File configPath, File oldConfigPath); | |
| 38 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +import java.io.File; | |
| 4 | + | |
| 5 | +import com.mumfrey.liteloader.api.Listener; | |
| 6 | +import com.mumfrey.liteloader.modconfig.Exposable; | |
| 7 | + | |
| 8 | +/** | |
| 9 | + * Base interface for mods | |
| 10 | + * | |
| 11 | + * @author Adam Mummery-Smith | |
| 12 | + */ | |
| 13 | +public interface LiteMod extends Exposable, Listener | |
| 14 | +{ | |
| 15 | + /** | |
| 16 | + * Get the mod version string | |
| 17 | + * | |
| 18 | + * @return the mod version as a string | |
| 19 | + */ | |
| 20 | + public abstract String getVersion(); | |
| 21 | + | |
| 22 | + /** | |
| 23 | + * Do startup stuff here, minecraft is not fully initialised when this function is called so mods *must not* | |
| 24 | + * interact with minecraft in any way here | |
| 25 | + * | |
| 26 | + * @param configPath Configuration path to use | |
| 27 | + */ | |
| 28 | + public abstract void init(File configPath); | |
| 29 | + | |
| 30 | + /** | |
| 31 | + * Called when the loader detects that a version change has happened since this mod was last loaded | |
| 32 | + * | |
| 33 | + * @param version new version | |
| 34 | + * @param configPath Path for the new version-specific config | |
| 35 | + * @param oldConfigPath Path for the old version-specific config | |
| 36 | + */ | |
| 37 | + public abstract void upgradeSettings(String version, File configPath, File oldConfigPath); | |
| 38 | +} | ... | ... |
java/common/com/mumfrey/liteloader/PacketHandler.java renamed to src/main/java/com/mumfrey/liteloader/PacketHandler.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -import java.util.List; | |
| 4 | - | |
| 5 | -import net.minecraft.network.INetHandler; | |
| 6 | -import net.minecraft.network.Packet; | |
| 7 | - | |
| 8 | -/** | |
| 9 | - * Interface for mods which want to handle raw packets | |
| 10 | - * | |
| 11 | - * @author Adam Mummery-Smith | |
| 12 | - */ | |
| 13 | -public interface PacketHandler extends LiteMod | |
| 14 | -{ | |
| 15 | - /** | |
| 16 | - * Get list of packets to handle | |
| 17 | - */ | |
| 18 | - public List<Class<? extends Packet>> getHandledPackets(); | |
| 19 | - | |
| 20 | - /** | |
| 21 | - * @param netHandler The vanilla nethandler which will handle this packet if not cancelled | |
| 22 | - * @param packet Incoming packet | |
| 23 | - * @return True to allow further processing of this packet, including other PacketHandlers and eventually the vanilla netHandler, to inhibit further | |
| 24 | - * processing return false. You may choose to return false and then invoke the vanilla handler method on the supplied INetHandler if you wish to | |
| 25 | - * inhibit later PacketHandlers but preserve vanilla behaviour. | |
| 26 | - */ | |
| 27 | - public abstract boolean handlePacket(INetHandler netHandler, Packet packet); | |
| 28 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +import java.util.List; | |
| 4 | + | |
| 5 | +import net.minecraft.network.INetHandler; | |
| 6 | +import net.minecraft.network.Packet; | |
| 7 | + | |
| 8 | +/** | |
| 9 | + * Interface for mods which want to handle raw packets | |
| 10 | + * | |
| 11 | + * @author Adam Mummery-Smith | |
| 12 | + */ | |
| 13 | +public interface PacketHandler extends LiteMod | |
| 14 | +{ | |
| 15 | + /** | |
| 16 | + * Get list of packets to handle | |
| 17 | + */ | |
| 18 | + public List<Class<? extends Packet>> getHandledPackets(); | |
| 19 | + | |
| 20 | + /** | |
| 21 | + * @param netHandler The vanilla nethandler which will handle this packet if not cancelled | |
| 22 | + * @param packet Incoming packet | |
| 23 | + * @return True to allow further processing of this packet, including other PacketHandlers and eventually the vanilla netHandler, to inhibit further | |
| 24 | + * processing return false. You may choose to return false and then invoke the vanilla handler method on the supplied INetHandler if you wish to | |
| 25 | + * inhibit later PacketHandlers but preserve vanilla behaviour. | |
| 26 | + */ | |
| 27 | + public abstract boolean handlePacket(INetHandler netHandler, Packet packet); | |
| 28 | +} | ... | ... |
java/common/com/mumfrey/liteloader/Permissible.java renamed to src/main/java/com/mumfrey/liteloader/Permissible.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -import com.mumfrey.liteloader.permissions.PermissionsManager; | |
| 4 | -import com.mumfrey.liteloader.permissions.PermissionsManagerClient; | |
| 5 | - | |
| 6 | -/** | |
| 7 | - * Interface for mods which use the ClientPermissions system | |
| 8 | - * | |
| 9 | - * @author Adam Mummery-Smith | |
| 10 | - */ | |
| 11 | -public interface Permissible extends LiteMod | |
| 12 | -{ | |
| 13 | - /** | |
| 14 | - * Returns the node name of the mod, replicated permissions will be of the form mod.<name>.permission.node so this | |
| 15 | - * method must return a valid name for use in permission nodes. This method must also return the same value every | |
| 16 | - * time it is called since permissible names are not necessarily cached. | |
| 17 | - * | |
| 18 | - * @return Permissible name | |
| 19 | - */ | |
| 20 | - public abstract String getPermissibleModName(); | |
| 21 | - | |
| 22 | - /** | |
| 23 | - * The mod version to replicate to the server | |
| 24 | - * | |
| 25 | - * @return Mod version as a float | |
| 26 | - */ | |
| 27 | - public abstract float getPermissibleModVersion(); | |
| 28 | - | |
| 29 | - /** | |
| 30 | - * Called by the permissions manager at initialisation to instruct the mod to populate the list of permissions it | |
| 31 | - * supports. This method should call back against the supplied permissions manager to register the permissions to | |
| 32 | - * be sent to the server when connecting. | |
| 33 | - * | |
| 34 | - * @param permissionsManager Client permissions manager | |
| 35 | - */ | |
| 36 | - public abstract void registerPermissions(PermissionsManagerClient permissionsManager); | |
| 37 | - | |
| 38 | - /** | |
| 39 | - * Called when the permissions set is cleared | |
| 40 | - * | |
| 41 | - * @param manager | |
| 42 | - */ | |
| 43 | - public abstract void onPermissionsCleared(PermissionsManager manager); | |
| 44 | - | |
| 45 | - /** | |
| 46 | - * Called when the permissions are changed (eg. when new permissions are received from the server) | |
| 47 | - * | |
| 48 | - * @param manager | |
| 49 | - */ | |
| 50 | - public abstract void onPermissionsChanged(PermissionsManager manager); | |
| 51 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +import com.mumfrey.liteloader.permissions.PermissionsManager; | |
| 4 | +import com.mumfrey.liteloader.permissions.PermissionsManagerClient; | |
| 5 | + | |
| 6 | +/** | |
| 7 | + * Interface for mods which use the ClientPermissions system | |
| 8 | + * | |
| 9 | + * @author Adam Mummery-Smith | |
| 10 | + */ | |
| 11 | +public interface Permissible extends LiteMod | |
| 12 | +{ | |
| 13 | + /** | |
| 14 | + * Returns the node name of the mod, replicated permissions will be of the form mod.<name>.permission.node so this | |
| 15 | + * method must return a valid name for use in permission nodes. This method must also return the same value every | |
| 16 | + * time it is called since permissible names are not necessarily cached. | |
| 17 | + * | |
| 18 | + * @return Permissible name | |
| 19 | + */ | |
| 20 | + public abstract String getPermissibleModName(); | |
| 21 | + | |
| 22 | + /** | |
| 23 | + * The mod version to replicate to the server | |
| 24 | + * | |
| 25 | + * @return Mod version as a float | |
| 26 | + */ | |
| 27 | + public abstract float getPermissibleModVersion(); | |
| 28 | + | |
| 29 | + /** | |
| 30 | + * Called by the permissions manager at initialisation to instruct the mod to populate the list of permissions it | |
| 31 | + * supports. This method should call back against the supplied permissions manager to register the permissions to | |
| 32 | + * be sent to the server when connecting. | |
| 33 | + * | |
| 34 | + * @param permissionsManager Client permissions manager | |
| 35 | + */ | |
| 36 | + public abstract void registerPermissions(PermissionsManagerClient permissionsManager); | |
| 37 | + | |
| 38 | + /** | |
| 39 | + * Called when the permissions set is cleared | |
| 40 | + * | |
| 41 | + * @param manager | |
| 42 | + */ | |
| 43 | + public abstract void onPermissionsCleared(PermissionsManager manager); | |
| 44 | + | |
| 45 | + /** | |
| 46 | + * Called when the permissions are changed (eg. when new permissions are received from the server) | |
| 47 | + * | |
| 48 | + * @param manager | |
| 49 | + */ | |
| 50 | + public abstract void onPermissionsChanged(PermissionsManager manager); | |
| 51 | +} | ... | ... |
java/common/com/mumfrey/liteloader/PlayerInteractionListener.java renamed to src/main/java/com/mumfrey/liteloader/PlayerInteractionListener.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -import net.minecraft.entity.player.EntityPlayerMP; | |
| 4 | -import net.minecraft.util.BlockPos; | |
| 5 | -import net.minecraft.util.EnumFacing; | |
| 6 | -import net.minecraft.util.MovingObjectPosition.MovingObjectType; | |
| 7 | - | |
| 8 | -/** | |
| 9 | - * Interface for mods which want to observe the player's "interaction" status (player mouse clicks), allows block interaction | |
| 10 | - * events to be cancelled. | |
| 11 | - * | |
| 12 | - * @author Adam Mummery-Smith | |
| 13 | - */ | |
| 14 | -public interface PlayerInteractionListener extends LiteMod | |
| 15 | -{ | |
| 16 | - /** | |
| 17 | - * Mouse buttons | |
| 18 | - */ | |
| 19 | - public static enum MouseButton | |
| 20 | - { | |
| 21 | - LEFT, | |
| 22 | - RIGHT | |
| 23 | - } | |
| 24 | - | |
| 25 | - /** | |
| 26 | - * Called when the player clicks but does not "hit" a block, the trace position is raytraced to the player's current view | |
| 27 | - * distance and represents the block which the player is "looking at". This method is NOT called when the player right clicks | |
| 28 | - * with an empty hand. | |
| 29 | - * | |
| 30 | - * @param player Player | |
| 31 | - * @param button Mouse button the user clicked | |
| 32 | - * @param tracePos Raytraced location of the block which was hit | |
| 33 | - * @param traceSideHit Raytraced side hit | |
| 34 | - * @param traceHitType Type of hit, will be MISS if the trace expired without hitting anything (eg. the player clicked the sky) | |
| 35 | - */ | |
| 36 | - public abstract void onPlayerClickedAir(EntityPlayerMP player, MouseButton button, BlockPos tracePos, EnumFacing traceSideHit, MovingObjectType traceHitType); | |
| 37 | - | |
| 38 | - /** | |
| 39 | - * Calls when the player clicks and hits a block, usually indicates that the player is digging or placing a block, although | |
| 40 | - * a block placement does not necessarily succeed. Return true from this callback to allow the action to proceed, or false to | |
| 41 | - * cancel the action. Cancelling the action does not prevent further handlers from receiving the event. | |
| 42 | - * | |
| 43 | - * @param player Player | |
| 44 | - * @param button Mouse button that was pressed (left = dig, right = interact/place) | |
| 45 | - * @param hitPos Block which was *hit*. Note that block placement will normally be at hitPos.offset(sideHit) | |
| 46 | - * @param sideHit Side of the block which was hit | |
| 47 | - * @return true to allow the action to be processed (another listener may still inhibit the action), return false to cancel the action (other listeners will still be notified) | |
| 48 | - */ | |
| 49 | - public abstract boolean onPlayerClickedBlock(EntityPlayerMP player, MouseButton button, BlockPos hitPos, EnumFacing sideHit); | |
| 50 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +import net.minecraft.entity.player.EntityPlayerMP; | |
| 4 | +import net.minecraft.util.BlockPos; | |
| 5 | +import net.minecraft.util.EnumFacing; | |
| 6 | +import net.minecraft.util.MovingObjectPosition.MovingObjectType; | |
| 7 | + | |
| 8 | +/** | |
| 9 | + * Interface for mods which want to observe the player's "interaction" status (player mouse clicks), allows block interaction | |
| 10 | + * events to be cancelled. | |
| 11 | + * | |
| 12 | + * @author Adam Mummery-Smith | |
| 13 | + */ | |
| 14 | +public interface PlayerInteractionListener extends LiteMod | |
| 15 | +{ | |
| 16 | + /** | |
| 17 | + * Mouse buttons | |
| 18 | + */ | |
| 19 | + public static enum MouseButton | |
| 20 | + { | |
| 21 | + LEFT, | |
| 22 | + RIGHT | |
| 23 | + } | |
| 24 | + | |
| 25 | + /** | |
| 26 | + * Called when the player clicks but does not "hit" a block, the trace position is raytraced to the player's current view | |
| 27 | + * distance and represents the block which the player is "looking at". This method is NOT called when the player right clicks | |
| 28 | + * with an empty hand. | |
| 29 | + * | |
| 30 | + * @param player Player | |
| 31 | + * @param button Mouse button the user clicked | |
| 32 | + * @param tracePos Raytraced location of the block which was hit | |
| 33 | + * @param traceSideHit Raytraced side hit | |
| 34 | + * @param traceHitType Type of hit, will be MISS if the trace expired without hitting anything (eg. the player clicked the sky) | |
| 35 | + */ | |
| 36 | + public abstract void onPlayerClickedAir(EntityPlayerMP player, MouseButton button, BlockPos tracePos, EnumFacing traceSideHit, MovingObjectType traceHitType); | |
| 37 | + | |
| 38 | + /** | |
| 39 | + * Calls when the player clicks and hits a block, usually indicates that the player is digging or placing a block, although | |
| 40 | + * a block placement does not necessarily succeed. Return true from this callback to allow the action to proceed, or false to | |
| 41 | + * cancel the action. Cancelling the action does not prevent further handlers from receiving the event. | |
| 42 | + * | |
| 43 | + * @param player Player | |
| 44 | + * @param button Mouse button that was pressed (left = dig, right = interact/place) | |
| 45 | + * @param hitPos Block which was *hit*. Note that block placement will normally be at hitPos.offset(sideHit) | |
| 46 | + * @param sideHit Side of the block which was hit | |
| 47 | + * @return true to allow the action to be processed (another listener may still inhibit the action), return false to cancel the action (other listeners will still be notified) | |
| 48 | + */ | |
| 49 | + public abstract boolean onPlayerClickedBlock(EntityPlayerMP player, MouseButton button, BlockPos hitPos, EnumFacing sideHit); | |
| 50 | +} | ... | ... |
java/common/com/mumfrey/liteloader/PlayerMoveListener.java renamed to src/main/java/com/mumfrey/liteloader/PlayerMoveListener.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -import net.minecraft.entity.player.EntityPlayerMP; | |
| 4 | - | |
| 5 | -import com.mumfrey.liteloader.core.LiteLoaderEventBroker.ReturnValue; | |
| 6 | -import com.mumfrey.liteloader.util.Position; | |
| 7 | - | |
| 8 | -/** | |
| 9 | - * Interface for mods which want to monitor or control player movements | |
| 10 | - * | |
| 11 | - * @author Adam Mummery-Smith | |
| 12 | - */ | |
| 13 | -public interface PlayerMoveListener extends LiteMod | |
| 14 | -{ | |
| 15 | - /** | |
| 16 | - * Called when a movement/look packet is received from the client. | |
| 17 | - * | |
| 18 | - * @param playerMP Player moving | |
| 19 | - * @param from Player's previous recorded position | |
| 20 | - * @param to Position the player is attempting to move to | |
| 21 | - * @param newPos Set this position to teleport the player to newPos instead of processing the original move | |
| 22 | - * | |
| 23 | - * @return false to cancel the event or true to allow the movement to be processed as normal or newPos to be applied | |
| 24 | - */ | |
| 25 | - public abstract boolean onPlayerMove(EntityPlayerMP playerMP, Position from, Position to, ReturnValue<Position> newPos); | |
| 26 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +import net.minecraft.entity.player.EntityPlayerMP; | |
| 4 | + | |
| 5 | +import com.mumfrey.liteloader.core.LiteLoaderEventBroker.ReturnValue; | |
| 6 | +import com.mumfrey.liteloader.util.Position; | |
| 7 | + | |
| 8 | +/** | |
| 9 | + * Interface for mods which want to monitor or control player movements | |
| 10 | + * | |
| 11 | + * @author Adam Mummery-Smith | |
| 12 | + */ | |
| 13 | +public interface PlayerMoveListener extends LiteMod | |
| 14 | +{ | |
| 15 | + /** | |
| 16 | + * Called when a movement/look packet is received from the client. | |
| 17 | + * | |
| 18 | + * @param playerMP Player moving | |
| 19 | + * @param from Player's previous recorded position | |
| 20 | + * @param to Position the player is attempting to move to | |
| 21 | + * @param newPos Set this position to teleport the player to newPos instead of processing the original move | |
| 22 | + * | |
| 23 | + * @return false to cancel the event or true to allow the movement to be processed as normal or newPos to be applied | |
| 24 | + */ | |
| 25 | + public abstract boolean onPlayerMove(EntityPlayerMP playerMP, Position from, Position to, ReturnValue<Position> newPos); | |
| 26 | +} | ... | ... |
java/common/com/mumfrey/liteloader/PluginChannelListener.java renamed to src/main/java/com/mumfrey/liteloader/PluginChannelListener.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -import net.minecraft.network.PacketBuffer; | |
| 4 | - | |
| 5 | -import com.mumfrey.liteloader.core.CommonPluginChannelListener; | |
| 6 | - | |
| 7 | -/** | |
| 8 | - * Interface for mods which want to use plugin channels | |
| 9 | - * | |
| 10 | - * @author Adam Mummery-Smith | |
| 11 | - */ | |
| 12 | -public interface PluginChannelListener extends LiteMod, CommonPluginChannelListener | |
| 13 | -{ | |
| 14 | - /** | |
| 15 | - * Called when a custom payload packet arrives on a channel this mod has registered | |
| 16 | - * | |
| 17 | - * @param channel Channel on which the custom payload was received | |
| 18 | - * @param data Custom payload data | |
| 19 | - */ | |
| 20 | - public abstract void onCustomPayload(String channel, PacketBuffer data); | |
| 21 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +import net.minecraft.network.PacketBuffer; | |
| 4 | + | |
| 5 | +import com.mumfrey.liteloader.core.CommonPluginChannelListener; | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * Interface for mods which want to use plugin channels | |
| 9 | + * | |
| 10 | + * @author Adam Mummery-Smith | |
| 11 | + */ | |
| 12 | +public interface PluginChannelListener extends LiteMod, CommonPluginChannelListener | |
| 13 | +{ | |
| 14 | + /** | |
| 15 | + * Called when a custom payload packet arrives on a channel this mod has registered | |
| 16 | + * | |
| 17 | + * @param channel Channel on which the custom payload was received | |
| 18 | + * @param data Custom payload data | |
| 19 | + */ | |
| 20 | + public abstract void onCustomPayload(String channel, PacketBuffer data); | |
| 21 | +} | ... | ... |
java/common/com/mumfrey/liteloader/PreJoinGameListener.java renamed to src/main/java/com/mumfrey/liteloader/PreJoinGameListener.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -import net.minecraft.network.INetHandler; | |
| 4 | -import net.minecraft.network.play.server.S01PacketJoinGame; | |
| 5 | - | |
| 6 | - | |
| 7 | -/** | |
| 8 | - * Interface for mods which wish to be notified when the player connects to a server (or local game) | |
| 9 | - * | |
| 10 | - * @author Adam Mummery-Smith | |
| 11 | - */ | |
| 12 | -public interface PreJoinGameListener extends LiteMod | |
| 13 | -{ | |
| 14 | - /** | |
| 15 | - * Called before login. NOTICE: as of 1.8 the return value of this method has a different meaning! | |
| 16 | - * | |
| 17 | - * @param netHandler Net handler | |
| 18 | - * @param joinGamePacket Join game packet | |
| 19 | - * | |
| 20 | - * @return true to allow login to continue, false to cancel login | |
| 21 | - */ | |
| 22 | - public abstract boolean onPreJoinGame(INetHandler netHandler, S01PacketJoinGame joinGamePacket); | |
| 23 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +import net.minecraft.network.INetHandler; | |
| 4 | +import net.minecraft.network.play.server.S01PacketJoinGame; | |
| 5 | + | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * Interface for mods which wish to be notified when the player connects to a server (or local game) | |
| 9 | + * | |
| 10 | + * @author Adam Mummery-Smith | |
| 11 | + */ | |
| 12 | +public interface PreJoinGameListener extends LiteMod | |
| 13 | +{ | |
| 14 | + /** | |
| 15 | + * Called before login. NOTICE: as of 1.8 the return value of this method has a different meaning! | |
| 16 | + * | |
| 17 | + * @param netHandler Net handler | |
| 18 | + * @param joinGamePacket Join game packet | |
| 19 | + * | |
| 20 | + * @return true to allow login to continue, false to cancel login | |
| 21 | + */ | |
| 22 | + public abstract boolean onPreJoinGame(INetHandler netHandler, S01PacketJoinGame joinGamePacket); | |
| 23 | +} | ... | ... |
java/common/com/mumfrey/liteloader/Priority.java renamed to src/main/java/com/mumfrey/liteloader/Priority.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -import java.lang.annotation.ElementType; | |
| 4 | -import java.lang.annotation.Retention; | |
| 5 | -import java.lang.annotation.RetentionPolicy; | |
| 6 | -import java.lang.annotation.Target; | |
| 7 | - | |
| 8 | -/** | |
| 9 | - * Priority declaration for LiteMods, used when sorting listener lists. Default value if no Priority annotation | |
| 10 | - * is specified is 1000. | |
| 11 | - * | |
| 12 | - * @author Adam Mummery-Smith | |
| 13 | - */ | |
| 14 | -@Target(ElementType.TYPE) | |
| 15 | -@Retention(RetentionPolicy.RUNTIME) | |
| 16 | -public @interface Priority | |
| 17 | -{ | |
| 18 | - /** | |
| 19 | - * Priority value, default priority is 1000 | |
| 20 | - */ | |
| 21 | - public int value(); | |
| 22 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +import java.lang.annotation.ElementType; | |
| 4 | +import java.lang.annotation.Retention; | |
| 5 | +import java.lang.annotation.RetentionPolicy; | |
| 6 | +import java.lang.annotation.Target; | |
| 7 | + | |
| 8 | +/** | |
| 9 | + * Priority declaration for LiteMods, used when sorting listener lists. Default value if no Priority annotation | |
| 10 | + * is specified is 1000. | |
| 11 | + * | |
| 12 | + * @author Adam Mummery-Smith | |
| 13 | + */ | |
| 14 | +@Target(ElementType.TYPE) | |
| 15 | +@Retention(RetentionPolicy.RUNTIME) | |
| 16 | +public @interface Priority | |
| 17 | +{ | |
| 18 | + /** | |
| 19 | + * Priority value, default priority is 1000 | |
| 20 | + */ | |
| 21 | + public int value(); | |
| 22 | +} | ... | ... |
java/common/com/mumfrey/liteloader/ServerChatFilter.java renamed to src/main/java/com/mumfrey/liteloader/ServerChatFilter.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -import net.minecraft.entity.player.EntityPlayerMP; | |
| 4 | -import net.minecraft.network.play.client.C01PacketChatMessage; | |
| 5 | - | |
| 6 | -/** | |
| 7 | - * Interface for mods which can filter inbound chat | |
| 8 | - * | |
| 9 | - * @author Adam Mummery-Smith | |
| 10 | - */ | |
| 11 | -public interface ServerChatFilter extends LiteMod | |
| 12 | -{ | |
| 13 | - /** | |
| 14 | - * Chat filter function, return false to filter this packet, true to pass the packet | |
| 15 | - * | |
| 16 | - * @param chatPacket Chat packet to examine | |
| 17 | - * @param message Chat message | |
| 18 | - * @return True to keep the packet, false to discard | |
| 19 | - */ | |
| 20 | - public abstract boolean onChat(EntityPlayerMP player, C01PacketChatMessage chatPacket, String message); | |
| 21 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +import net.minecraft.entity.player.EntityPlayerMP; | |
| 4 | +import net.minecraft.network.play.client.C01PacketChatMessage; | |
| 5 | + | |
| 6 | +/** | |
| 7 | + * Interface for mods which can filter inbound chat | |
| 8 | + * | |
| 9 | + * @author Adam Mummery-Smith | |
| 10 | + */ | |
| 11 | +public interface ServerChatFilter extends LiteMod | |
| 12 | +{ | |
| 13 | + /** | |
| 14 | + * Chat filter function, return false to filter this packet, true to pass the packet | |
| 15 | + * | |
| 16 | + * @param chatPacket Chat packet to examine | |
| 17 | + * @param message Chat message | |
| 18 | + * @return True to keep the packet, false to discard | |
| 19 | + */ | |
| 20 | + public abstract boolean onChat(EntityPlayerMP player, C01PacketChatMessage chatPacket, String message); | |
| 21 | +} | ... | ... |
java/common/com/mumfrey/liteloader/ServerCommandProvider.java renamed to src/main/java/com/mumfrey/liteloader/ServerCommandProvider.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -import net.minecraft.command.ServerCommandManager; | |
| 4 | - | |
| 5 | - | |
| 6 | -/** | |
| 7 | - * Interface for mods which provide commands to the local integrated server | |
| 8 | - * | |
| 9 | - * @author Adam Mummery-Smith | |
| 10 | - */ | |
| 11 | -public interface ServerCommandProvider extends LiteMod | |
| 12 | -{ | |
| 13 | - /** | |
| 14 | - * Allows the mod to provide commands to the server command manager my invoking commandManager.registerCommand() to | |
| 15 | - * provide new commands for single player and lan worlds | |
| 16 | - * | |
| 17 | - * @param commandManager | |
| 18 | - */ | |
| 19 | - public abstract void provideCommands(ServerCommandManager commandManager); | |
| 20 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +import net.minecraft.command.ServerCommandManager; | |
| 4 | + | |
| 5 | + | |
| 6 | +/** | |
| 7 | + * Interface for mods which provide commands to the local integrated server | |
| 8 | + * | |
| 9 | + * @author Adam Mummery-Smith | |
| 10 | + */ | |
| 11 | +public interface ServerCommandProvider extends LiteMod | |
| 12 | +{ | |
| 13 | + /** | |
| 14 | + * Allows the mod to provide commands to the server command manager my invoking commandManager.registerCommand() to | |
| 15 | + * provide new commands for single player and lan worlds | |
| 16 | + * | |
| 17 | + * @param commandManager | |
| 18 | + */ | |
| 19 | + public abstract void provideCommands(ServerCommandManager commandManager); | |
| 20 | +} | ... | ... |
java/common/com/mumfrey/liteloader/ServerPlayerListener.java renamed to src/main/java/com/mumfrey/liteloader/ServerPlayerListener.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -import net.minecraft.entity.player.EntityPlayerMP; | |
| 4 | - | |
| 5 | -import com.mojang.authlib.GameProfile; | |
| 6 | - | |
| 7 | -/** | |
| 8 | - * Interface for mods which want to handle players joining and leaving a LAN game (or single player game) | |
| 9 | - * | |
| 10 | - * @author Adam Mummery-Smith | |
| 11 | - */ | |
| 12 | -public interface ServerPlayerListener extends LiteMod | |
| 13 | -{ | |
| 14 | - /** | |
| 15 | - * Called when a player connects to the server and the EntityPlayerMP instance is created, the player has not logged | |
| 16 | - * in at this point and may be disconnected if login fails | |
| 17 | - * | |
| 18 | - * @param player Player attempting to connect | |
| 19 | - * @param profile Player's GameProfile from the authentication service | |
| 20 | - */ | |
| 21 | - public abstract void onPlayerConnect(EntityPlayerMP player, GameProfile profile); | |
| 22 | - | |
| 23 | - /** | |
| 24 | - * Called once the player has successfully logged in and all player variables are initialised and replicated | |
| 25 | - * | |
| 26 | - * @param player Player connected | |
| 27 | - */ | |
| 28 | - public abstract void onPlayerLoggedIn(EntityPlayerMP player); | |
| 29 | - | |
| 30 | - /** | |
| 31 | - * Called when a player respawns. This event is raised when a player respawns after dying or conquers the end | |
| 32 | - * | |
| 33 | - * @param player New player instance | |
| 34 | - * @param oldPlayer Old player instance being discarded | |
| 35 | - * @param newDimension Dimension the player is respawning in | |
| 36 | - * @param playerWonTheGame True if the player conquered the end (this respawn is NOT as the result of a death) | |
| 37 | - */ | |
| 38 | - public abstract void onPlayerRespawn(EntityPlayerMP player, EntityPlayerMP oldPlayer, int newDimension, boolean playerWonTheGame); | |
| 39 | - | |
| 40 | - /** | |
| 41 | - * Called when a player disconnects from the game | |
| 42 | - * | |
| 43 | - * @param player Player disconnecting | |
| 44 | - */ | |
| 45 | - public abstract void onPlayerLogout(EntityPlayerMP player); | |
| 46 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +import net.minecraft.entity.player.EntityPlayerMP; | |
| 4 | + | |
| 5 | +import com.mojang.authlib.GameProfile; | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * Interface for mods which want to handle players joining and leaving a LAN game (or single player game) | |
| 9 | + * | |
| 10 | + * @author Adam Mummery-Smith | |
| 11 | + */ | |
| 12 | +public interface ServerPlayerListener extends LiteMod | |
| 13 | +{ | |
| 14 | + /** | |
| 15 | + * Called when a player connects to the server and the EntityPlayerMP instance is created, the player has not logged | |
| 16 | + * in at this point and may be disconnected if login fails | |
| 17 | + * | |
| 18 | + * @param player Player attempting to connect | |
| 19 | + * @param profile Player's GameProfile from the authentication service | |
| 20 | + */ | |
| 21 | + public abstract void onPlayerConnect(EntityPlayerMP player, GameProfile profile); | |
| 22 | + | |
| 23 | + /** | |
| 24 | + * Called once the player has successfully logged in and all player variables are initialised and replicated | |
| 25 | + * | |
| 26 | + * @param player Player connected | |
| 27 | + */ | |
| 28 | + public abstract void onPlayerLoggedIn(EntityPlayerMP player); | |
| 29 | + | |
| 30 | + /** | |
| 31 | + * Called when a player respawns. This event is raised when a player respawns after dying or conquers the end | |
| 32 | + * | |
| 33 | + * @param player New player instance | |
| 34 | + * @param oldPlayer Old player instance being discarded | |
| 35 | + * @param newDimension Dimension the player is respawning in | |
| 36 | + * @param playerWonTheGame True if the player conquered the end (this respawn is NOT as the result of a death) | |
| 37 | + */ | |
| 38 | + public abstract void onPlayerRespawn(EntityPlayerMP player, EntityPlayerMP oldPlayer, int newDimension, boolean playerWonTheGame); | |
| 39 | + | |
| 40 | + /** | |
| 41 | + * Called when a player disconnects from the game | |
| 42 | + * | |
| 43 | + * @param player Player disconnecting | |
| 44 | + */ | |
| 45 | + public abstract void onPlayerLogout(EntityPlayerMP player); | |
| 46 | +} | ... | ... |
java/common/com/mumfrey/liteloader/ServerPluginChannelListener.java renamed to src/main/java/com/mumfrey/liteloader/ServerPluginChannelListener.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -import net.minecraft.entity.player.EntityPlayerMP; | |
| 4 | -import net.minecraft.network.PacketBuffer; | |
| 5 | - | |
| 6 | -import com.mumfrey.liteloader.core.CommonPluginChannelListener; | |
| 7 | - | |
| 8 | -/** | |
| 9 | - * Interface for mods which want to use plugin channels on the (integrated) server side | |
| 10 | - * | |
| 11 | - * @author Adam Mummery-Smith | |
| 12 | - */ | |
| 13 | -public interface ServerPluginChannelListener extends CommonPluginChannelListener | |
| 14 | -{ | |
| 15 | - /** | |
| 16 | - * Called when a custom payload packet arrives on a channel this mod has registered | |
| 17 | - * | |
| 18 | - * @param sender Player object which is the source of this message | |
| 19 | - * @param channel Channel on which the custom payload was received | |
| 20 | - * @param data Custom payload data | |
| 21 | - */ | |
| 22 | - public abstract void onCustomPayload(EntityPlayerMP sender, String channel, PacketBuffer data); | |
| 23 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +import net.minecraft.entity.player.EntityPlayerMP; | |
| 4 | +import net.minecraft.network.PacketBuffer; | |
| 5 | + | |
| 6 | +import com.mumfrey.liteloader.core.CommonPluginChannelListener; | |
| 7 | + | |
| 8 | +/** | |
| 9 | + * Interface for mods which want to use plugin channels on the (integrated) server side | |
| 10 | + * | |
| 11 | + * @author Adam Mummery-Smith | |
| 12 | + */ | |
| 13 | +public interface ServerPluginChannelListener extends CommonPluginChannelListener | |
| 14 | +{ | |
| 15 | + /** | |
| 16 | + * Called when a custom payload packet arrives on a channel this mod has registered | |
| 17 | + * | |
| 18 | + * @param sender Player object which is the source of this message | |
| 19 | + * @param channel Channel on which the custom payload was received | |
| 20 | + * @param data Custom payload data | |
| 21 | + */ | |
| 22 | + public abstract void onCustomPayload(EntityPlayerMP sender, String channel, PacketBuffer data); | |
| 23 | +} | ... | ... |
java/common/com/mumfrey/liteloader/ServerTickable.java renamed to src/main/java/com/mumfrey/liteloader/ServerTickable.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -import net.minecraft.server.MinecraftServer; | |
| 4 | - | |
| 5 | -/** | |
| 6 | - * Interface for mods which want to be ticked on the server thread | |
| 7 | - * | |
| 8 | - * @author Adam Mummery-Smith | |
| 9 | - */ | |
| 10 | -public interface ServerTickable extends LiteMod | |
| 11 | -{ | |
| 12 | - /** | |
| 13 | - * Called at the start of every server update tick | |
| 14 | - * | |
| 15 | - * @param server | |
| 16 | - */ | |
| 17 | - public abstract void onTick(MinecraftServer server); | |
| 18 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +import net.minecraft.server.MinecraftServer; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * Interface for mods which want to be ticked on the server thread | |
| 7 | + * | |
| 8 | + * @author Adam Mummery-Smith | |
| 9 | + */ | |
| 10 | +public interface ServerTickable extends LiteMod | |
| 11 | +{ | |
| 12 | + /** | |
| 13 | + * Called at the start of every server update tick | |
| 14 | + * | |
| 15 | + * @param server | |
| 16 | + */ | |
| 17 | + public abstract void onTick(MinecraftServer server); | |
| 18 | +} | ... | ... |
java/common/com/mumfrey/liteloader/ShutdownListener.java renamed to src/main/java/com/mumfrey/liteloader/ShutdownListener.java
| 1 | -package com.mumfrey.liteloader; | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * Interface for mods that want to receive an event when the game is shutting down due to a user request. They do | |
| 5 | - * not receive the callback when the VM is terminating for other reasons, use a regular VM shutdownhook for that. | |
| 6 | - * | |
| 7 | - * @author Adam Mummery-Smith | |
| 8 | - */ | |
| 9 | -public interface ShutdownListener extends LiteMod | |
| 10 | -{ | |
| 11 | - public abstract void onShutDown(); | |
| 12 | -} | |
| 1 | +package com.mumfrey.liteloader; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * Interface for mods that want to receive an event when the game is shutting down due to a user request. They do | |
| 5 | + * not receive the callback when the VM is terminating for other reasons, use a regular VM shutdownhook for that. | |
| 6 | + * | |
| 7 | + * @author Adam Mummery-Smith | |
| 8 | + */ | |
| 9 | +public interface ShutdownListener extends LiteMod | |
| 10 | +{ | |
| 11 | + public abstract void onShutDown(); | |
| 12 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/BrandingProvider.java renamed to src/main/java/com/mumfrey/liteloader/api/BrandingProvider.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -import java.net.URI; | |
| 4 | - | |
| 5 | -import net.minecraft.util.ResourceLocation; | |
| 6 | - | |
| 7 | -import com.mumfrey.liteloader.util.render.Icon; | |
| 8 | - | |
| 9 | -/** | |
| 10 | - * LiteLoader Extensible API - Branding Provider | |
| 11 | - * | |
| 12 | - * The Branding Provider manages loader branding alterations for a particular API. This is an optional | |
| 13 | - * API component which allows an API to specify customisations and additions to the loader environment | |
| 14 | - * in order to provide a more comfortable integration for the API. | |
| 15 | - * | |
| 16 | - * Since some branding options simply stack (like the API copyright notices for example) all APIs will | |
| 17 | - * be allowed to supply this information, however other options (like the main logo image) can only be | |
| 18 | - * set by one API. To determine which API should be used to set this information, the getPriority() | |
| 19 | - * method will be called and used to sort branding providers by priority, with highest priority winning. | |
| 20 | - * | |
| 21 | - * All branding options may return a null/not set value, allowing a branding provider to only override | |
| 22 | - * the branding features it wishes. Some options require a non-null value to be returned from a set of | |
| 23 | - * methods in order to take effect. eg. the logo option requires non-null return values from BOTH the | |
| 24 | - * getLogoResource() and getLogoCoords() methods. | |
| 25 | - * | |
| 26 | - * @author Adam Mummery-Smith | |
| 27 | - */ | |
| 28 | -public interface BrandingProvider extends CustomisationProvider | |
| 29 | -{ | |
| 30 | - /** | |
| 31 | - * Get the priority of this provider, higher numbers take precedence. Some brandings can only be set | |
| 32 | - * by one provider (eg. the main "about" logo) so the branding provider with the highest priority will | |
| 33 | - * be the one which gets control of that feature. | |
| 34 | - */ | |
| 35 | - public abstract int getPriority(); | |
| 36 | - | |
| 37 | - /** | |
| 38 | - * Get the primary branding colour for this API, the branding provider should return 0 if it | |
| 39 | - * does not wish to override the branding colour. The branding colour is used for the mod list | |
| 40 | - * entries and hyper-links within the about GUI panels, the colour returned should be fully opaque. | |
| 41 | - */ | |
| 42 | - public abstract int getBrandingColour(); | |
| 43 | - | |
| 44 | - /** | |
| 45 | - * Get the resource to use for the main logo, the API with the highest priority gets to define the | |
| 46 | - * logo, this method can return null if this API does not want to override the logo | |
| 47 | - */ | |
| 48 | - public abstract ResourceLocation getLogoResource(); | |
| 49 | - | |
| 50 | - /** | |
| 51 | - * Gets the coordinates of the logo as an IIcon instance, only called if getLogoResource() returns | |
| 52 | - * a non-null value and the logo will only be used if BOTH methods return a valid object. | |
| 53 | - */ | |
| 54 | - public abstract Icon getLogoCoords(); | |
| 55 | - | |
| 56 | - /** | |
| 57 | - * Get the resource to use for the icon logo (the chicken in the default setup), the API with the | |
| 58 | - * highest priority gets to define the icon logo, this method can return null if this API does not | |
| 59 | - * want to override the icon | |
| 60 | - */ | |
| 61 | - public abstract ResourceLocation getIconResource(); | |
| 62 | - | |
| 63 | - /** | |
| 64 | - * Gets the coordinates of the icon logo as an IIcon instance, only called if getIconResource() | |
| 65 | - * returns a non-null value and the icon will only be used if BOTH methods return a valid object. | |
| 66 | - */ | |
| 67 | - public abstract Icon getIconCoords(); | |
| 68 | - | |
| 69 | - /** | |
| 70 | - * Get the display name for this API, used on the "about" screen, must not return null | |
| 71 | - */ | |
| 72 | - public abstract String getDisplayName(); | |
| 73 | - | |
| 74 | - /** | |
| 75 | - * Get the copyright text for this API, used on the "about" screen, must not return null | |
| 76 | - */ | |
| 77 | - public abstract String getCopyrightText(); | |
| 78 | - | |
| 79 | - /** | |
| 80 | - * Get the main home page URL for this API, used on the "about" screen, must not return null | |
| 81 | - */ | |
| 82 | - public abstract URI getHomepage(); | |
| 83 | - | |
| 84 | - /** | |
| 85 | - * If you wish to display a clickable twitter icon next to the API information in the "about" panel | |
| 86 | - * then you must return values from this method as well as getTwitterAvatarResource() and | |
| 87 | - * getTwitterAvatarCoords(). Return the twitter user name here. | |
| 88 | - */ | |
| 89 | - public abstract String getTwitterUserName(); | |
| 90 | - | |
| 91 | - /** | |
| 92 | - * If you wish to display a clickable twitter icon next to the API information, return the icon | |
| 93 | - * resource here. | |
| 94 | - */ | |
| 95 | - public abstract ResourceLocation getTwitterAvatarResource(); | |
| 96 | - | |
| 97 | - /** | |
| 98 | - * If you wish to display a clickable twitter icon next to the API information, return the icon | |
| 99 | - * coordinates here. | |
| 100 | - */ | |
| 101 | - public abstract Icon getTwitterAvatarCoords(); | |
| 102 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +import java.net.URI; | |
| 4 | + | |
| 5 | +import net.minecraft.util.ResourceLocation; | |
| 6 | + | |
| 7 | +import com.mumfrey.liteloader.util.render.Icon; | |
| 8 | + | |
| 9 | +/** | |
| 10 | + * LiteLoader Extensible API - Branding Provider | |
| 11 | + * | |
| 12 | + * The Branding Provider manages loader branding alterations for a particular API. This is an optional | |
| 13 | + * API component which allows an API to specify customisations and additions to the loader environment | |
| 14 | + * in order to provide a more comfortable integration for the API. | |
| 15 | + * | |
| 16 | + * Since some branding options simply stack (like the API copyright notices for example) all APIs will | |
| 17 | + * be allowed to supply this information, however other options (like the main logo image) can only be | |
| 18 | + * set by one API. To determine which API should be used to set this information, the getPriority() | |
| 19 | + * method will be called and used to sort branding providers by priority, with highest priority winning. | |
| 20 | + * | |
| 21 | + * All branding options may return a null/not set value, allowing a branding provider to only override | |
| 22 | + * the branding features it wishes. Some options require a non-null value to be returned from a set of | |
| 23 | + * methods in order to take effect. eg. the logo option requires non-null return values from BOTH the | |
| 24 | + * getLogoResource() and getLogoCoords() methods. | |
| 25 | + * | |
| 26 | + * @author Adam Mummery-Smith | |
| 27 | + */ | |
| 28 | +public interface BrandingProvider extends CustomisationProvider | |
| 29 | +{ | |
| 30 | + /** | |
| 31 | + * Get the priority of this provider, higher numbers take precedence. Some brandings can only be set | |
| 32 | + * by one provider (eg. the main "about" logo) so the branding provider with the highest priority will | |
| 33 | + * be the one which gets control of that feature. | |
| 34 | + */ | |
| 35 | + public abstract int getPriority(); | |
| 36 | + | |
| 37 | + /** | |
| 38 | + * Get the primary branding colour for this API, the branding provider should return 0 if it | |
| 39 | + * does not wish to override the branding colour. The branding colour is used for the mod list | |
| 40 | + * entries and hyper-links within the about GUI panels, the colour returned should be fully opaque. | |
| 41 | + */ | |
| 42 | + public abstract int getBrandingColour(); | |
| 43 | + | |
| 44 | + /** | |
| 45 | + * Get the resource to use for the main logo, the API with the highest priority gets to define the | |
| 46 | + * logo, this method can return null if this API does not want to override the logo | |
| 47 | + */ | |
| 48 | + public abstract ResourceLocation getLogoResource(); | |
| 49 | + | |
| 50 | + /** | |
| 51 | + * Gets the coordinates of the logo as an IIcon instance, only called if getLogoResource() returns | |
| 52 | + * a non-null value and the logo will only be used if BOTH methods return a valid object. | |
| 53 | + */ | |
| 54 | + public abstract Icon getLogoCoords(); | |
| 55 | + | |
| 56 | + /** | |
| 57 | + * Get the resource to use for the icon logo (the chicken in the default setup), the API with the | |
| 58 | + * highest priority gets to define the icon logo, this method can return null if this API does not | |
| 59 | + * want to override the icon | |
| 60 | + */ | |
| 61 | + public abstract ResourceLocation getIconResource(); | |
| 62 | + | |
| 63 | + /** | |
| 64 | + * Gets the coordinates of the icon logo as an IIcon instance, only called if getIconResource() | |
| 65 | + * returns a non-null value and the icon will only be used if BOTH methods return a valid object. | |
| 66 | + */ | |
| 67 | + public abstract Icon getIconCoords(); | |
| 68 | + | |
| 69 | + /** | |
| 70 | + * Get the display name for this API, used on the "about" screen, must not return null | |
| 71 | + */ | |
| 72 | + public abstract String getDisplayName(); | |
| 73 | + | |
| 74 | + /** | |
| 75 | + * Get the copyright text for this API, used on the "about" screen, must not return null | |
| 76 | + */ | |
| 77 | + public abstract String getCopyrightText(); | |
| 78 | + | |
| 79 | + /** | |
| 80 | + * Get the main home page URL for this API, used on the "about" screen, must not return null | |
| 81 | + */ | |
| 82 | + public abstract URI getHomepage(); | |
| 83 | + | |
| 84 | + /** | |
| 85 | + * If you wish to display a clickable twitter icon next to the API information in the "about" panel | |
| 86 | + * then you must return values from this method as well as getTwitterAvatarResource() and | |
| 87 | + * getTwitterAvatarCoords(). Return the twitter user name here. | |
| 88 | + */ | |
| 89 | + public abstract String getTwitterUserName(); | |
| 90 | + | |
| 91 | + /** | |
| 92 | + * If you wish to display a clickable twitter icon next to the API information, return the icon | |
| 93 | + * resource here. | |
| 94 | + */ | |
| 95 | + public abstract ResourceLocation getTwitterAvatarResource(); | |
| 96 | + | |
| 97 | + /** | |
| 98 | + * If you wish to display a clickable twitter icon next to the API information, return the icon | |
| 99 | + * coordinates here. | |
| 100 | + */ | |
| 101 | + public abstract Icon getTwitterAvatarCoords(); | |
| 102 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/ContainerRegistry.java renamed to src/main/java/com/mumfrey/liteloader/api/ContainerRegistry.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -import java.io.File; | |
| 4 | -import java.util.Collection; | |
| 5 | - | |
| 6 | -import com.mumfrey.liteloader.core.ModInfo; | |
| 7 | -import com.mumfrey.liteloader.interfaces.Loadable; | |
| 8 | -import com.mumfrey.liteloader.interfaces.LoadableMod; | |
| 9 | -import com.mumfrey.liteloader.interfaces.TweakContainer; | |
| 10 | - | |
| 11 | -/** | |
| 12 | - * Registry for enabled, disabled, injected and bad containers | |
| 13 | - * | |
| 14 | - * @author Adam Mummery-Smith | |
| 15 | - */ | |
| 16 | -public interface ContainerRegistry | |
| 17 | -{ | |
| 18 | - public enum DisabledReason | |
| 19 | - { | |
| 20 | - UNKNOWN("Container %s is could not be loaded for UNKNOWN reason"), | |
| 21 | - USER_DISABLED("Container %s is disabled"), | |
| 22 | - MISSING_DEPENDENCY("Container %s is missing one or more dependencies"), | |
| 23 | - MISSING_API("Container %s is missing one or more required APIs"); | |
| 24 | - | |
| 25 | - private final String message; | |
| 26 | - | |
| 27 | - private DisabledReason(String message) | |
| 28 | - { | |
| 29 | - this.message = message; | |
| 30 | - } | |
| 31 | - | |
| 32 | - public String getMessage(LoadableMod<?> container) | |
| 33 | - { | |
| 34 | - return String.format(this.message, container); | |
| 35 | - } | |
| 36 | - } | |
| 37 | - | |
| 38 | - /** | |
| 39 | - * Register an enabled container, removes the container from the disabled containers list if present | |
| 40 | - */ | |
| 41 | - public abstract void registerEnabledContainer(LoadableMod<?> container); | |
| 42 | - | |
| 43 | - /** | |
| 44 | - * Get all enabled containers | |
| 45 | - */ | |
| 46 | - public abstract Collection<? extends LoadableMod<?>> getEnabledContainers(); | |
| 47 | - | |
| 48 | - /** | |
| 49 | - * Get a specific enabled container by id | |
| 50 | - */ | |
| 51 | - public abstract LoadableMod<?> getEnabledContainer(String identifier); | |
| 52 | - | |
| 53 | - /** | |
| 54 | - * Register a disabled container | |
| 55 | - */ | |
| 56 | - public abstract void registerDisabledContainer(LoadableMod<?> container, DisabledReason reason); | |
| 57 | - | |
| 58 | - /** | |
| 59 | - * Get all disabled containers | |
| 60 | - */ | |
| 61 | - public abstract Collection<? extends ModInfo<Loadable<?>>> getDisabledContainers(); | |
| 62 | - | |
| 63 | - /** | |
| 64 | - * Check whether a specific container is registered as disabled | |
| 65 | - */ | |
| 66 | - public abstract boolean isDisabledContainer(LoadableMod<?> container); | |
| 67 | - | |
| 68 | - /** | |
| 69 | - * Register a bad container | |
| 70 | - */ | |
| 71 | - public abstract void registerBadContainer(Loadable<?> container, String reason); | |
| 72 | - | |
| 73 | - /** | |
| 74 | - * Get all bad containers | |
| 75 | - */ | |
| 76 | - public abstract Collection<? extends ModInfo<Loadable<?>>> getBadContainers(); | |
| 77 | - | |
| 78 | - /** | |
| 79 | - * Register a candidate tweak container | |
| 80 | - */ | |
| 81 | - public abstract void registerTweakContainer(TweakContainer<File> container); | |
| 82 | - | |
| 83 | - /** | |
| 84 | - * Get all registered tweak containers | |
| 85 | - */ | |
| 86 | - public abstract Collection<TweakContainer<File>> getTweakContainers(); | |
| 87 | - | |
| 88 | - /** | |
| 89 | - * Register an injected tweak container | |
| 90 | - */ | |
| 91 | - public abstract void registerInjectedTweak(TweakContainer<File> container); | |
| 92 | - | |
| 93 | - /** | |
| 94 | - * Get all injected tweak containers | |
| 95 | - */ | |
| 96 | - public abstract Collection<? extends ModInfo<Loadable<?>>> getInjectedTweaks(); | |
| 97 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +import java.io.File; | |
| 4 | +import java.util.Collection; | |
| 5 | + | |
| 6 | +import com.mumfrey.liteloader.core.ModInfo; | |
| 7 | +import com.mumfrey.liteloader.interfaces.Loadable; | |
| 8 | +import com.mumfrey.liteloader.interfaces.LoadableMod; | |
| 9 | +import com.mumfrey.liteloader.interfaces.TweakContainer; | |
| 10 | + | |
| 11 | +/** | |
| 12 | + * Registry for enabled, disabled, injected and bad containers | |
| 13 | + * | |
| 14 | + * @author Adam Mummery-Smith | |
| 15 | + */ | |
| 16 | +public interface ContainerRegistry | |
| 17 | +{ | |
| 18 | + public enum DisabledReason | |
| 19 | + { | |
| 20 | + UNKNOWN("Container %s is could not be loaded for UNKNOWN reason"), | |
| 21 | + USER_DISABLED("Container %s is disabled"), | |
| 22 | + MISSING_DEPENDENCY("Container %s is missing one or more dependencies"), | |
| 23 | + MISSING_API("Container %s is missing one or more required APIs"); | |
| 24 | + | |
| 25 | + private final String message; | |
| 26 | + | |
| 27 | + private DisabledReason(String message) | |
| 28 | + { | |
| 29 | + this.message = message; | |
| 30 | + } | |
| 31 | + | |
| 32 | + public String getMessage(LoadableMod<?> container) | |
| 33 | + { | |
| 34 | + return String.format(this.message, container); | |
| 35 | + } | |
| 36 | + } | |
| 37 | + | |
| 38 | + /** | |
| 39 | + * Register an enabled container, removes the container from the disabled containers list if present | |
| 40 | + */ | |
| 41 | + public abstract void registerEnabledContainer(LoadableMod<?> container); | |
| 42 | + | |
| 43 | + /** | |
| 44 | + * Get all enabled containers | |
| 45 | + */ | |
| 46 | + public abstract Collection<? extends LoadableMod<?>> getEnabledContainers(); | |
| 47 | + | |
| 48 | + /** | |
| 49 | + * Get a specific enabled container by id | |
| 50 | + */ | |
| 51 | + public abstract LoadableMod<?> getEnabledContainer(String identifier); | |
| 52 | + | |
| 53 | + /** | |
| 54 | + * Register a disabled container | |
| 55 | + */ | |
| 56 | + public abstract void registerDisabledContainer(LoadableMod<?> container, DisabledReason reason); | |
| 57 | + | |
| 58 | + /** | |
| 59 | + * Get all disabled containers | |
| 60 | + */ | |
| 61 | + public abstract Collection<? extends ModInfo<Loadable<?>>> getDisabledContainers(); | |
| 62 | + | |
| 63 | + /** | |
| 64 | + * Check whether a specific container is registered as disabled | |
| 65 | + */ | |
| 66 | + public abstract boolean isDisabledContainer(LoadableMod<?> container); | |
| 67 | + | |
| 68 | + /** | |
| 69 | + * Register a bad container | |
| 70 | + */ | |
| 71 | + public abstract void registerBadContainer(Loadable<?> container, String reason); | |
| 72 | + | |
| 73 | + /** | |
| 74 | + * Get all bad containers | |
| 75 | + */ | |
| 76 | + public abstract Collection<? extends ModInfo<Loadable<?>>> getBadContainers(); | |
| 77 | + | |
| 78 | + /** | |
| 79 | + * Register a candidate tweak container | |
| 80 | + */ | |
| 81 | + public abstract void registerTweakContainer(TweakContainer<File> container); | |
| 82 | + | |
| 83 | + /** | |
| 84 | + * Get all registered tweak containers | |
| 85 | + */ | |
| 86 | + public abstract Collection<TweakContainer<File>> getTweakContainers(); | |
| 87 | + | |
| 88 | + /** | |
| 89 | + * Register an injected tweak container | |
| 90 | + */ | |
| 91 | + public abstract void registerInjectedTweak(TweakContainer<File> container); | |
| 92 | + | |
| 93 | + /** | |
| 94 | + * Get all injected tweak containers | |
| 95 | + */ | |
| 96 | + public abstract Collection<? extends ModInfo<Loadable<?>>> getInjectedTweaks(); | |
| 97 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/CoreProvider.java renamed to src/main/java/com/mumfrey/liteloader/api/CoreProvider.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -import net.minecraft.network.INetHandler; | |
| 4 | -import net.minecraft.network.play.server.S01PacketJoinGame; | |
| 5 | - | |
| 6 | -import com.mumfrey.liteloader.common.GameEngine; | |
| 7 | -import com.mumfrey.liteloader.core.LiteLoaderMods; | |
| 8 | - | |
| 9 | -/** | |
| 10 | - * LiteLoader Extensible API - API Core Provider | |
| 11 | - * | |
| 12 | - * Core Providers are objects whose lifecycle is equivalent to the run time of game and thus the entire | |
| 13 | - * lifecycle of your API, they are instanced early in the loader startup process. CoreProviders can implement | |
| 14 | - * any Observer interface as appropriate and are automatically considered when allocating Observers to | |
| 15 | - * callback lists | |
| 16 | - * | |
| 17 | - * @author Adam Mummery-Smith | |
| 18 | - */ | |
| 19 | -public interface CoreProvider extends TickObserver, WorldObserver, ShutdownObserver, PostRenderObserver | |
| 20 | -{ | |
| 21 | - public abstract void onInit(); | |
| 22 | - | |
| 23 | - /** | |
| 24 | - * During the postInit phase, the mods which were discovered during preInit phase are initialised and the | |
| 25 | - * interfaces are allocated. This callback is invoked at the very start of the postInit phase, before mods | |
| 26 | - * are initialised but after the point at which it is safe to assume it's ok to access game classes. This | |
| 27 | - * is the first point at which the Minecraft game instance should be referenced. Be aware that certain game | |
| 28 | - * classes (such as the EntityRenderer) are NOT initialised at this point. | |
| 29 | - * | |
| 30 | - * @param engine | |
| 31 | - */ | |
| 32 | - public abstract void onPostInit(GameEngine<?, ?> engine); | |
| 33 | - | |
| 34 | - /** | |
| 35 | - * Once the mods are initialised and the interfaces have been allocated, this callback is invoked to allow | |
| 36 | - * the CoreProvider to perform any tasks which should be performed in the postInit phase but after mods | |
| 37 | - * have been initialised. | |
| 38 | - * | |
| 39 | - * @param mods | |
| 40 | - */ | |
| 41 | - public abstract void onPostInitComplete(LiteLoaderMods mods); | |
| 42 | - | |
| 43 | - /** | |
| 44 | - * Called once startup is complete and the game loop begins running. This callback is invoked immediately | |
| 45 | - * prior to the first "tick" event and immediately AFTER the the "late init" phase for mods (InitCompleteListener) | |
| 46 | - */ | |
| 47 | - public abstract void onStartupComplete(); | |
| 48 | - | |
| 49 | - /** | |
| 50 | - * Called immediately on joining a single or multi-player world when the JoinGame packet is received. Only called on the client. | |
| 51 | - * | |
| 52 | - * @param netHandler | |
| 53 | - * @param loginPacket | |
| 54 | - */ | |
| 55 | - public abstract void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket); | |
| 56 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +import net.minecraft.network.INetHandler; | |
| 4 | +import net.minecraft.network.play.server.S01PacketJoinGame; | |
| 5 | + | |
| 6 | +import com.mumfrey.liteloader.common.GameEngine; | |
| 7 | +import com.mumfrey.liteloader.core.LiteLoaderMods; | |
| 8 | + | |
| 9 | +/** | |
| 10 | + * LiteLoader Extensible API - API Core Provider | |
| 11 | + * | |
| 12 | + * Core Providers are objects whose lifecycle is equivalent to the run time of game and thus the entire | |
| 13 | + * lifecycle of your API, they are instanced early in the loader startup process. CoreProviders can implement | |
| 14 | + * any Observer interface as appropriate and are automatically considered when allocating Observers to | |
| 15 | + * callback lists | |
| 16 | + * | |
| 17 | + * @author Adam Mummery-Smith | |
| 18 | + */ | |
| 19 | +public interface CoreProvider extends TickObserver, WorldObserver, ShutdownObserver, PostRenderObserver | |
| 20 | +{ | |
| 21 | + public abstract void onInit(); | |
| 22 | + | |
| 23 | + /** | |
| 24 | + * During the postInit phase, the mods which were discovered during preInit phase are initialised and the | |
| 25 | + * interfaces are allocated. This callback is invoked at the very start of the postInit phase, before mods | |
| 26 | + * are initialised but after the point at which it is safe to assume it's ok to access game classes. This | |
| 27 | + * is the first point at which the Minecraft game instance should be referenced. Be aware that certain game | |
| 28 | + * classes (such as the EntityRenderer) are NOT initialised at this point. | |
| 29 | + * | |
| 30 | + * @param engine | |
| 31 | + */ | |
| 32 | + public abstract void onPostInit(GameEngine<?, ?> engine); | |
| 33 | + | |
| 34 | + /** | |
| 35 | + * Once the mods are initialised and the interfaces have been allocated, this callback is invoked to allow | |
| 36 | + * the CoreProvider to perform any tasks which should be performed in the postInit phase but after mods | |
| 37 | + * have been initialised. | |
| 38 | + * | |
| 39 | + * @param mods | |
| 40 | + */ | |
| 41 | + public abstract void onPostInitComplete(LiteLoaderMods mods); | |
| 42 | + | |
| 43 | + /** | |
| 44 | + * Called once startup is complete and the game loop begins running. This callback is invoked immediately | |
| 45 | + * prior to the first "tick" event and immediately AFTER the the "late init" phase for mods (InitCompleteListener) | |
| 46 | + */ | |
| 47 | + public abstract void onStartupComplete(); | |
| 48 | + | |
| 49 | + /** | |
| 50 | + * Called immediately on joining a single or multi-player world when the JoinGame packet is received. Only called on the client. | |
| 51 | + * | |
| 52 | + * @param netHandler | |
| 53 | + * @param loginPacket | |
| 54 | + */ | |
| 55 | + public abstract void onJoinGame(INetHandler netHandler, S01PacketJoinGame loginPacket); | |
| 56 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/CustomisationProvider.java renamed to src/main/java/com/mumfrey/liteloader/api/CustomisationProvider.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * Base interface for loader customisation providers, has to be here so that we don't load branding provider classes too soon | |
| 5 | - * | |
| 6 | - * @author Adam Mummery-Smith | |
| 7 | - */ | |
| 8 | -public interface CustomisationProvider | |
| 9 | -{ | |
| 10 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * Base interface for loader customisation providers, has to be here so that we don't load branding provider classes too soon | |
| 5 | + * | |
| 6 | + * @author Adam Mummery-Smith | |
| 7 | + */ | |
| 8 | +public interface CustomisationProvider | |
| 9 | +{ | |
| 10 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/EnumerationObserver.java renamed to src/main/java/com/mumfrey/liteloader/api/EnumerationObserver.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -import java.io.File; | |
| 4 | - | |
| 5 | -import com.mumfrey.liteloader.api.ContainerRegistry.DisabledReason; | |
| 6 | -import com.mumfrey.liteloader.core.ModInfo; | |
| 7 | -import com.mumfrey.liteloader.interfaces.LoadableMod; | |
| 8 | -import com.mumfrey.liteloader.interfaces.LoaderEnumerator; | |
| 9 | -import com.mumfrey.liteloader.interfaces.TweakContainer; | |
| 10 | - | |
| 11 | -/** | |
| 12 | - * LiteLoader Extensible API - Enumeration observer | |
| 13 | - * | |
| 14 | - * EnumerationObserver receive callbacks when mod containers are enumerated. Instances of this class MUST be returned from | |
| 15 | - * getPreInitObservers in order to work | |
| 16 | - * | |
| 17 | - * @author Adam Mummery-Smith | |
| 18 | - */ | |
| 19 | -public interface EnumerationObserver extends Observer | |
| 20 | -{ | |
| 21 | - /** | |
| 22 | - * Called upon registration for every discovered container which is enabled | |
| 23 | - * | |
| 24 | - * @param enumerator | |
| 25 | - * @param container | |
| 26 | - */ | |
| 27 | - public abstract void onRegisterEnabledContainer(LoaderEnumerator enumerator, LoadableMod<?> container); | |
| 28 | - | |
| 29 | - /** | |
| 30 | - * Called upon registration for every discovered container which is currently disabled, either because | |
| 31 | - * | |
| 32 | - * @param enumerator | |
| 33 | - * @param container | |
| 34 | - * @param reason | |
| 35 | - */ | |
| 36 | - public abstract void onRegisterDisabledContainer(LoaderEnumerator enumerator, LoadableMod<?> container, DisabledReason reason); | |
| 37 | - | |
| 38 | - /** | |
| 39 | - * Called AFTER registration of an ENABLED container (eg. onRegisterEnabledContainer will be called first) if that container also | |
| 40 | - * contains tweaks. | |
| 41 | - * | |
| 42 | - * @param enumerator | |
| 43 | - * @param container | |
| 44 | - */ | |
| 45 | - public abstract void onRegisterTweakContainer(LoaderEnumerator enumerator, TweakContainer<File> container); | |
| 46 | - | |
| 47 | - /** | |
| 48 | - * Called when a mod container is added to the pending mods list. This does not mean that the specific mod will actually be instanced since | |
| 49 | - * the mod can still be disabled via the exclusion list (this is to allow entire containers to be disabled or just individual mods) and so | |
| 50 | - * if you wish to observe actual mod instantiation you should still provide a {@link ResourceObserver}. However this event expresses a | |
| 51 | - * declaration by the enumerator of an intention to load the specified mod. | |
| 52 | - * | |
| 53 | - * @param enumerator | |
| 54 | - * @param mod | |
| 55 | - */ | |
| 56 | - public abstract void onModAdded(LoaderEnumerator enumerator, ModInfo<LoadableMod<?>> mod); | |
| 57 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +import java.io.File; | |
| 4 | + | |
| 5 | +import com.mumfrey.liteloader.api.ContainerRegistry.DisabledReason; | |
| 6 | +import com.mumfrey.liteloader.core.ModInfo; | |
| 7 | +import com.mumfrey.liteloader.interfaces.LoadableMod; | |
| 8 | +import com.mumfrey.liteloader.interfaces.LoaderEnumerator; | |
| 9 | +import com.mumfrey.liteloader.interfaces.TweakContainer; | |
| 10 | + | |
| 11 | +/** | |
| 12 | + * LiteLoader Extensible API - Enumeration observer | |
| 13 | + * | |
| 14 | + * EnumerationObserver receive callbacks when mod containers are enumerated. Instances of this class MUST be returned from | |
| 15 | + * getPreInitObservers in order to work | |
| 16 | + * | |
| 17 | + * @author Adam Mummery-Smith | |
| 18 | + */ | |
| 19 | +public interface EnumerationObserver extends Observer | |
| 20 | +{ | |
| 21 | + /** | |
| 22 | + * Called upon registration for every discovered container which is enabled | |
| 23 | + * | |
| 24 | + * @param enumerator | |
| 25 | + * @param container | |
| 26 | + */ | |
| 27 | + public abstract void onRegisterEnabledContainer(LoaderEnumerator enumerator, LoadableMod<?> container); | |
| 28 | + | |
| 29 | + /** | |
| 30 | + * Called upon registration for every discovered container which is currently disabled, either because | |
| 31 | + * | |
| 32 | + * @param enumerator | |
| 33 | + * @param container | |
| 34 | + * @param reason | |
| 35 | + */ | |
| 36 | + public abstract void onRegisterDisabledContainer(LoaderEnumerator enumerator, LoadableMod<?> container, DisabledReason reason); | |
| 37 | + | |
| 38 | + /** | |
| 39 | + * Called AFTER registration of an ENABLED container (eg. onRegisterEnabledContainer will be called first) if that container also | |
| 40 | + * contains tweaks. | |
| 41 | + * | |
| 42 | + * @param enumerator | |
| 43 | + * @param container | |
| 44 | + */ | |
| 45 | + public abstract void onRegisterTweakContainer(LoaderEnumerator enumerator, TweakContainer<File> container); | |
| 46 | + | |
| 47 | + /** | |
| 48 | + * Called when a mod container is added to the pending mods list. This does not mean that the specific mod will actually be instanced since | |
| 49 | + * the mod can still be disabled via the exclusion list (this is to allow entire containers to be disabled or just individual mods) and so | |
| 50 | + * if you wish to observe actual mod instantiation you should still provide a {@link ResourceObserver}. However this event expresses a | |
| 51 | + * declaration by the enumerator of an intention to load the specified mod. | |
| 52 | + * | |
| 53 | + * @param enumerator | |
| 54 | + * @param mod | |
| 55 | + */ | |
| 56 | + public abstract void onModAdded(LoaderEnumerator enumerator, ModInfo<LoadableMod<?>> mod); | |
| 57 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/EnumeratorModule.java renamed to src/main/java/com/mumfrey/liteloader/api/EnumeratorModule.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -import com.mumfrey.liteloader.interfaces.ModularEnumerator; | |
| 4 | -import com.mumfrey.liteloader.launch.LoaderEnvironment; | |
| 5 | -import com.mumfrey.liteloader.launch.LoaderProperties; | |
| 6 | - | |
| 7 | -import net.minecraft.launchwrapper.LaunchClassLoader; | |
| 8 | - | |
| 9 | -/** | |
| 10 | - * LiteLoader Extensible API - Interface for objects which can enumerate mods in places | |
| 11 | - * | |
| 12 | - * EnumeratorModules plug into the LoaderEnumerator and are used to discover mod containers in various | |
| 13 | - * locations, for example searching in a specific folder for particular files. | |
| 14 | - * | |
| 15 | - * @author Adam Mummery-Smith | |
| 16 | - */ | |
| 17 | -public interface EnumeratorModule | |
| 18 | -{ | |
| 19 | - /** | |
| 20 | - * @param environment Loader environment | |
| 21 | - * @param properties Loader properties | |
| 22 | - */ | |
| 23 | - public abstract void init(LoaderEnvironment environment, LoaderProperties properties); | |
| 24 | - | |
| 25 | - /** | |
| 26 | - * @param environment Loader environment | |
| 27 | - * @param properties Loader properties | |
| 28 | - */ | |
| 29 | - public abstract void writeSettings(LoaderEnvironment environment, LoaderProperties properties); | |
| 30 | - | |
| 31 | - /** | |
| 32 | - * Find loadable mods in this enumerator's domain, the enumerator module should call back against the enumerator | |
| 33 | - * itself to register containers it discovers using the registerModContainer() and registerTweakContainer() | |
| 34 | - * callbacks. | |
| 35 | - * | |
| 36 | - * This method is called during loader PREINIT phase so **DO NOT USE ANY GAME CLASSES HERE**! | |
| 37 | - * | |
| 38 | - * @param enumerator | |
| 39 | - * @param profile | |
| 40 | - */ | |
| 41 | - public abstract void enumerate(ModularEnumerator enumerator, String profile); | |
| 42 | - | |
| 43 | - /** | |
| 44 | - * The enumerator module should inject (as required) any discovered containers into the classpath | |
| 45 | - * | |
| 46 | - * This method is called during the loader INIT phase | |
| 47 | - * | |
| 48 | - * @param enumerator | |
| 49 | - * @param classLoader | |
| 50 | - */ | |
| 51 | - public abstract void injectIntoClassLoader(ModularEnumerator enumerator, LaunchClassLoader classLoader); | |
| 52 | - | |
| 53 | - /** | |
| 54 | - * The enumerator module should callback against the enumerator using the registerModsFrom() callback to | |
| 55 | - * register mods from discovered containers | |
| 56 | - * | |
| 57 | - * This method is called during the loader INIT phase | |
| 58 | - * | |
| 59 | - * @param enumerator | |
| 60 | - * @param classLoader | |
| 61 | - */ | |
| 62 | - public abstract void registerMods(ModularEnumerator enumerator, LaunchClassLoader classLoader); | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +import com.mumfrey.liteloader.interfaces.ModularEnumerator; | |
| 4 | +import com.mumfrey.liteloader.launch.LoaderEnvironment; | |
| 5 | +import com.mumfrey.liteloader.launch.LoaderProperties; | |
| 6 | + | |
| 7 | +import net.minecraft.launchwrapper.LaunchClassLoader; | |
| 8 | + | |
| 9 | +/** | |
| 10 | + * LiteLoader Extensible API - Interface for objects which can enumerate mods in places | |
| 11 | + * | |
| 12 | + * EnumeratorModules plug into the LoaderEnumerator and are used to discover mod containers in various | |
| 13 | + * locations, for example searching in a specific folder for particular files. | |
| 14 | + * | |
| 15 | + * @author Adam Mummery-Smith | |
| 16 | + */ | |
| 17 | +public interface EnumeratorModule | |
| 18 | +{ | |
| 19 | + /** | |
| 20 | + * @param environment Loader environment | |
| 21 | + * @param properties Loader properties | |
| 22 | + */ | |
| 23 | + public abstract void init(LoaderEnvironment environment, LoaderProperties properties); | |
| 24 | + | |
| 25 | + /** | |
| 26 | + * @param environment Loader environment | |
| 27 | + * @param properties Loader properties | |
| 28 | + */ | |
| 29 | + public abstract void writeSettings(LoaderEnvironment environment, LoaderProperties properties); | |
| 30 | + | |
| 31 | + /** | |
| 32 | + * Find loadable mods in this enumerator's domain, the enumerator module should call back against the enumerator | |
| 33 | + * itself to register containers it discovers using the registerModContainer() and registerTweakContainer() | |
| 34 | + * callbacks. | |
| 35 | + * | |
| 36 | + * This method is called during loader PREINIT phase so **DO NOT USE ANY GAME CLASSES HERE**! | |
| 37 | + * | |
| 38 | + * @param enumerator | |
| 39 | + * @param profile | |
| 40 | + */ | |
| 41 | + public abstract void enumerate(ModularEnumerator enumerator, String profile); | |
| 42 | + | |
| 43 | + /** | |
| 44 | + * The enumerator module should inject (as required) any discovered containers into the classpath | |
| 45 | + * | |
| 46 | + * This method is called during the loader INIT phase | |
| 47 | + * | |
| 48 | + * @param enumerator | |
| 49 | + * @param classLoader | |
| 50 | + */ | |
| 51 | + public abstract void injectIntoClassLoader(ModularEnumerator enumerator, LaunchClassLoader classLoader); | |
| 52 | + | |
| 53 | + /** | |
| 54 | + * The enumerator module should callback against the enumerator using the registerModsFrom() callback to | |
| 55 | + * register mods from discovered containers | |
| 56 | + * | |
| 57 | + * This method is called during the loader INIT phase | |
| 58 | + * | |
| 59 | + * @param enumerator | |
| 60 | + * @param classLoader | |
| 61 | + */ | |
| 62 | + public abstract void registerMods(ModularEnumerator enumerator, LaunchClassLoader classLoader); | |
| 63 | 63 | } |
| 64 | 64 | \ No newline at end of file | ... | ... |
java/common/com/mumfrey/liteloader/api/EnumeratorPlugin.java renamed to src/main/java/com/mumfrey/liteloader/api/EnumeratorPlugin.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -import java.util.List; | |
| 4 | - | |
| 5 | -import com.mumfrey.liteloader.interfaces.LoadableMod; | |
| 6 | -import com.mumfrey.liteloader.launch.LoaderEnvironment; | |
| 7 | -import com.mumfrey.liteloader.launch.LoaderProperties; | |
| 8 | - | |
| 9 | -/** | |
| 10 | - * LiteLoader Extensible API - Interface for objects which can interact with the enumeration process, not yet available to APIs | |
| 11 | - * | |
| 12 | - * @author Adam Mummery-Smith | |
| 13 | - */ | |
| 14 | -public interface EnumeratorPlugin | |
| 15 | -{ | |
| 16 | - /** | |
| 17 | - * Initialise this plugin | |
| 18 | - */ | |
| 19 | - public abstract void init(LoaderEnvironment environment, LoaderProperties properties); | |
| 20 | - | |
| 21 | - /** | |
| 22 | - * Get classes in the supplied container | |
| 23 | - * | |
| 24 | - * @param container Container to inspect | |
| 25 | - * @param classloader ClassLoader for this container | |
| 26 | - * @param superClass Superclass the class must implement | |
| 27 | - * @param supportedPrefixes Registered class prefixes | |
| 28 | - * @return | |
| 29 | - */ | |
| 30 | - public abstract <T> List<Class<? extends T>> getClasses(LoadableMod<?> container, ClassLoader classloader, ModClassValidator validator); | |
| 31 | - | |
| 32 | - public abstract boolean checkEnabled(ContainerRegistry containers, LoadableMod<?> container); | |
| 33 | - | |
| 34 | - public abstract boolean checkDependencies(ContainerRegistry containers, LoadableMod<?> base); | |
| 35 | - | |
| 36 | - public abstract boolean checkAPIRequirements(ContainerRegistry containers, LoadableMod<?> container); | |
| 37 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +import java.util.List; | |
| 4 | + | |
| 5 | +import com.mumfrey.liteloader.interfaces.LoadableMod; | |
| 6 | +import com.mumfrey.liteloader.launch.LoaderEnvironment; | |
| 7 | +import com.mumfrey.liteloader.launch.LoaderProperties; | |
| 8 | + | |
| 9 | +/** | |
| 10 | + * LiteLoader Extensible API - Interface for objects which can interact with the enumeration process, not yet available to APIs | |
| 11 | + * | |
| 12 | + * @author Adam Mummery-Smith | |
| 13 | + */ | |
| 14 | +public interface EnumeratorPlugin | |
| 15 | +{ | |
| 16 | + /** | |
| 17 | + * Initialise this plugin | |
| 18 | + */ | |
| 19 | + public abstract void init(LoaderEnvironment environment, LoaderProperties properties); | |
| 20 | + | |
| 21 | + /** | |
| 22 | + * Get classes in the supplied container | |
| 23 | + * | |
| 24 | + * @param container Container to inspect | |
| 25 | + * @param classloader ClassLoader for this container | |
| 26 | + * @param superClass Superclass the class must implement | |
| 27 | + * @param supportedPrefixes Registered class prefixes | |
| 28 | + * @return | |
| 29 | + */ | |
| 30 | + public abstract <T> List<Class<? extends T>> getClasses(LoadableMod<?> container, ClassLoader classloader, ModClassValidator validator); | |
| 31 | + | |
| 32 | + public abstract boolean checkEnabled(ContainerRegistry containers, LoadableMod<?> container); | |
| 33 | + | |
| 34 | + public abstract boolean checkDependencies(ContainerRegistry containers, LoadableMod<?> base); | |
| 35 | + | |
| 36 | + public abstract boolean checkAPIRequirements(ContainerRegistry containers, LoadableMod<?> container); | |
| 37 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/GenericObserver.java renamed to src/main/java/com/mumfrey/liteloader/api/GenericObserver.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * Generic Observer class, for Intra-API Observer inking | |
| 5 | - * | |
| 6 | - * @author Adam Mummery-Smith | |
| 7 | - * | |
| 8 | - * @param <T> Argument type for observable events | |
| 9 | - */ | |
| 10 | -public interface GenericObserver<T> extends Observer | |
| 11 | -{ | |
| 12 | - public abstract void onObservableEvent(String eventName, T... eventArgs) throws ClassCastException; | |
| 13 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * Generic Observer class, for Intra-API Observer inking | |
| 5 | + * | |
| 6 | + * @author Adam Mummery-Smith | |
| 7 | + * | |
| 8 | + * @param <T> Argument type for observable events | |
| 9 | + */ | |
| 10 | +public interface GenericObserver<T> extends Observer | |
| 11 | +{ | |
| 12 | + public abstract void onObservableEvent(String eventName, T... eventArgs) throws ClassCastException; | |
| 13 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/InterfaceObserver.java renamed to src/main/java/com/mumfrey/liteloader/api/InterfaceObserver.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * Observer for interface binding events | |
| 5 | - * | |
| 6 | - * @author Adam Mummery-Smith | |
| 7 | - */ | |
| 8 | -public interface InterfaceObserver extends Observer | |
| 9 | -{ | |
| 10 | - public void onRegisterListener(InterfaceProvider provider, Class<? extends Listener> interfaceType, Listener listener); | |
| 11 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * Observer for interface binding events | |
| 5 | + * | |
| 6 | + * @author Adam Mummery-Smith | |
| 7 | + */ | |
| 8 | +public interface InterfaceObserver extends Observer | |
| 9 | +{ | |
| 10 | + public void onRegisterListener(InterfaceProvider provider, Class<? extends Listener> interfaceType, Listener listener); | |
| 11 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/InterfaceProvider.java renamed to src/main/java/com/mumfrey/liteloader/api/InterfaceProvider.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -import com.mumfrey.liteloader.core.InterfaceRegistrationDelegate; | |
| 4 | - | |
| 5 | -/** | |
| 6 | - * LiteLoader Extensible API - Interface Provider | |
| 7 | - * | |
| 8 | - * InterfaceProviders are able to advertise and provide Listener interfaces which can be implemented | |
| 9 | - * by mods or other Listener-derived classes | |
| 10 | - * | |
| 11 | - * @author Adam Mummery-Smith | |
| 12 | - */ | |
| 13 | -public interface InterfaceProvider | |
| 14 | -{ | |
| 15 | - /** | |
| 16 | - * Base type of Listeners which can consume events provided by this provider | |
| 17 | - */ | |
| 18 | - public abstract Class<? extends Listener> getListenerBaseType(); | |
| 19 | - | |
| 20 | - /** | |
| 21 | - * The provider should call back against the supplied delegate in order to advertise the interfaces | |
| 22 | - * it provides. | |
| 23 | - * | |
| 24 | - * @param delegate | |
| 25 | - */ | |
| 26 | - public abstract void registerInterfaces(InterfaceRegistrationDelegate delegate); | |
| 27 | - | |
| 28 | - /** | |
| 29 | - * Initialise this provider, called AFTER enumeration but before binding | |
| 30 | - */ | |
| 31 | - public abstract void initProvider(); | |
| 32 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +import com.mumfrey.liteloader.core.InterfaceRegistrationDelegate; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * LiteLoader Extensible API - Interface Provider | |
| 7 | + * | |
| 8 | + * InterfaceProviders are able to advertise and provide Listener interfaces which can be implemented | |
| 9 | + * by mods or other Listener-derived classes | |
| 10 | + * | |
| 11 | + * @author Adam Mummery-Smith | |
| 12 | + */ | |
| 13 | +public interface InterfaceProvider | |
| 14 | +{ | |
| 15 | + /** | |
| 16 | + * Base type of Listeners which can consume events provided by this provider | |
| 17 | + */ | |
| 18 | + public abstract Class<? extends Listener> getListenerBaseType(); | |
| 19 | + | |
| 20 | + /** | |
| 21 | + * The provider should call back against the supplied delegate in order to advertise the interfaces | |
| 22 | + * it provides. | |
| 23 | + * | |
| 24 | + * @param delegate | |
| 25 | + */ | |
| 26 | + public abstract void registerInterfaces(InterfaceRegistrationDelegate delegate); | |
| 27 | + | |
| 28 | + /** | |
| 29 | + * Initialise this provider, called AFTER enumeration but before binding | |
| 30 | + */ | |
| 31 | + public abstract void initProvider(); | |
| 32 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/Listener.java renamed to src/main/java/com/mumfrey/liteloader/api/Listener.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * LiteLoader Extensible API - Listener is the base interface for (counter-intuitively) consumable Listener interfaces, in | |
| 5 | - * that derived interfaces are consumable (from the point of view of the providers) but actual implementors consume the events | |
| 6 | - * thus advertised by implementing those interfaces, making them themselves the consumers. Okay so that's probably pretty | |
| 7 | - * confusing but I can't think of any better terminology so it's staying :) | |
| 8 | - * | |
| 9 | - * @author Adam Mummery-Smith | |
| 10 | - */ | |
| 11 | -public interface Listener | |
| 12 | -{ | |
| 13 | - /** | |
| 14 | - * Get the display name | |
| 15 | - * | |
| 16 | - * @return display name | |
| 17 | - */ | |
| 18 | - public abstract String getName(); | |
| 19 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * LiteLoader Extensible API - Listener is the base interface for (counter-intuitively) consumable Listener interfaces, in | |
| 5 | + * that derived interfaces are consumable (from the point of view of the providers) but actual implementors consume the events | |
| 6 | + * thus advertised by implementing those interfaces, making them themselves the consumers. Okay so that's probably pretty | |
| 7 | + * confusing but I can't think of any better terminology so it's staying :) | |
| 8 | + * | |
| 9 | + * @author Adam Mummery-Smith | |
| 10 | + */ | |
| 11 | +public interface Listener | |
| 12 | +{ | |
| 13 | + /** | |
| 14 | + * Get the display name | |
| 15 | + * | |
| 16 | + * @return display name | |
| 17 | + */ | |
| 18 | + public abstract String getName(); | |
| 19 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/LiteAPI.java renamed to src/main/java/com/mumfrey/liteloader/api/LiteAPI.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -import java.util.List; | |
| 4 | - | |
| 5 | -import com.mumfrey.liteloader.launch.LoaderEnvironment; | |
| 6 | -import com.mumfrey.liteloader.launch.LoaderProperties; | |
| 7 | - | |
| 8 | -/** | |
| 9 | - * LiteLoader Extensible API - main Mod API | |
| 10 | - * | |
| 11 | - * Implementors of this class don't really do anything except provide instances of other classes which make up the API proper. | |
| 12 | - * Where possible, instance things as LATE as possible (eg. do not instance your CoreProviders in the constructor or init()) because | |
| 13 | - * it's possible to screw up the game startup if things get loaded out of order, in general it's best to instance things only at | |
| 14 | - * the earliest point in time at which they are needed. | |
| 15 | - * | |
| 16 | - * @author Adam Mummery-Smith | |
| 17 | - */ | |
| 18 | -public interface LiteAPI | |
| 19 | -{ | |
| 20 | - /** | |
| 21 | - * Initialise this API, the API should do as little processing as possible here, but should also cache | |
| 22 | - * the supplied environment and properties instances for later use | |
| 23 | - * | |
| 24 | - * @param environment | |
| 25 | - * @param properties | |
| 26 | - */ | |
| 27 | - public abstract void init(LoaderEnvironment environment, LoaderProperties properties); | |
| 28 | - | |
| 29 | - /** | |
| 30 | - * Get the identifier for this API, the identifier is used to retrieve the API and match it against specified mod API dependencies | |
| 31 | - */ | |
| 32 | - public abstract String getIdentifier(); | |
| 33 | - | |
| 34 | - /** | |
| 35 | - * Get the friendly name of this API | |
| 36 | - */ | |
| 37 | - public abstract String getName(); | |
| 38 | - | |
| 39 | - /** | |
| 40 | - * Get the human-readable version of the API, can be any value | |
| 41 | - */ | |
| 42 | - public abstract String getVersion(); | |
| 43 | - | |
| 44 | - /** | |
| 45 | - * Get the revision number of this API. Unlike the version number, the revision number should only change when an incompatible | |
| 46 | - * change is made to the APIs interfaces, it is also used when a mod specifies an API dependency using the api@revision syntax | |
| 47 | - */ | |
| 48 | - public abstract int getRevision(); | |
| 49 | - | |
| 50 | - /** | |
| 51 | - * Should return an array of required transformer names, these transformers will be injected UPSTREAM. Can return null. | |
| 52 | - */ | |
| 53 | - public abstract String[] getRequiredTransformers(); | |
| 54 | - | |
| 55 | - /** | |
| 56 | - * Should return an array of required transformer names, these transformers will be injected DOWNSTREAM. Can return null. | |
| 57 | - */ | |
| 58 | - public abstract String[] getRequiredDownstreamTransformers(); | |
| 59 | - | |
| 60 | - /** | |
| 61 | - * Return a mod class prefix supported by this API, can return null if an API just wants to use "LiteMod" as a standard class name prefix | |
| 62 | - */ | |
| 63 | - public abstract String getModClassPrefix(); | |
| 64 | - | |
| 65 | - /** | |
| 66 | - * Should return a list of Enumerator modules to be injected, can return null if the API doesn't want to inject any additonal modules | |
| 67 | - */ | |
| 68 | - public abstract List<EnumeratorModule> getEnumeratorModules(); | |
| 69 | - | |
| 70 | - /** | |
| 71 | - * Should return a list of CoreProviders for this API, can return null if the API doesn't have any CoreProviders, (almost) guaranteed to only be called once | |
| 72 | - */ | |
| 73 | - public abstract List<CoreProvider> getCoreProviders(); | |
| 74 | - | |
| 75 | - /** | |
| 76 | - * Should return a list of InterfaceProviders for this API, can return null if the API doesn't have any InterfaceProviders, (almost) guaranteed to only be called once | |
| 77 | - */ | |
| 78 | - public abstract List<InterfaceProvider> getInterfaceProviders(); | |
| 79 | - | |
| 80 | - /** | |
| 81 | - * Should return a list of Observers which are safe to instantiate during pre-init, for example EnumerationObservers. Can return null if the API doesn't have any | |
| 82 | - * Observers. | |
| 83 | - */ | |
| 84 | - public abstract List<Observer> getPreInitObservers(); | |
| 85 | - | |
| 86 | - /** | |
| 87 | - * Should return a list of Observers for this API, can return null if the API doesn't have any Observers, (almost) guaranteed to only be called once. This list may | |
| 88 | - * include Observers returned by getPreInitObservers if the observers are still required. | |
| 89 | - */ | |
| 90 | - public abstract List<Observer> getObservers(); | |
| 91 | - | |
| 92 | - /** | |
| 93 | - * Get the customisation providers for this API, can return null | |
| 94 | - */ | |
| 95 | - public abstract List<CustomisationProvider> getCustomisationProviders(); | |
| 96 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +import java.util.List; | |
| 4 | + | |
| 5 | +import com.mumfrey.liteloader.launch.LoaderEnvironment; | |
| 6 | +import com.mumfrey.liteloader.launch.LoaderProperties; | |
| 7 | + | |
| 8 | +/** | |
| 9 | + * LiteLoader Extensible API - main Mod API | |
| 10 | + * | |
| 11 | + * Implementors of this class don't really do anything except provide instances of other classes which make up the API proper. | |
| 12 | + * Where possible, instance things as LATE as possible (eg. do not instance your CoreProviders in the constructor or init()) because | |
| 13 | + * it's possible to screw up the game startup if things get loaded out of order, in general it's best to instance things only at | |
| 14 | + * the earliest point in time at which they are needed. | |
| 15 | + * | |
| 16 | + * @author Adam Mummery-Smith | |
| 17 | + */ | |
| 18 | +public interface LiteAPI | |
| 19 | +{ | |
| 20 | + /** | |
| 21 | + * Initialise this API, the API should do as little processing as possible here, but should also cache | |
| 22 | + * the supplied environment and properties instances for later use | |
| 23 | + * | |
| 24 | + * @param environment | |
| 25 | + * @param properties | |
| 26 | + */ | |
| 27 | + public abstract void init(LoaderEnvironment environment, LoaderProperties properties); | |
| 28 | + | |
| 29 | + /** | |
| 30 | + * Get the identifier for this API, the identifier is used to retrieve the API and match it against specified mod API dependencies | |
| 31 | + */ | |
| 32 | + public abstract String getIdentifier(); | |
| 33 | + | |
| 34 | + /** | |
| 35 | + * Get the friendly name of this API | |
| 36 | + */ | |
| 37 | + public abstract String getName(); | |
| 38 | + | |
| 39 | + /** | |
| 40 | + * Get the human-readable version of the API, can be any value | |
| 41 | + */ | |
| 42 | + public abstract String getVersion(); | |
| 43 | + | |
| 44 | + /** | |
| 45 | + * Get the revision number of this API. Unlike the version number, the revision number should only change when an incompatible | |
| 46 | + * change is made to the APIs interfaces, it is also used when a mod specifies an API dependency using the api@revision syntax | |
| 47 | + */ | |
| 48 | + public abstract int getRevision(); | |
| 49 | + | |
| 50 | + /** | |
| 51 | + * Should return an array of required transformer names, these transformers will be injected UPSTREAM. Can return null. | |
| 52 | + */ | |
| 53 | + public abstract String[] getRequiredTransformers(); | |
| 54 | + | |
| 55 | + /** | |
| 56 | + * Should return an array of required transformer names, these transformers will be injected DOWNSTREAM. Can return null. | |
| 57 | + */ | |
| 58 | + public abstract String[] getRequiredDownstreamTransformers(); | |
| 59 | + | |
| 60 | + /** | |
| 61 | + * Return a mod class prefix supported by this API, can return null if an API just wants to use "LiteMod" as a standard class name prefix | |
| 62 | + */ | |
| 63 | + public abstract String getModClassPrefix(); | |
| 64 | + | |
| 65 | + /** | |
| 66 | + * Should return a list of Enumerator modules to be injected, can return null if the API doesn't want to inject any additonal modules | |
| 67 | + */ | |
| 68 | + public abstract List<EnumeratorModule> getEnumeratorModules(); | |
| 69 | + | |
| 70 | + /** | |
| 71 | + * Should return a list of CoreProviders for this API, can return null if the API doesn't have any CoreProviders, (almost) guaranteed to only be called once | |
| 72 | + */ | |
| 73 | + public abstract List<CoreProvider> getCoreProviders(); | |
| 74 | + | |
| 75 | + /** | |
| 76 | + * Should return a list of InterfaceProviders for this API, can return null if the API doesn't have any InterfaceProviders, (almost) guaranteed to only be called once | |
| 77 | + */ | |
| 78 | + public abstract List<InterfaceProvider> getInterfaceProviders(); | |
| 79 | + | |
| 80 | + /** | |
| 81 | + * Should return a list of Observers which are safe to instantiate during pre-init, for example EnumerationObservers. Can return null if the API doesn't have any | |
| 82 | + * Observers. | |
| 83 | + */ | |
| 84 | + public abstract List<Observer> getPreInitObservers(); | |
| 85 | + | |
| 86 | + /** | |
| 87 | + * Should return a list of Observers for this API, can return null if the API doesn't have any Observers, (almost) guaranteed to only be called once. This list may | |
| 88 | + * include Observers returned by getPreInitObservers if the observers are still required. | |
| 89 | + */ | |
| 90 | + public abstract List<Observer> getObservers(); | |
| 91 | + | |
| 92 | + /** | |
| 93 | + * Get the customisation providers for this API, can return null | |
| 94 | + */ | |
| 95 | + public abstract List<CustomisationProvider> getCustomisationProviders(); | |
| 96 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/ModClassValidator.java renamed to src/main/java/com/mumfrey/liteloader/api/ModClassValidator.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * Interface for object which validates whether a supplied mod class can be loaded | |
| 5 | - * | |
| 6 | - * @author Adam Mummery-Smith | |
| 7 | - */ | |
| 8 | -public interface ModClassValidator | |
| 9 | -{ | |
| 10 | - public abstract boolean validateName(String className); | |
| 11 | - | |
| 12 | - public abstract boolean validateClass(ClassLoader classLoader, Class<?> candidateClass); | |
| 13 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * Interface for object which validates whether a supplied mod class can be loaded | |
| 5 | + * | |
| 6 | + * @author Adam Mummery-Smith | |
| 7 | + */ | |
| 8 | +public interface ModClassValidator | |
| 9 | +{ | |
| 10 | + public abstract boolean validateName(String className); | |
| 11 | + | |
| 12 | + public abstract boolean validateClass(ClassLoader classLoader, Class<?> candidateClass); | |
| 13 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/ModInfoDecorator.java renamed to src/main/java/com/mumfrey/liteloader/api/ModInfoDecorator.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -import java.util.List; | |
| 4 | - | |
| 5 | -import com.mumfrey.liteloader.core.ModInfo; | |
| 6 | -import com.mumfrey.liteloader.util.render.IconTextured; | |
| 7 | - | |
| 8 | -/** | |
| 9 | - * LiteLoader Extensible API - Branding Provider | |
| 10 | - * | |
| 11 | - * Decorator for ModInfo classes, to alter the appearance of ModInfo entries in the mod list | |
| 12 | - * | |
| 13 | - * @author Adam Mummery-Smith | |
| 14 | - */ | |
| 15 | -public interface ModInfoDecorator extends CustomisationProvider | |
| 16 | -{ | |
| 17 | - /** | |
| 18 | - * Add icons to the mod list entry for this mod | |
| 19 | - * | |
| 20 | - * @param mod | |
| 21 | - * @param icons | |
| 22 | - */ | |
| 23 | - public abstract void addIcons(ModInfo<?> mod, List<IconTextured> icons); | |
| 24 | - | |
| 25 | - /** | |
| 26 | - * Allows this decorator to modify the status text for the specified mod, return null if no modification required | |
| 27 | - * | |
| 28 | - * @param statusText | |
| 29 | - * @return new status text or NULL to indicate the text should remain default | |
| 30 | - */ | |
| 31 | - public abstract String modifyStatusText(ModInfo<?> mod, String statusText); | |
| 32 | - | |
| 33 | - /** | |
| 34 | - * Allow decorators to draw custom content on the mod list entries | |
| 35 | - * | |
| 36 | - * @param mouseX Mouse X position | |
| 37 | - * @param mouseY Mouse Y position | |
| 38 | - * @param partialTicks | |
| 39 | - * @param xPosition Panel X position | |
| 40 | - * @param yPosition Panel Y position | |
| 41 | - * @param width Panel width | |
| 42 | - * @param selected Panel height | |
| 43 | - * @param mod ModInfo | |
| 44 | - * @param gradientColour | |
| 45 | - * @param titleColour | |
| 46 | - * @param statusColour | |
| 47 | - */ | |
| 48 | - public abstract void onDrawListEntry(int mouseX, int mouseY, float partialTicks, int xPosition, int yPosition, int width, int height, boolean selected, ModInfo<?> mod, int gradientColour, int titleColour, int statusColour); | |
| 49 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +import java.util.List; | |
| 4 | + | |
| 5 | +import com.mumfrey.liteloader.core.ModInfo; | |
| 6 | +import com.mumfrey.liteloader.util.render.IconTextured; | |
| 7 | + | |
| 8 | +/** | |
| 9 | + * LiteLoader Extensible API - Branding Provider | |
| 10 | + * | |
| 11 | + * Decorator for ModInfo classes, to alter the appearance of ModInfo entries in the mod list | |
| 12 | + * | |
| 13 | + * @author Adam Mummery-Smith | |
| 14 | + */ | |
| 15 | +public interface ModInfoDecorator extends CustomisationProvider | |
| 16 | +{ | |
| 17 | + /** | |
| 18 | + * Add icons to the mod list entry for this mod | |
| 19 | + * | |
| 20 | + * @param mod | |
| 21 | + * @param icons | |
| 22 | + */ | |
| 23 | + public abstract void addIcons(ModInfo<?> mod, List<IconTextured> icons); | |
| 24 | + | |
| 25 | + /** | |
| 26 | + * Allows this decorator to modify the status text for the specified mod, return null if no modification required | |
| 27 | + * | |
| 28 | + * @param statusText | |
| 29 | + * @return new status text or NULL to indicate the text should remain default | |
| 30 | + */ | |
| 31 | + public abstract String modifyStatusText(ModInfo<?> mod, String statusText); | |
| 32 | + | |
| 33 | + /** | |
| 34 | + * Allow decorators to draw custom content on the mod list entries | |
| 35 | + * | |
| 36 | + * @param mouseX Mouse X position | |
| 37 | + * @param mouseY Mouse Y position | |
| 38 | + * @param partialTicks | |
| 39 | + * @param xPosition Panel X position | |
| 40 | + * @param yPosition Panel Y position | |
| 41 | + * @param width Panel width | |
| 42 | + * @param selected Panel height | |
| 43 | + * @param mod ModInfo | |
| 44 | + * @param gradientColour | |
| 45 | + * @param titleColour | |
| 46 | + * @param statusColour | |
| 47 | + */ | |
| 48 | + public abstract void onDrawListEntry(int mouseX, int mouseY, float partialTicks, int xPosition, int yPosition, int width, int height, boolean selected, ModInfo<?> mod, int gradientColour, int titleColour, int statusColour); | |
| 49 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/ModLoadObserver.java renamed to src/main/java/com/mumfrey/liteloader/api/ModLoadObserver.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -import java.io.File; | |
| 4 | - | |
| 5 | -import com.mumfrey.liteloader.LiteMod; | |
| 6 | -import com.mumfrey.liteloader.core.ModInfo; | |
| 7 | -import com.mumfrey.liteloader.interfaces.LoadableMod; | |
| 8 | - | |
| 9 | -/** | |
| 10 | - * LiteLoader Extensible API - Mod Load Observer | |
| 11 | - * | |
| 12 | - * ModLoadObservers receive callbacks when mod loading events are occurring, prior to init and other | |
| 13 | - * loader-managed processes | |
| 14 | - * | |
| 15 | - * @author Adam Mummery-Smith | |
| 16 | - */ | |
| 17 | -public interface ModLoadObserver extends Observer | |
| 18 | -{ | |
| 19 | - /** | |
| 20 | - * Called immediately after a mod instance is created, throw an exception from this method in | |
| 21 | - * order to prevent further initialisation | |
| 22 | - */ | |
| 23 | - public abstract void onModLoaded(LiteMod mod); | |
| 24 | - | |
| 25 | - /** | |
| 26 | - * Called after a mod is instanced and has been successfully added to the active mods list | |
| 27 | - * | |
| 28 | - * @param handle Mod handle | |
| 29 | - */ | |
| 30 | - public abstract void onPostModLoaded(ModInfo<LoadableMod<?>> handle); | |
| 31 | - | |
| 32 | - /** | |
| 33 | - * Called if mod loading fails | |
| 34 | - * | |
| 35 | - * @param container | |
| 36 | - * @param identifier | |
| 37 | - * @param reason | |
| 38 | - * @param th | |
| 39 | - */ | |
| 40 | - public abstract void onModLoadFailed(LoadableMod<?> container, String identifier, String reason, Throwable th); | |
| 41 | - | |
| 42 | - /** | |
| 43 | - * Called before a mod's init() method is called | |
| 44 | - * | |
| 45 | - * @param mod | |
| 46 | - */ | |
| 47 | - public abstract void onPreInitMod(LiteMod mod); | |
| 48 | - | |
| 49 | - /** | |
| 50 | - * Called after a mod's init() method is called | |
| 51 | - * | |
| 52 | - * @param mod | |
| 53 | - */ | |
| 54 | - public abstract void onPostInitMod(LiteMod mod); | |
| 55 | - | |
| 56 | - /** | |
| 57 | - * Called when migrating mod config from version to version | |
| 58 | - * | |
| 59 | - * @param mod | |
| 60 | - * @param newConfigPath | |
| 61 | - * @param oldConfigPath | |
| 62 | - */ | |
| 63 | - public abstract void onMigrateModConfig(LiteMod mod, File newConfigPath, File oldConfigPath); | |
| 64 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +import java.io.File; | |
| 4 | + | |
| 5 | +import com.mumfrey.liteloader.LiteMod; | |
| 6 | +import com.mumfrey.liteloader.core.ModInfo; | |
| 7 | +import com.mumfrey.liteloader.interfaces.LoadableMod; | |
| 8 | + | |
| 9 | +/** | |
| 10 | + * LiteLoader Extensible API - Mod Load Observer | |
| 11 | + * | |
| 12 | + * ModLoadObservers receive callbacks when mod loading events are occurring, prior to init and other | |
| 13 | + * loader-managed processes | |
| 14 | + * | |
| 15 | + * @author Adam Mummery-Smith | |
| 16 | + */ | |
| 17 | +public interface ModLoadObserver extends Observer | |
| 18 | +{ | |
| 19 | + /** | |
| 20 | + * Called immediately after a mod instance is created, throw an exception from this method in | |
| 21 | + * order to prevent further initialisation | |
| 22 | + */ | |
| 23 | + public abstract void onModLoaded(LiteMod mod); | |
| 24 | + | |
| 25 | + /** | |
| 26 | + * Called after a mod is instanced and has been successfully added to the active mods list | |
| 27 | + * | |
| 28 | + * @param handle Mod handle | |
| 29 | + */ | |
| 30 | + public abstract void onPostModLoaded(ModInfo<LoadableMod<?>> handle); | |
| 31 | + | |
| 32 | + /** | |
| 33 | + * Called if mod loading fails | |
| 34 | + * | |
| 35 | + * @param container | |
| 36 | + * @param identifier | |
| 37 | + * @param reason | |
| 38 | + * @param th | |
| 39 | + */ | |
| 40 | + public abstract void onModLoadFailed(LoadableMod<?> container, String identifier, String reason, Throwable th); | |
| 41 | + | |
| 42 | + /** | |
| 43 | + * Called before a mod's init() method is called | |
| 44 | + * | |
| 45 | + * @param mod | |
| 46 | + */ | |
| 47 | + public abstract void onPreInitMod(LiteMod mod); | |
| 48 | + | |
| 49 | + /** | |
| 50 | + * Called after a mod's init() method is called | |
| 51 | + * | |
| 52 | + * @param mod | |
| 53 | + */ | |
| 54 | + public abstract void onPostInitMod(LiteMod mod); | |
| 55 | + | |
| 56 | + /** | |
| 57 | + * Called when migrating mod config from version to version | |
| 58 | + * | |
| 59 | + * @param mod | |
| 60 | + * @param newConfigPath | |
| 61 | + * @param oldConfigPath | |
| 62 | + */ | |
| 63 | + public abstract void onMigrateModConfig(LiteMod mod, File newConfigPath, File oldConfigPath); | |
| 64 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/Observer.java renamed to src/main/java/com/mumfrey/liteloader/api/Observer.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * LiteLoader Extensible API - Observer base interface | |
| 5 | - * | |
| 6 | - * Observers are essentially "core listeners" which are objects which make up the core a of a particular API implementation | |
| 7 | - * and sink events generated by the Loader or by other observable components. See the derived interfaces for more detail. | |
| 8 | - * | |
| 9 | - * @author Adam Mummery-Smith | |
| 10 | - */ | |
| 11 | -public interface Observer | |
| 12 | -{ | |
| 13 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * LiteLoader Extensible API - Observer base interface | |
| 5 | + * | |
| 6 | + * Observers are essentially "core listeners" which are objects which make up the core a of a particular API implementation | |
| 7 | + * and sink events generated by the Loader or by other observable components. See the derived interfaces for more detail. | |
| 8 | + * | |
| 9 | + * @author Adam Mummery-Smith | |
| 10 | + */ | |
| 11 | +public interface Observer | |
| 12 | +{ | |
| 13 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/PostRenderObserver.java renamed to src/main/java/com/mumfrey/liteloader/api/PostRenderObserver.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * LiteLoader Extensible API - Post-render Observers | |
| 5 | - * | |
| 6 | - * PostRenderObservers receive the onPostRender event every frame, allowing "draw-on-top" behaviour for API components | |
| 7 | - * | |
| 8 | - * @author Adam Mummery-Smith | |
| 9 | - */ | |
| 10 | -public interface PostRenderObserver extends Observer | |
| 11 | -{ | |
| 12 | - public abstract void onPostRender(int mouseX, int mouseY, float partialTicks); | |
| 13 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * LiteLoader Extensible API - Post-render Observers | |
| 5 | + * | |
| 6 | + * PostRenderObservers receive the onPostRender event every frame, allowing "draw-on-top" behaviour for API components | |
| 7 | + * | |
| 8 | + * @author Adam Mummery-Smith | |
| 9 | + */ | |
| 10 | +public interface PostRenderObserver extends Observer | |
| 11 | +{ | |
| 12 | + public abstract void onPostRender(int mouseX, int mouseY, float partialTicks); | |
| 13 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/ShutdownObserver.java renamed to src/main/java/com/mumfrey/liteloader/api/ShutdownObserver.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * LiteLoader Extensible API - ShutDownObserver | |
| 5 | - * | |
| 6 | - * ShutDownObservers receive an event when the game is shutting down due to a user request. They do NOT receive the | |
| 7 | - * callback when the VM is terminating, use a regular VM shutdownhook for that. | |
| 8 | - * | |
| 9 | - * @author Adam Mummery-Smith | |
| 10 | - */ | |
| 11 | -public interface ShutdownObserver extends Observer | |
| 12 | -{ | |
| 13 | - public abstract void onShutDown(); | |
| 14 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * LiteLoader Extensible API - ShutDownObserver | |
| 5 | + * | |
| 6 | + * ShutDownObservers receive an event when the game is shutting down due to a user request. They do NOT receive the | |
| 7 | + * callback when the VM is terminating, use a regular VM shutdownhook for that. | |
| 8 | + * | |
| 9 | + * @author Adam Mummery-Smith | |
| 10 | + */ | |
| 11 | +public interface ShutdownObserver extends Observer | |
| 12 | +{ | |
| 13 | + public abstract void onShutDown(); | |
| 14 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/TickObserver.java renamed to src/main/java/com/mumfrey/liteloader/api/TickObserver.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * LiteLoader Extensible API - TickObserver | |
| 5 | - * | |
| 6 | - * Received a callback every tick (duh) PRIOR to the mod tick event | |
| 7 | - * | |
| 8 | - * @author Adam Mummery-Smith | |
| 9 | - */ | |
| 10 | -public interface TickObserver extends Observer | |
| 11 | -{ | |
| 12 | - public abstract void onTick(boolean clock, float partialTicks, boolean inGame); | |
| 13 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * LiteLoader Extensible API - TickObserver | |
| 5 | + * | |
| 6 | + * Received a callback every tick (duh) PRIOR to the mod tick event | |
| 7 | + * | |
| 8 | + * @author Adam Mummery-Smith | |
| 9 | + */ | |
| 10 | +public interface TickObserver extends Observer | |
| 11 | +{ | |
| 12 | + public abstract void onTick(boolean clock, float partialTicks, boolean inGame); | |
| 13 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/TranslationProvider.java renamed to src/main/java/com/mumfrey/liteloader/api/TranslationProvider.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * Interface for providers which can handle translation requests | |
| 5 | - * | |
| 6 | - * @author Adam Mummery-Smith | |
| 7 | - */ | |
| 8 | -public interface TranslationProvider extends CustomisationProvider | |
| 9 | -{ | |
| 10 | - /** | |
| 11 | - * Translate the supplied key or return NULL if the provider has no translation for the specified key | |
| 12 | - */ | |
| 13 | - public abstract String translate(String key, Object... args); | |
| 14 | - | |
| 15 | - /** | |
| 16 | - * Translate the supplied key to the specified locale, or return NULL if the provider has no translation for this key | |
| 17 | - */ | |
| 18 | - public abstract String translate(String locale, String key, Object... args); | |
| 19 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * Interface for providers which can handle translation requests | |
| 5 | + * | |
| 6 | + * @author Adam Mummery-Smith | |
| 7 | + */ | |
| 8 | +public interface TranslationProvider extends CustomisationProvider | |
| 9 | +{ | |
| 10 | + /** | |
| 11 | + * Translate the supplied key or return NULL if the provider has no translation for the specified key | |
| 12 | + */ | |
| 13 | + public abstract String translate(String key, Object... args); | |
| 14 | + | |
| 15 | + /** | |
| 16 | + * Translate the supplied key to the specified locale, or return NULL if the provider has no translation for this key | |
| 17 | + */ | |
| 18 | + public abstract String translate(String locale, String key, Object... args); | |
| 19 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/WorldObserver.java renamed to src/main/java/com/mumfrey/liteloader/api/WorldObserver.java
| 1 | -package com.mumfrey.liteloader.api; | |
| 2 | - | |
| 3 | -import net.minecraft.world.World; | |
| 4 | - | |
| 5 | -/** | |
| 6 | - * LiteLoader Extensible API - WorldObserver | |
| 7 | - * | |
| 8 | - * WorldObservers receive a callback when the Minecraft.theWorld reference changes, beware the value is allowed | |
| 9 | - * to be null | |
| 10 | - * | |
| 11 | - * @author Adam Mummery-Smith | |
| 12 | - */ | |
| 13 | -public interface WorldObserver extends Observer | |
| 14 | -{ | |
| 15 | - public abstract void onWorldChanged(World world); | |
| 16 | -} | |
| 1 | +package com.mumfrey.liteloader.api; | |
| 2 | + | |
| 3 | +import net.minecraft.world.World; | |
| 4 | + | |
| 5 | +/** | |
| 6 | + * LiteLoader Extensible API - WorldObserver | |
| 7 | + * | |
| 8 | + * WorldObservers receive a callback when the Minecraft.theWorld reference changes, beware the value is allowed | |
| 9 | + * to be null | |
| 10 | + * | |
| 11 | + * @author Adam Mummery-Smith | |
| 12 | + */ | |
| 13 | +public interface WorldObserver extends Observer | |
| 14 | +{ | |
| 15 | + public abstract void onWorldChanged(World world); | |
| 16 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/exceptions/APIException.java renamed to src/main/java/com/mumfrey/liteloader/api/exceptions/APIException.java
| 1 | -package com.mumfrey.liteloader.api.exceptions; | |
| 2 | - | |
| 3 | -public abstract class APIException extends RuntimeException | |
| 4 | -{ | |
| 5 | - private static final long serialVersionUID = 1L; | |
| 6 | - | |
| 7 | - public APIException() | |
| 8 | - { | |
| 9 | - super(); | |
| 10 | - } | |
| 11 | - | |
| 12 | - public APIException(String message) | |
| 13 | - { | |
| 14 | - super(message); | |
| 15 | - } | |
| 16 | - | |
| 17 | - public APIException(Throwable cause) | |
| 18 | - { | |
| 19 | - super(cause); | |
| 20 | - } | |
| 21 | - | |
| 22 | - public APIException(String message, Throwable cause) | |
| 23 | - { | |
| 24 | - super(message, cause); | |
| 25 | - } | |
| 26 | - | |
| 1 | +package com.mumfrey.liteloader.api.exceptions; | |
| 2 | + | |
| 3 | +public abstract class APIException extends RuntimeException | |
| 4 | +{ | |
| 5 | + private static final long serialVersionUID = 1L; | |
| 6 | + | |
| 7 | + public APIException() | |
| 8 | + { | |
| 9 | + super(); | |
| 10 | + } | |
| 11 | + | |
| 12 | + public APIException(String message) | |
| 13 | + { | |
| 14 | + super(message); | |
| 15 | + } | |
| 16 | + | |
| 17 | + public APIException(Throwable cause) | |
| 18 | + { | |
| 19 | + super(cause); | |
| 20 | + } | |
| 21 | + | |
| 22 | + public APIException(String message, Throwable cause) | |
| 23 | + { | |
| 24 | + super(message, cause); | |
| 25 | + } | |
| 26 | + | |
| 27 | 27 | } |
| 28 | 28 | \ No newline at end of file | ... | ... |
java/common/com/mumfrey/liteloader/api/exceptions/InvalidAPIException.java renamed to src/main/java/com/mumfrey/liteloader/api/exceptions/InvalidAPIException.java
| 1 | -package com.mumfrey.liteloader.api.exceptions; | |
| 2 | - | |
| 3 | -public class InvalidAPIException extends APIException | |
| 4 | -{ | |
| 5 | - private static final long serialVersionUID = 1L; | |
| 6 | - | |
| 7 | - public InvalidAPIException(String message, Throwable cause) | |
| 8 | - { | |
| 9 | - super(message, cause); | |
| 10 | - } | |
| 11 | - | |
| 12 | - public InvalidAPIException(String message) | |
| 13 | - { | |
| 14 | - super(message); | |
| 15 | - } | |
| 16 | -} | |
| 1 | +package com.mumfrey.liteloader.api.exceptions; | |
| 2 | + | |
| 3 | +public class InvalidAPIException extends APIException | |
| 4 | +{ | |
| 5 | + private static final long serialVersionUID = 1L; | |
| 6 | + | |
| 7 | + public InvalidAPIException(String message, Throwable cause) | |
| 8 | + { | |
| 9 | + super(message, cause); | |
| 10 | + } | |
| 11 | + | |
| 12 | + public InvalidAPIException(String message) | |
| 13 | + { | |
| 14 | + super(message); | |
| 15 | + } | |
| 16 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/exceptions/InvalidAPIStateException.java renamed to src/main/java/com/mumfrey/liteloader/api/exceptions/InvalidAPIStateException.java
| 1 | -package com.mumfrey.liteloader.api.exceptions; | |
| 2 | - | |
| 3 | -public class InvalidAPIStateException extends APIException | |
| 4 | -{ | |
| 5 | - private static final long serialVersionUID = 1L; | |
| 6 | - | |
| 7 | - public InvalidAPIStateException(String message) | |
| 8 | - { | |
| 9 | - super(message); | |
| 10 | - } | |
| 11 | -} | |
| 1 | +package com.mumfrey.liteloader.api.exceptions; | |
| 2 | + | |
| 3 | +public class InvalidAPIStateException extends APIException | |
| 4 | +{ | |
| 5 | + private static final long serialVersionUID = 1L; | |
| 6 | + | |
| 7 | + public InvalidAPIStateException(String message) | |
| 8 | + { | |
| 9 | + super(message); | |
| 10 | + } | |
| 11 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/exceptions/InvalidProviderException.java renamed to src/main/java/com/mumfrey/liteloader/api/exceptions/InvalidProviderException.java
| 1 | -package com.mumfrey.liteloader.api.exceptions; | |
| 2 | - | |
| 3 | -public class InvalidProviderException extends APIException | |
| 4 | -{ | |
| 5 | - private static final long serialVersionUID = 1L; | |
| 6 | - | |
| 7 | - public InvalidProviderException(String message, Throwable cause) | |
| 8 | - { | |
| 9 | - super(message, cause); | |
| 10 | - } | |
| 11 | - | |
| 12 | - public InvalidProviderException(String message) | |
| 13 | - { | |
| 14 | - super(message); | |
| 15 | - } | |
| 16 | -} | |
| 1 | +package com.mumfrey.liteloader.api.exceptions; | |
| 2 | + | |
| 3 | +public class InvalidProviderException extends APIException | |
| 4 | +{ | |
| 5 | + private static final long serialVersionUID = 1L; | |
| 6 | + | |
| 7 | + public InvalidProviderException(String message, Throwable cause) | |
| 8 | + { | |
| 9 | + super(message, cause); | |
| 10 | + } | |
| 11 | + | |
| 12 | + public InvalidProviderException(String message) | |
| 13 | + { | |
| 14 | + super(message); | |
| 15 | + } | |
| 16 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/manager/APIAdapter.java renamed to src/main/java/com/mumfrey/liteloader/api/manager/APIAdapter.java
| 1 | -package com.mumfrey.liteloader.api.manager; | |
| 2 | - | |
| 3 | -import java.util.List; | |
| 4 | - | |
| 5 | -import com.mumfrey.liteloader.api.CoreProvider; | |
| 6 | -import com.mumfrey.liteloader.api.LiteAPI; | |
| 7 | -import com.mumfrey.liteloader.api.Observer; | |
| 8 | -import com.mumfrey.liteloader.interfaces.InterfaceRegistry; | |
| 9 | - | |
| 10 | -/** | |
| 11 | - * API Adapter provides convenience methods for invoking actions on ALL registered APIs | |
| 12 | - * | |
| 13 | - * @author Adam Mummery-Smith | |
| 14 | - */ | |
| 15 | -public interface APIAdapter | |
| 16 | -{ | |
| 17 | - /** | |
| 18 | - * Aggregate and return required transformers from all registered APIs | |
| 19 | - */ | |
| 20 | - public abstract List<String> getRequiredTransformers(); | |
| 21 | - | |
| 22 | - /** | |
| 23 | - * Aggregate and return required downstream transformers from all registered APIs | |
| 24 | - */ | |
| 25 | - public abstract List<String> getRequiredDownstreamTransformers(); | |
| 26 | - | |
| 27 | - /** | |
| 28 | - * Register interfaces from all registered APIs with the specified registry | |
| 29 | - */ | |
| 30 | - public abstract void registerInterfaces(InterfaceRegistry interfaceManager); | |
| 31 | - | |
| 32 | - /** | |
| 33 | - * Get the CoreProviders for the specified API. Consuming classes should call this method instead of calling API::getCoreProviders() | |
| 34 | - * directly since getCoreProviders() should only be invoked once and the resulting collection is cached by the API Adapter | |
| 35 | - */ | |
| 36 | - public abstract List<CoreProvider> getCoreProviders(); | |
| 37 | - | |
| 38 | - /** | |
| 39 | - * Get the observers for the specified API. Consuming classes should call this method instead of calling API::getObservers() directly | |
| 40 | - * since getObservers() should only be invoked once and the resulting list is cached by the API Adapter | |
| 41 | - * | |
| 42 | - * @param api API to get observers for | |
| 43 | - */ | |
| 44 | - public abstract List<? extends Observer> getObservers(LiteAPI api); | |
| 45 | - | |
| 46 | - /** | |
| 47 | - * Get the observers for the specified API which implement the specified Observer interface. Always returns a valid list (even if | |
| 48 | - * empty) and doesn't return null. | |
| 49 | - * | |
| 50 | - * @param api API to get observers for | |
| 51 | - * @param observerType type of observer to search for | |
| 52 | - */ | |
| 53 | - public abstract <T extends Observer> List<T> getObservers(LiteAPI api, Class<T> observerType); | |
| 54 | - | |
| 55 | - /** | |
| 56 | - * Get the observers for all registered APIs which implement the specified Observer interface. Always returns a valid list (even if | |
| 57 | - * empty) and doesn't return null. Also includes core providers | |
| 58 | - * | |
| 59 | - * @param observerType type of observer to search for | |
| 60 | - */ | |
| 61 | - public abstract <T extends Observer> List<T> getAllObservers(Class<T> observerType); | |
| 62 | - | |
| 63 | - /** | |
| 64 | - * @param api | |
| 65 | - */ | |
| 66 | - public abstract List<? extends Observer> getPreInitObservers(LiteAPI api); | |
| 67 | - | |
| 68 | - /** | |
| 69 | - * @param observerType | |
| 70 | - */ | |
| 71 | - public abstract <T extends Observer> List<T> getPreInitObservers(Class<T> observerType); | |
| 72 | -} | |
| 1 | +package com.mumfrey.liteloader.api.manager; | |
| 2 | + | |
| 3 | +import java.util.List; | |
| 4 | + | |
| 5 | +import com.mumfrey.liteloader.api.CoreProvider; | |
| 6 | +import com.mumfrey.liteloader.api.LiteAPI; | |
| 7 | +import com.mumfrey.liteloader.api.Observer; | |
| 8 | +import com.mumfrey.liteloader.interfaces.InterfaceRegistry; | |
| 9 | + | |
| 10 | +/** | |
| 11 | + * API Adapter provides convenience methods for invoking actions on ALL registered APIs | |
| 12 | + * | |
| 13 | + * @author Adam Mummery-Smith | |
| 14 | + */ | |
| 15 | +public interface APIAdapter | |
| 16 | +{ | |
| 17 | + /** | |
| 18 | + * Aggregate and return required transformers from all registered APIs | |
| 19 | + */ | |
| 20 | + public abstract List<String> getRequiredTransformers(); | |
| 21 | + | |
| 22 | + /** | |
| 23 | + * Aggregate and return required downstream transformers from all registered APIs | |
| 24 | + */ | |
| 25 | + public abstract List<String> getRequiredDownstreamTransformers(); | |
| 26 | + | |
| 27 | + /** | |
| 28 | + * Register interfaces from all registered APIs with the specified registry | |
| 29 | + */ | |
| 30 | + public abstract void registerInterfaces(InterfaceRegistry interfaceManager); | |
| 31 | + | |
| 32 | + /** | |
| 33 | + * Get the CoreProviders for the specified API. Consuming classes should call this method instead of calling API::getCoreProviders() | |
| 34 | + * directly since getCoreProviders() should only be invoked once and the resulting collection is cached by the API Adapter | |
| 35 | + */ | |
| 36 | + public abstract List<CoreProvider> getCoreProviders(); | |
| 37 | + | |
| 38 | + /** | |
| 39 | + * Get the observers for the specified API. Consuming classes should call this method instead of calling API::getObservers() directly | |
| 40 | + * since getObservers() should only be invoked once and the resulting list is cached by the API Adapter | |
| 41 | + * | |
| 42 | + * @param api API to get observers for | |
| 43 | + */ | |
| 44 | + public abstract List<? extends Observer> getObservers(LiteAPI api); | |
| 45 | + | |
| 46 | + /** | |
| 47 | + * Get the observers for the specified API which implement the specified Observer interface. Always returns a valid list (even if | |
| 48 | + * empty) and doesn't return null. | |
| 49 | + * | |
| 50 | + * @param api API to get observers for | |
| 51 | + * @param observerType type of observer to search for | |
| 52 | + */ | |
| 53 | + public abstract <T extends Observer> List<T> getObservers(LiteAPI api, Class<T> observerType); | |
| 54 | + | |
| 55 | + /** | |
| 56 | + * Get the observers for all registered APIs which implement the specified Observer interface. Always returns a valid list (even if | |
| 57 | + * empty) and doesn't return null. Also includes core providers | |
| 58 | + * | |
| 59 | + * @param observerType type of observer to search for | |
| 60 | + */ | |
| 61 | + public abstract <T extends Observer> List<T> getAllObservers(Class<T> observerType); | |
| 62 | + | |
| 63 | + /** | |
| 64 | + * @param api | |
| 65 | + */ | |
| 66 | + public abstract List<? extends Observer> getPreInitObservers(LiteAPI api); | |
| 67 | + | |
| 68 | + /** | |
| 69 | + * @param observerType | |
| 70 | + */ | |
| 71 | + public abstract <T extends Observer> List<T> getPreInitObservers(Class<T> observerType); | |
| 72 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/manager/APIProvider.java renamed to src/main/java/com/mumfrey/liteloader/api/manager/APIProvider.java
| 1 | -package com.mumfrey.liteloader.api.manager; | |
| 2 | - | |
| 3 | -import java.util.regex.Pattern; | |
| 4 | - | |
| 5 | -import com.mumfrey.liteloader.api.LiteAPI; | |
| 6 | - | |
| 7 | -/** | |
| 8 | - * Interface for the API Provider, which manages API instances and lifecycle | |
| 9 | - * | |
| 10 | - * @author Adam Mummery-Smith | |
| 11 | - */ | |
| 12 | -public interface APIProvider | |
| 13 | -{ | |
| 14 | - public static final Pattern idAndRevisionPattern = Pattern.compile("^([^@]+)@([0-9]{1,5})$"); | |
| 15 | - | |
| 16 | - /** | |
| 17 | - * Get all available API instances in an array | |
| 18 | - */ | |
| 19 | - public abstract LiteAPI[] getAPIs(); | |
| 20 | - | |
| 21 | - /** | |
| 22 | - * Returns true if the specified API is available | |
| 23 | - * | |
| 24 | - * @param identifier API identifier (case sensitive) or API identifier-plus-minrevision in the form "identifier@minver" | |
| 25 | - */ | |
| 26 | - public abstract boolean isAPIAvailable(String identifier); | |
| 27 | - | |
| 28 | - /** | |
| 29 | - * Returns true if the specified API is available | |
| 30 | - * | |
| 31 | - * @param identifier API identifier (case sensitive) | |
| 32 | - * @param minRevision minimum required revision | |
| 33 | - */ | |
| 34 | - public abstract boolean isAPIAvailable(String identifier, int minRevision); | |
| 35 | - | |
| 36 | - /** | |
| 37 | - * Gets a specific API by identifier | |
| 38 | - * | |
| 39 | - * @param identifier API identifier (case sensitive) | |
| 40 | - */ | |
| 41 | - public abstract LiteAPI getAPI(String identifier); | |
| 42 | - | |
| 43 | - /** | |
| 44 | - * Gets a specific API by class | |
| 45 | - * | |
| 46 | - * @param apiClass | |
| 47 | - */ | |
| 48 | - public abstract <T extends LiteAPI> T getAPI(Class<T> apiClass); | |
| 1 | +package com.mumfrey.liteloader.api.manager; | |
| 2 | + | |
| 3 | +import java.util.regex.Pattern; | |
| 4 | + | |
| 5 | +import com.mumfrey.liteloader.api.LiteAPI; | |
| 6 | + | |
| 7 | +/** | |
| 8 | + * Interface for the API Provider, which manages API instances and lifecycle | |
| 9 | + * | |
| 10 | + * @author Adam Mummery-Smith | |
| 11 | + */ | |
| 12 | +public interface APIProvider | |
| 13 | +{ | |
| 14 | + public static final Pattern idAndRevisionPattern = Pattern.compile("^([^@]+)@([0-9]{1,5})$"); | |
| 15 | + | |
| 16 | + /** | |
| 17 | + * Get all available API instances in an array | |
| 18 | + */ | |
| 19 | + public abstract LiteAPI[] getAPIs(); | |
| 20 | + | |
| 21 | + /** | |
| 22 | + * Returns true if the specified API is available | |
| 23 | + * | |
| 24 | + * @param identifier API identifier (case sensitive) or API identifier-plus-minrevision in the form "identifier@minver" | |
| 25 | + */ | |
| 26 | + public abstract boolean isAPIAvailable(String identifier); | |
| 27 | + | |
| 28 | + /** | |
| 29 | + * Returns true if the specified API is available | |
| 30 | + * | |
| 31 | + * @param identifier API identifier (case sensitive) | |
| 32 | + * @param minRevision minimum required revision | |
| 33 | + */ | |
| 34 | + public abstract boolean isAPIAvailable(String identifier, int minRevision); | |
| 35 | + | |
| 36 | + /** | |
| 37 | + * Gets a specific API by identifier | |
| 38 | + * | |
| 39 | + * @param identifier API identifier (case sensitive) | |
| 40 | + */ | |
| 41 | + public abstract LiteAPI getAPI(String identifier); | |
| 42 | + | |
| 43 | + /** | |
| 44 | + * Gets a specific API by class | |
| 45 | + * | |
| 46 | + * @param apiClass | |
| 47 | + */ | |
| 48 | + public abstract <T extends LiteAPI> T getAPI(Class<T> apiClass); | |
| 49 | 49 | } |
| 50 | 50 | \ No newline at end of file | ... | ... |
java/common/com/mumfrey/liteloader/api/manager/APIProviderBasic.java renamed to src/main/java/com/mumfrey/liteloader/api/manager/APIProviderBasic.java
| 1 | -package com.mumfrey.liteloader.api.manager; | |
| 2 | - | |
| 3 | -import java.util.ArrayList; | |
| 4 | -import java.util.Arrays; | |
| 5 | -import java.util.Collections; | |
| 6 | -import java.util.HashMap; | |
| 7 | -import java.util.List; | |
| 8 | -import java.util.Map; | |
| 9 | -import java.util.regex.Matcher; | |
| 10 | - | |
| 11 | -import com.mumfrey.liteloader.api.CoreProvider; | |
| 12 | -import com.mumfrey.liteloader.api.LiteAPI; | |
| 13 | -import com.mumfrey.liteloader.api.Observer; | |
| 14 | -import com.mumfrey.liteloader.interfaces.InterfaceRegistry; | |
| 15 | - | |
| 16 | -/** | |
| 17 | - * Basic implementation of APIProvider and APIAdapter | |
| 18 | - * | |
| 19 | - * @author Adam Mummery-Smith | |
| 20 | - */ | |
| 21 | -class APIProviderBasic implements APIProvider, APIAdapter | |
| 22 | -{ | |
| 23 | - /** | |
| 24 | - * API instances | |
| 25 | - */ | |
| 26 | - private final LiteAPI[] apis; | |
| 27 | - | |
| 28 | - /** | |
| 29 | - * Map of API identifiers to API instances | |
| 30 | - */ | |
| 31 | - private final Map<String, LiteAPI> apiMap = new HashMap<String, LiteAPI>(); | |
| 32 | - | |
| 33 | - /** | |
| 34 | - * Cached observer set | |
| 35 | - */ | |
| 36 | - private final Map<LiteAPI, List<? extends Observer>> observers = new HashMap<LiteAPI, List<? extends Observer>>(); | |
| 37 | - | |
| 38 | - /** | |
| 39 | - * Cached preinit observers | |
| 40 | - */ | |
| 41 | - private final Map<LiteAPI, List<? extends Observer>> preInitiObservers = new HashMap<LiteAPI, List<? extends Observer>>(); | |
| 42 | - | |
| 43 | - /** | |
| 44 | - * Cached CoreProvider set | |
| 45 | - */ | |
| 46 | - private List<CoreProvider> coreProviders; | |
| 47 | - | |
| 48 | - APIProviderBasic(LiteAPI[] apis) | |
| 49 | - { | |
| 50 | - this.apis = apis; | |
| 51 | - | |
| 52 | - for (LiteAPI api : this.apis) | |
| 53 | - { | |
| 54 | - this.apiMap.put(api.getIdentifier(), api); | |
| 55 | - } | |
| 56 | - } | |
| 57 | - | |
| 58 | - /* (non-Javadoc) | |
| 59 | - * @see com.mumfrey.liteloader.api.manager.APIProvider#getRequiredTransformers() | |
| 60 | - */ | |
| 61 | - @Override | |
| 62 | - public List<String> getRequiredTransformers() | |
| 63 | - { | |
| 64 | - List<String> requiredTransformers = new ArrayList<String>(); | |
| 65 | - | |
| 66 | - for (LiteAPI api : this.apis) | |
| 67 | - { | |
| 68 | - String[] apiTransformers = api.getRequiredTransformers(); | |
| 69 | - if (apiTransformers != null) | |
| 70 | - { | |
| 71 | - requiredTransformers.addAll(Arrays.asList(apiTransformers)); | |
| 72 | - } | |
| 73 | - } | |
| 74 | - | |
| 75 | - return requiredTransformers; | |
| 76 | - } | |
| 77 | - | |
| 78 | - /* (non-Javadoc) | |
| 79 | - * @see com.mumfrey.liteloader.api.manager.APIProvider#getRequiredDownstreamTransformers() | |
| 80 | - */ | |
| 81 | - @Override | |
| 82 | - public List<String> getRequiredDownstreamTransformers() | |
| 83 | - { | |
| 84 | - List<String> requiredDownstreamTransformers = new ArrayList<String>(); | |
| 85 | - | |
| 86 | - for (LiteAPI api : this.apis) | |
| 87 | - { | |
| 88 | - String[] apiTransformers = api.getRequiredDownstreamTransformers(); | |
| 89 | - if (apiTransformers != null) | |
| 90 | - { | |
| 91 | - requiredDownstreamTransformers.addAll(Arrays.asList(apiTransformers)); | |
| 92 | - } | |
| 93 | - } | |
| 94 | - | |
| 95 | - return requiredDownstreamTransformers; | |
| 96 | - } | |
| 97 | - | |
| 98 | - /* (non-Javadoc) | |
| 99 | - * @see com.mumfrey.liteloader.api.manager.APIProvider#getObservers(com.mumfrey.liteloader.api.LiteAPI) | |
| 100 | - */ | |
| 101 | - @Override | |
| 102 | - public List<? extends Observer> getObservers(LiteAPI api) | |
| 103 | - { | |
| 104 | - if (!this.observers.containsKey(api)) | |
| 105 | - { | |
| 106 | - List<Observer> apiObservers = api.getObservers(); | |
| 107 | - this.observers.put(api, Collections.unmodifiableList(apiObservers != null ? apiObservers : new ArrayList<Observer>())); | |
| 108 | - } | |
| 109 | - | |
| 110 | - return this.observers.get(api); | |
| 111 | - } | |
| 112 | - | |
| 113 | - @Override | |
| 114 | - public List<? extends Observer> getPreInitObservers(LiteAPI api) | |
| 115 | - { | |
| 116 | - if (!this.preInitiObservers.containsKey(api)) | |
| 117 | - { | |
| 118 | - List<Observer> apiObservers = api.getPreInitObservers(); | |
| 119 | - this.preInitiObservers.put(api, Collections.unmodifiableList(apiObservers != null ? apiObservers : new ArrayList<Observer>())); | |
| 120 | - } | |
| 121 | - | |
| 122 | - return this.preInitiObservers.get(api); | |
| 123 | - } | |
| 124 | - | |
| 125 | - @SuppressWarnings("unchecked") | |
| 126 | - @Override | |
| 127 | - public <T extends Observer> List<T> getObservers(LiteAPI api, Class<T> observerType) | |
| 128 | - { | |
| 129 | - List<T> matchingObservers = new ArrayList<T>(); | |
| 130 | - | |
| 131 | - for (Observer observer : this.getObservers(api)) | |
| 132 | - { | |
| 133 | - if (observerType.isAssignableFrom(observer.getClass()) && !matchingObservers.contains(observer)) | |
| 134 | - { | |
| 135 | - matchingObservers.add((T)observer); | |
| 136 | - } | |
| 137 | - } | |
| 138 | - | |
| 139 | - return matchingObservers; | |
| 140 | - } | |
| 141 | - | |
| 142 | - @SuppressWarnings("unchecked") | |
| 143 | - @Override | |
| 144 | - public <T extends Observer> List<T> getAllObservers(Class<T> observerType) | |
| 145 | - { | |
| 146 | - List<T> matchingObservers = new ArrayList<T>(); | |
| 147 | - for (LiteAPI api : this.apis) | |
| 148 | - { | |
| 149 | - matchingObservers.addAll(this.<T>getObservers(api, observerType)); | |
| 150 | - } | |
| 151 | - | |
| 152 | - for (CoreProvider coreProvider : this.getCoreProviders()) | |
| 153 | - { | |
| 154 | - if (observerType.isAssignableFrom(coreProvider.getClass()) && !matchingObservers.contains(coreProvider)) | |
| 155 | - matchingObservers.add((T)coreProvider); | |
| 156 | - } | |
| 157 | - | |
| 158 | - return matchingObservers; | |
| 159 | - } | |
| 160 | - | |
| 161 | - @SuppressWarnings("unchecked") | |
| 162 | - @Override | |
| 163 | - public <T extends Observer> List<T> getPreInitObservers(Class<T> observerType) | |
| 164 | - { | |
| 165 | - List<T> matchingObservers = new ArrayList<T>(); | |
| 166 | - for (LiteAPI api : this.apis) | |
| 167 | - { | |
| 168 | - for (Observer observer : this.getPreInitObservers(api)) | |
| 169 | - { | |
| 170 | - if (observerType.isAssignableFrom(observer.getClass()) && !matchingObservers.contains(observer)) | |
| 171 | - { | |
| 172 | - matchingObservers.add((T)observer); | |
| 173 | - } | |
| 174 | - } | |
| 175 | - } | |
| 176 | - | |
| 177 | - return matchingObservers; | |
| 178 | - } | |
| 179 | - | |
| 180 | - /* (non-Javadoc) | |
| 181 | - * @see com.mumfrey.liteloader.api.manager.APIProvider#registerInterfaceProviders(com.mumfrey.liteloader.core.InterfaceManager) | |
| 182 | - */ | |
| 183 | - @Override | |
| 184 | - public void registerInterfaces(InterfaceRegistry interfaceManager) | |
| 185 | - { | |
| 186 | - for (LiteAPI api : this.apis) | |
| 187 | - { | |
| 188 | - interfaceManager.registerAPI(api); | |
| 189 | - } | |
| 190 | - } | |
| 191 | - | |
| 192 | - /* (non-Javadoc) | |
| 193 | - * @see com.mumfrey.liteloader.api.manager.APIAdapter#getCoreProviders() | |
| 194 | - */ | |
| 195 | - @Override | |
| 196 | - public List<CoreProvider> getCoreProviders() | |
| 197 | - { | |
| 198 | - if (this.coreProviders == null) | |
| 199 | - { | |
| 200 | - List<CoreProvider> coreProviders = new ArrayList<CoreProvider>(); | |
| 201 | - | |
| 202 | - for (LiteAPI api : this.apis) | |
| 203 | - { | |
| 204 | - List<CoreProvider> apiCoreProviders = api.getCoreProviders(); | |
| 205 | - if (apiCoreProviders != null) | |
| 206 | - { | |
| 207 | - coreProviders.addAll(apiCoreProviders); | |
| 208 | - } | |
| 209 | - } | |
| 210 | - | |
| 211 | - this.coreProviders = Collections.unmodifiableList(coreProviders); | |
| 212 | - } | |
| 213 | - | |
| 214 | - return this.coreProviders; | |
| 215 | - } | |
| 216 | - | |
| 217 | - /* (non-Javadoc) | |
| 218 | - * @see com.mumfrey.liteloader.api.manager.APIProvider#getAPIs() | |
| 219 | - */ | |
| 220 | - @Override | |
| 221 | - public LiteAPI[] getAPIs() | |
| 222 | - { | |
| 223 | - return this.apis; | |
| 224 | - } | |
| 225 | - | |
| 226 | - /* (non-Javadoc) | |
| 227 | - * @see com.mumfrey.liteloader.api.manager.APIProvider#isAPIAvailable(java.lang.String) | |
| 228 | - */ | |
| 229 | - @Override | |
| 230 | - public boolean isAPIAvailable(String identifier) | |
| 231 | - { | |
| 232 | - if (identifier != null && identifier.contains("@")) | |
| 233 | - { | |
| 234 | - Matcher idAndRevisionPatternMatcher = APIProvider.idAndRevisionPattern.matcher(identifier); | |
| 235 | - if (idAndRevisionPatternMatcher.matches()) | |
| 236 | - { | |
| 237 | - return this.isAPIAvailable(idAndRevisionPatternMatcher.group(1), Integer.parseInt(idAndRevisionPatternMatcher.group(2))); | |
| 238 | - } | |
| 239 | - } | |
| 240 | - | |
| 241 | - return this.apiMap.containsKey(identifier); | |
| 242 | - } | |
| 243 | - | |
| 244 | - /* (non-Javadoc) | |
| 245 | - * @see com.mumfrey.liteloader.api.manager.APIProvider#isAPIAvailable(java.lang.String, int) | |
| 246 | - */ | |
| 247 | - @Override | |
| 248 | - public boolean isAPIAvailable(String identifier, int minRevision) | |
| 249 | - { | |
| 250 | - LiteAPI api = this.apiMap.get(identifier); | |
| 251 | - if (api == null) return false; | |
| 252 | - | |
| 253 | - return api.getRevision() >= minRevision; | |
| 254 | - } | |
| 255 | - | |
| 256 | - /* (non-Javadoc) | |
| 257 | - * @see com.mumfrey.liteloader.api.manager.APIProvider#getAPI(java.lang.String) | |
| 258 | - */ | |
| 259 | - @Override | |
| 260 | - public LiteAPI getAPI(String identifier) | |
| 261 | - { | |
| 262 | - return this.apiMap.get(identifier); | |
| 263 | - } | |
| 264 | - | |
| 265 | - /* (non-Javadoc) | |
| 266 | - * @see com.mumfrey.liteloader.api.manager.APIProvider#getAPI(java.lang.Class) | |
| 267 | - */ | |
| 268 | - @SuppressWarnings("unchecked") | |
| 269 | - @Override | |
| 270 | - public <T extends LiteAPI> T getAPI(Class<T> apiClass) | |
| 271 | - { | |
| 272 | - try | |
| 273 | - { | |
| 274 | - for (LiteAPI api : this.apis) | |
| 275 | - { | |
| 276 | - if (apiClass.isAssignableFrom(api.getClass())) | |
| 277 | - return (T)api; | |
| 278 | - } | |
| 279 | - } | |
| 280 | - catch (NullPointerException ex1) {} | |
| 281 | - catch (ClassCastException ex2) {} | |
| 282 | - | |
| 283 | - return null; | |
| 284 | - } | |
| 285 | -} | |
| 1 | +package com.mumfrey.liteloader.api.manager; | |
| 2 | + | |
| 3 | +import java.util.ArrayList; | |
| 4 | +import java.util.Arrays; | |
| 5 | +import java.util.Collections; | |
| 6 | +import java.util.HashMap; | |
| 7 | +import java.util.List; | |
| 8 | +import java.util.Map; | |
| 9 | +import java.util.regex.Matcher; | |
| 10 | + | |
| 11 | +import com.mumfrey.liteloader.api.CoreProvider; | |
| 12 | +import com.mumfrey.liteloader.api.LiteAPI; | |
| 13 | +import com.mumfrey.liteloader.api.Observer; | |
| 14 | +import com.mumfrey.liteloader.interfaces.InterfaceRegistry; | |
| 15 | + | |
| 16 | +/** | |
| 17 | + * Basic implementation of APIProvider and APIAdapter | |
| 18 | + * | |
| 19 | + * @author Adam Mummery-Smith | |
| 20 | + */ | |
| 21 | +class APIProviderBasic implements APIProvider, APIAdapter | |
| 22 | +{ | |
| 23 | + /** | |
| 24 | + * API instances | |
| 25 | + */ | |
| 26 | + private final LiteAPI[] apis; | |
| 27 | + | |
| 28 | + /** | |
| 29 | + * Map of API identifiers to API instances | |
| 30 | + */ | |
| 31 | + private final Map<String, LiteAPI> apiMap = new HashMap<String, LiteAPI>(); | |
| 32 | + | |
| 33 | + /** | |
| 34 | + * Cached observer set | |
| 35 | + */ | |
| 36 | + private final Map<LiteAPI, List<? extends Observer>> observers = new HashMap<LiteAPI, List<? extends Observer>>(); | |
| 37 | + | |
| 38 | + /** | |
| 39 | + * Cached preinit observers | |
| 40 | + */ | |
| 41 | + private final Map<LiteAPI, List<? extends Observer>> preInitiObservers = new HashMap<LiteAPI, List<? extends Observer>>(); | |
| 42 | + | |
| 43 | + /** | |
| 44 | + * Cached CoreProvider set | |
| 45 | + */ | |
| 46 | + private List<CoreProvider> coreProviders; | |
| 47 | + | |
| 48 | + APIProviderBasic(LiteAPI[] apis) | |
| 49 | + { | |
| 50 | + this.apis = apis; | |
| 51 | + | |
| 52 | + for (LiteAPI api : this.apis) | |
| 53 | + { | |
| 54 | + this.apiMap.put(api.getIdentifier(), api); | |
| 55 | + } | |
| 56 | + } | |
| 57 | + | |
| 58 | + /* (non-Javadoc) | |
| 59 | + * @see com.mumfrey.liteloader.api.manager.APIProvider#getRequiredTransformers() | |
| 60 | + */ | |
| 61 | + @Override | |
| 62 | + public List<String> getRequiredTransformers() | |
| 63 | + { | |
| 64 | + List<String> requiredTransformers = new ArrayList<String>(); | |
| 65 | + | |
| 66 | + for (LiteAPI api : this.apis) | |
| 67 | + { | |
| 68 | + String[] apiTransformers = api.getRequiredTransformers(); | |
| 69 | + if (apiTransformers != null) | |
| 70 | + { | |
| 71 | + requiredTransformers.addAll(Arrays.asList(apiTransformers)); | |
| 72 | + } | |
| 73 | + } | |
| 74 | + | |
| 75 | + return requiredTransformers; | |
| 76 | + } | |
| 77 | + | |
| 78 | + /* (non-Javadoc) | |
| 79 | + * @see com.mumfrey.liteloader.api.manager.APIProvider#getRequiredDownstreamTransformers() | |
| 80 | + */ | |
| 81 | + @Override | |
| 82 | + public List<String> getRequiredDownstreamTransformers() | |
| 83 | + { | |
| 84 | + List<String> requiredDownstreamTransformers = new ArrayList<String>(); | |
| 85 | + | |
| 86 | + for (LiteAPI api : this.apis) | |
| 87 | + { | |
| 88 | + String[] apiTransformers = api.getRequiredDownstreamTransformers(); | |
| 89 | + if (apiTransformers != null) | |
| 90 | + { | |
| 91 | + requiredDownstreamTransformers.addAll(Arrays.asList(apiTransformers)); | |
| 92 | + } | |
| 93 | + } | |
| 94 | + | |
| 95 | + return requiredDownstreamTransformers; | |
| 96 | + } | |
| 97 | + | |
| 98 | + /* (non-Javadoc) | |
| 99 | + * @see com.mumfrey.liteloader.api.manager.APIProvider#getObservers(com.mumfrey.liteloader.api.LiteAPI) | |
| 100 | + */ | |
| 101 | + @Override | |
| 102 | + public List<? extends Observer> getObservers(LiteAPI api) | |
| 103 | + { | |
| 104 | + if (!this.observers.containsKey(api)) | |
| 105 | + { | |
| 106 | + List<Observer> apiObservers = api.getObservers(); | |
| 107 | + this.observers.put(api, Collections.unmodifiableList(apiObservers != null ? apiObservers : new ArrayList<Observer>())); | |
| 108 | + } | |
| 109 | + | |
| 110 | + return this.observers.get(api); | |
| 111 | + } | |
| 112 | + | |
| 113 | + @Override | |
| 114 | + public List<? extends Observer> getPreInitObservers(LiteAPI api) | |
| 115 | + { | |
| 116 | + if (!this.preInitiObservers.containsKey(api)) | |
| 117 | + { | |
| 118 | + List<Observer> apiObservers = api.getPreInitObservers(); | |
| 119 | + this.preInitiObservers.put(api, Collections.unmodifiableList(apiObservers != null ? apiObservers : new ArrayList<Observer>())); | |
| 120 | + } | |
| 121 | + | |
| 122 | + return this.preInitiObservers.get(api); | |
| 123 | + } | |
| 124 | + | |
| 125 | + @SuppressWarnings("unchecked") | |
| 126 | + @Override | |
| 127 | + public <T extends Observer> List<T> getObservers(LiteAPI api, Class<T> observerType) | |
| 128 | + { | |
| 129 | + List<T> matchingObservers = new ArrayList<T>(); | |
| 130 | + | |
| 131 | + for (Observer observer : this.getObservers(api)) | |
| 132 | + { | |
| 133 | + if (observerType.isAssignableFrom(observer.getClass()) && !matchingObservers.contains(observer)) | |
| 134 | + { | |
| 135 | + matchingObservers.add((T)observer); | |
| 136 | + } | |
| 137 | + } | |
| 138 | + | |
| 139 | + return matchingObservers; | |
| 140 | + } | |
| 141 | + | |
| 142 | + @SuppressWarnings("unchecked") | |
| 143 | + @Override | |
| 144 | + public <T extends Observer> List<T> getAllObservers(Class<T> observerType) | |
| 145 | + { | |
| 146 | + List<T> matchingObservers = new ArrayList<T>(); | |
| 147 | + for (LiteAPI api : this.apis) | |
| 148 | + { | |
| 149 | + matchingObservers.addAll(this.<T>getObservers(api, observerType)); | |
| 150 | + } | |
| 151 | + | |
| 152 | + for (CoreProvider coreProvider : this.getCoreProviders()) | |
| 153 | + { | |
| 154 | + if (observerType.isAssignableFrom(coreProvider.getClass()) && !matchingObservers.contains(coreProvider)) | |
| 155 | + matchingObservers.add((T)coreProvider); | |
| 156 | + } | |
| 157 | + | |
| 158 | + return matchingObservers; | |
| 159 | + } | |
| 160 | + | |
| 161 | + @SuppressWarnings("unchecked") | |
| 162 | + @Override | |
| 163 | + public <T extends Observer> List<T> getPreInitObservers(Class<T> observerType) | |
| 164 | + { | |
| 165 | + List<T> matchingObservers = new ArrayList<T>(); | |
| 166 | + for (LiteAPI api : this.apis) | |
| 167 | + { | |
| 168 | + for (Observer observer : this.getPreInitObservers(api)) | |
| 169 | + { | |
| 170 | + if (observerType.isAssignableFrom(observer.getClass()) && !matchingObservers.contains(observer)) | |
| 171 | + { | |
| 172 | + matchingObservers.add((T)observer); | |
| 173 | + } | |
| 174 | + } | |
| 175 | + } | |
| 176 | + | |
| 177 | + return matchingObservers; | |
| 178 | + } | |
| 179 | + | |
| 180 | + /* (non-Javadoc) | |
| 181 | + * @see com.mumfrey.liteloader.api.manager.APIProvider#registerInterfaceProviders(com.mumfrey.liteloader.core.InterfaceManager) | |
| 182 | + */ | |
| 183 | + @Override | |
| 184 | + public void registerInterfaces(InterfaceRegistry interfaceManager) | |
| 185 | + { | |
| 186 | + for (LiteAPI api : this.apis) | |
| 187 | + { | |
| 188 | + interfaceManager.registerAPI(api); | |
| 189 | + } | |
| 190 | + } | |
| 191 | + | |
| 192 | + /* (non-Javadoc) | |
| 193 | + * @see com.mumfrey.liteloader.api.manager.APIAdapter#getCoreProviders() | |
| 194 | + */ | |
| 195 | + @Override | |
| 196 | + public List<CoreProvider> getCoreProviders() | |
| 197 | + { | |
| 198 | + if (this.coreProviders == null) | |
| 199 | + { | |
| 200 | + List<CoreProvider> coreProviders = new ArrayList<CoreProvider>(); | |
| 201 | + | |
| 202 | + for (LiteAPI api : this.apis) | |
| 203 | + { | |
| 204 | + List<CoreProvider> apiCoreProviders = api.getCoreProviders(); | |
| 205 | + if (apiCoreProviders != null) | |
| 206 | + { | |
| 207 | + coreProviders.addAll(apiCoreProviders); | |
| 208 | + } | |
| 209 | + } | |
| 210 | + | |
| 211 | + this.coreProviders = Collections.unmodifiableList(coreProviders); | |
| 212 | + } | |
| 213 | + | |
| 214 | + return this.coreProviders; | |
| 215 | + } | |
| 216 | + | |
| 217 | + /* (non-Javadoc) | |
| 218 | + * @see com.mumfrey.liteloader.api.manager.APIProvider#getAPIs() | |
| 219 | + */ | |
| 220 | + @Override | |
| 221 | + public LiteAPI[] getAPIs() | |
| 222 | + { | |
| 223 | + return this.apis; | |
| 224 | + } | |
| 225 | + | |
| 226 | + /* (non-Javadoc) | |
| 227 | + * @see com.mumfrey.liteloader.api.manager.APIProvider#isAPIAvailable(java.lang.String) | |
| 228 | + */ | |
| 229 | + @Override | |
| 230 | + public boolean isAPIAvailable(String identifier) | |
| 231 | + { | |
| 232 | + if (identifier != null && identifier.contains("@")) | |
| 233 | + { | |
| 234 | + Matcher idAndRevisionPatternMatcher = APIProvider.idAndRevisionPattern.matcher(identifier); | |
| 235 | + if (idAndRevisionPatternMatcher.matches()) | |
| 236 | + { | |
| 237 | + return this.isAPIAvailable(idAndRevisionPatternMatcher.group(1), Integer.parseInt(idAndRevisionPatternMatcher.group(2))); | |
| 238 | + } | |
| 239 | + } | |
| 240 | + | |
| 241 | + return this.apiMap.containsKey(identifier); | |
| 242 | + } | |
| 243 | + | |
| 244 | + /* (non-Javadoc) | |
| 245 | + * @see com.mumfrey.liteloader.api.manager.APIProvider#isAPIAvailable(java.lang.String, int) | |
| 246 | + */ | |
| 247 | + @Override | |
| 248 | + public boolean isAPIAvailable(String identifier, int minRevision) | |
| 249 | + { | |
| 250 | + LiteAPI api = this.apiMap.get(identifier); | |
| 251 | + if (api == null) return false; | |
| 252 | + | |
| 253 | + return api.getRevision() >= minRevision; | |
| 254 | + } | |
| 255 | + | |
| 256 | + /* (non-Javadoc) | |
| 257 | + * @see com.mumfrey.liteloader.api.manager.APIProvider#getAPI(java.lang.String) | |
| 258 | + */ | |
| 259 | + @Override | |
| 260 | + public LiteAPI getAPI(String identifier) | |
| 261 | + { | |
| 262 | + return this.apiMap.get(identifier); | |
| 263 | + } | |
| 264 | + | |
| 265 | + /* (non-Javadoc) | |
| 266 | + * @see com.mumfrey.liteloader.api.manager.APIProvider#getAPI(java.lang.Class) | |
| 267 | + */ | |
| 268 | + @SuppressWarnings("unchecked") | |
| 269 | + @Override | |
| 270 | + public <T extends LiteAPI> T getAPI(Class<T> apiClass) | |
| 271 | + { | |
| 272 | + try | |
| 273 | + { | |
| 274 | + for (LiteAPI api : this.apis) | |
| 275 | + { | |
| 276 | + if (apiClass.isAssignableFrom(api.getClass())) | |
| 277 | + return (T)api; | |
| 278 | + } | |
| 279 | + } | |
| 280 | + catch (NullPointerException ex1) {} | |
| 281 | + catch (ClassCastException ex2) {} | |
| 282 | + | |
| 283 | + return null; | |
| 284 | + } | |
| 285 | +} | ... | ... |
java/common/com/mumfrey/liteloader/api/manager/APIRegistry.java renamed to src/main/java/com/mumfrey/liteloader/api/manager/APIRegistry.java
| 1 | -package com.mumfrey.liteloader.api.manager; | |
| 2 | - | |
| 3 | -import java.util.ArrayList; | |
| 4 | -import java.util.LinkedHashMap; | |
| 5 | -import java.util.LinkedHashSet; | |
| 6 | -import java.util.List; | |
| 7 | -import java.util.Map; | |
| 8 | -import java.util.Set; | |
| 9 | - | |
| 10 | -import net.minecraft.launchwrapper.Launch; | |
| 11 | - | |
| 12 | -import com.mumfrey.liteloader.api.LiteAPI; | |
| 13 | -import com.mumfrey.liteloader.api.exceptions.InvalidAPIStateException; | |
| 14 | -import com.mumfrey.liteloader.launch.LoaderEnvironment; | |
| 15 | -import com.mumfrey.liteloader.launch.LoaderProperties; | |
| 16 | -import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | |
| 17 | -import com.mumfrey.liteloader.util.log.LiteLoaderLogger.Verbosity; | |
| 18 | - | |
| 19 | -/** | |
| 20 | - * This is where we register API classes during early startup before baking the registered list into an | |
| 21 | - * APIProvider instance | |
| 22 | - * | |
| 23 | - * @author Adam Mummery-Smith | |
| 24 | - */ | |
| 25 | -public final class APIRegistry | |
| 26 | -{ | |
| 27 | - private Set<String> registeredAPIClasses = new LinkedHashSet<String>(); | |
| 28 | - private Map<String, LiteAPI> instances = new LinkedHashMap<String, LiteAPI>(); | |
| 29 | - | |
| 30 | - private final LoaderEnvironment environment; | |
| 31 | - | |
| 32 | - private final LoaderProperties properties; | |
| 33 | - | |
| 34 | - private APIProviderBasic baked; | |
| 35 | - | |
| 36 | - /** | |
| 37 | - * @param environment | |
| 38 | - * @param properties | |
| 39 | - */ | |
| 40 | - public APIRegistry(LoaderEnvironment environment, LoaderProperties properties) | |
| 41 | - { | |
| 42 | - this.environment = environment; | |
| 43 | - this.properties = properties; | |
| 44 | - } | |
| 45 | - | |
| 46 | - /** | |
| 47 | - * Register an API class, throws an exception if the API list has already been baked | |
| 48 | - * | |
| 49 | - * @param apiClass | |
| 50 | - */ | |
| 51 | - public void registerAPI(String apiClass) throws InvalidAPIStateException | |
| 52 | - { | |
| 53 | - if (this.baked != null) | |
| 54 | - { | |
| 55 | - throw new InvalidAPIStateException("Unable to register API provider '" + apiClass + "' because the API state is now frozen, this probably means you are registering an API too late in the initialisation process"); | |
| 56 | - } | |
| 57 | - | |
| 58 | - if (!this.registeredAPIClasses.contains(apiClass)) | |
| 59 | - { | |
| 60 | - LiteLoaderLogger.info(Verbosity.REDUCED, "Registering API provider class %s", apiClass); | |
| 61 | - this.registeredAPIClasses.add(apiClass); | |
| 62 | - } | |
| 63 | - } | |
| 64 | - | |
| 65 | - /** | |
| 66 | - * Get all currently registered API classes | |
| 67 | - */ | |
| 68 | - public String[] getRegisteredAPIs() | |
| 69 | - { | |
| 70 | - return this.registeredAPIClasses.toArray(new String[0]); | |
| 71 | - } | |
| 72 | - | |
| 73 | - /** | |
| 74 | - * @param apiClassName | |
| 75 | - */ | |
| 76 | - private LiteAPI spawnAPI(String apiClassName) | |
| 77 | - { | |
| 78 | - try | |
| 79 | - { | |
| 80 | - LiteLoaderLogger.info("Spawning API provider class '%s' ...", apiClassName); | |
| 81 | - | |
| 82 | - @SuppressWarnings("unchecked") | |
| 83 | - Class<? extends LiteAPI> apiClass = (Class<? extends LiteAPI>)Class.forName(apiClassName, true, Launch.classLoader); | |
| 84 | - | |
| 85 | - LiteAPI api = apiClass.newInstance(); | |
| 86 | - String identifier = api.getIdentifier(); | |
| 87 | - | |
| 88 | - if (!this.instances.containsKey(identifier)) | |
| 89 | - { | |
| 90 | - LiteLoaderLogger.info(Verbosity.REDUCED, "API provider class '%s' provides API '%s'", apiClassName, identifier); | |
| 91 | - this.instances.put(identifier, api); | |
| 92 | - return api; | |
| 93 | - } | |
| 94 | - | |
| 95 | - Class<? extends LiteAPI> conflictingAPIClass = this.instances.get(identifier).getClass(); | |
| 96 | - LiteLoaderLogger.severe("API identifier clash while registering '%s', identifier '%s' clashes with '%s'", apiClassName, identifier, conflictingAPIClass); | |
| 97 | - } | |
| 98 | - catch (ClassNotFoundException ex) | |
| 99 | - { | |
| 100 | - LiteLoaderLogger.severe("API class '%s' could not be created, the specified class could not be loaded", apiClassName); | |
| 101 | - } | |
| 102 | - catch (Exception ex) | |
| 103 | - { | |
| 104 | - LiteLoaderLogger.severe(ex, "Error while instancing API class '%s'", apiClassName); | |
| 105 | - } | |
| 106 | - | |
| 107 | - return null; | |
| 108 | - } | |
| 109 | - | |
| 110 | - /** | |
| 111 | - * Populate and return the API instance array | |
| 112 | - */ | |
| 113 | - private LiteAPI[] getAllAPIs() | |
| 114 | - { | |
| 115 | - List<LiteAPI> allAPIs = new ArrayList<LiteAPI>(); | |
| 116 | - | |
| 117 | - for (String apiClass : this.registeredAPIClasses) | |
| 118 | - { | |
| 119 | - LiteAPI api = this.spawnAPI(apiClass); | |
| 120 | - if (api != null) | |
| 121 | - { | |
| 122 | - allAPIs.add(api); | |
| 123 | - } | |
| 124 | - } | |
| 125 | - | |
| 126 | - for (LiteAPI api : allAPIs) | |
| 127 | - { | |
| 128 | - LiteLoaderLogger.info(Verbosity.REDUCED, "Initialising API '%s' ...", api.getIdentifier()); | |
| 129 | - api.init(this.environment, this.properties); | |
| 130 | - } | |
| 131 | - | |
| 132 | - return allAPIs.toArray(new LiteAPI[allAPIs.size()]); | |
| 133 | - } | |
| 134 | - | |
| 135 | - /** | |
| 136 | - * Bakes all currently registered API classes to a new APIProvider containing the API instances | |
| 137 | - * @throws InvalidAPIStateException if the API list was already baked | |
| 138 | - */ | |
| 139 | - public APIProvider bake() throws InvalidAPIStateException | |
| 140 | - { | |
| 141 | - if (this.baked != null) | |
| 142 | - { | |
| 143 | - throw new InvalidAPIStateException("Unable to bake the API provider list because the API list is already baked"); | |
| 144 | - } | |
| 145 | - | |
| 146 | - LiteAPI[] apis = this.getAllAPIs(); | |
| 147 | - return this.baked = new APIProviderBasic(apis); | |
| 148 | - } | |
| 149 | - | |
| 150 | - /** | |
| 151 | - * Gets the current APIProvider instance | |
| 152 | - * @throws InvalidAPIStateException if the provider list was not yet baked | |
| 153 | - */ | |
| 154 | - public APIProvider getProvider() throws InvalidAPIStateException | |
| 155 | - { | |
| 156 | - if (this.baked == null) | |
| 157 | - { | |
| 158 | - throw new InvalidAPIStateException("Call to APIRegistry.getProvider() failed because the provider list has not been baked"); | |
| 159 | - } | |
| 160 | - | |
| 161 | - return this.baked; | |
| 162 | - } | |
| 163 | - | |
| 164 | - /** | |
| 165 | - * Gets the current APIAdapter instance | |
| 166 | - * @throws InvalidAPIStateException if the provider list was not yet baked | |
| 167 | - */ | |
| 168 | - public APIAdapter getAdapter() throws InvalidAPIStateException | |
| 169 | - { | |
| 170 | - if (this.baked == null) | |
| 171 | - { | |
| 172 | - throw new InvalidAPIStateException("Call to APIRegistry.APIAdapter() failed because the provider list has not been baked"); | |
| 173 | - } | |
| 174 | - | |
| 175 | - return this.baked; | |
| 176 | - } | |
| 177 | -} | |
| 1 | +package com.mumfrey.liteloader.api.manager; | |
| 2 | + | |
| 3 | +import java.util.ArrayList; | |
| 4 | +import java.util.LinkedHashMap; | |
| 5 | +import java.util.LinkedHashSet; | |
| 6 | +import java.util.List; | |
| 7 | +import java.util.Map; | |
| 8 | +import java.util.Set; | |
| 9 | + | |
| 10 | +import net.minecraft.launchwrapper.Launch; | |
| 11 | + | |
| 12 | +import com.mumfrey.liteloader.api.LiteAPI; | |
| 13 | +import com.mumfrey.liteloader.api.exceptions.InvalidAPIStateException; | |
| 14 | +import com.mumfrey.liteloader.launch.LoaderEnvironment; | |
| 15 | +import com.mumfrey.liteloader.launch.LoaderProperties; | |
| 16 | +import com.mumfrey.liteloader.util.log.LiteLoaderLogger; | |
| 17 | +import com.mumfrey.liteloader.util.log.LiteLoaderLogger.Verbosity; | |
| 18 | + | |
| 19 | +/** | |
| 20 | + * This is where we register API classes during early startup before baking the registered list into an | |
| 21 | + * APIProvider instance | |
| 22 | + * | |
| 23 | + * @author Adam Mummery-Smith | |
| 24 | + */ | |
| 25 | +public final class APIRegistry | |
| 26 | +{ | |
| 27 | + private Set<String> registeredAPIClasses = new LinkedHashSet<String>(); | |
| 28 | + private Map<String, LiteAPI> instances = new LinkedHashMap<String, LiteAPI>(); | |
| 29 | + | |
| 30 | + private final LoaderEnvironment environment; | |
| 31 | + | |
| 32 | + private final LoaderProperties properties; | |
| 33 | + | |
| 34 | + private APIProviderBasic baked; | |
| 35 | + | |
| 36 | + /** | |
| 37 | + * @param environment | |
| 38 | + * @param properties | |
| 39 | + */ | |
| 40 | + public APIRegistry(LoaderEnvironment environment, LoaderProperties properties) | |
| 41 | + { | |
| 42 | + this.environment = environment; | |
| 43 | + this.properties = properties; | |
| 44 | + } | |
| 45 | + | |
| 46 | + /** | |
| 47 | + * Register an API class, throws an exception if the API list has already been baked | |
| 48 | + * | |
| 49 | + * @param apiClass | |
| 50 | + */ | |
| 51 | + public void registerAPI(String apiClass) throws InvalidAPIStateException | |
| 52 | + { | |
| 53 | + if (this.baked != null) | |
| 54 | + { | |
| 55 | + throw new InvalidAPIStateException("Unable to register API provider '" + apiClass + "' because the API state is now frozen, this probably means you are registering an API too late in the initialisation process"); | |
| 56 | + } | |
| 57 | + | |
| 58 | + if (!this.registeredAPIClasses.contains(apiClass)) | |
| 59 | + { | |
| 60 | + LiteLoaderLogger.info(Verbosity.REDUCED, "Registering API provider class %s", apiClass); | |
| 61 | + this.registeredAPIClasses.add(apiClass); | |
| 62 | + } | |
| 63 | + } | |
| 64 | + | |
| 65 | + /** | |
| 66 | + * Get all currently registered API classes | |
| 67 | + */ | |
| 68 | + public String[] getRegisteredAPIs() | |
| 69 | + { | |
| 70 | + return this.registeredAPIClasses.toArray(new String[0]); | |
| 71 | + } | |
| 72 | + | |
| 73 | + /** | |
| 74 | + * @param apiClassName | |
| 75 | + */ | |
| 76 | + private LiteAPI spawnAPI(String apiClassName) | |
| 77 | + { | |
| 78 | + try | |
| 79 | + { | |
| 80 | + LiteLoaderLogger.info("Spawning API provider class '%s' ...", apiClassName); | |
| 81 | + | |
| 82 | + @SuppressWarnings("unchecked") | |
| 83 | + Class<? extends LiteAPI> apiClass = (Class<? extends LiteAPI>)Class.forName(apiClassName, true, Launch.classLoader); | |
| 84 | + | |
| 85 | + LiteAPI api = apiClass.newInstance(); | |
| 86 | + String identifier = api.getIdentifier(); | |
| 87 | + | |
| 88 | + if (!this.instances.containsKey(identifier)) | |
| 89 | + { | |
| 90 | + LiteLoaderLogger.info(Verbosity.REDUCED, "API provider class '%s' provides API '%s'", apiClassName, identifier); | |
| 91 | + this.instances.put(identifier, api); | |
| 92 | + return api; | |
| 93 | + } | |
| 94 | + | |
| 95 | + Class<? extends LiteAPI> conflictingAPIClass = this.instances.get(identifier).getClass(); | |
| 96 | + LiteLoaderLogger.severe("API identifier clash while registering '%s', identifier '%s' clashes with '%s'", apiClassName, identifier, conflictingAPIClass); | |
| 97 | + } | |
| 98 | + catch (ClassNotFoundException ex) | |
| 99 | + { | |
| 100 | + LiteLoaderLogger.severe("API class '%s' could not be created, the specified class could not be loaded", apiClassName); | |
| 101 | + } | |
| 102 | + catch (Exception ex) | |
| 103 | + { | |
| 104 | + LiteLoaderLogger.severe(ex, "Error while instancing API class '%s'", apiClassName); | |
| 105 | + } | |
| 106 | + | |
| 107 | + return null; | |
| 108 | + } | |
| 109 | + | |
| 110 | + /** | |
| 111 | + * Populate and return the API instance array | |
| 112 | + */ | |
| 113 | + private LiteAPI[] getAllAPIs() | |
| 114 | + { | |
| 115 | + List<LiteAPI> allAPIs = new ArrayList<LiteAPI>(); | |
| 116 | + | |
| 117 | + for (String apiClass : this.registeredAPIClasses) | |
| 118 | + { | |
| 119 | + LiteAPI api = this.spawnAPI(apiClass); | |
| 120 | + if (api != null) | |
| 121 | + { | |
| 122 | + allAPIs.add(api); | |
| 123 | + } | |
| 124 | + } | |
| 125 | + | |
| 126 | + for (LiteAPI api : allAPIs) | |
| 127 | + { | |
| 128 | + LiteLoaderLogger.info(Verbosity.REDUCED, "Initialising API '%s' ...", api.getIdentifier()); | |
| 129 | + api.init(this.environment, this.properties); | |
| 130 | + } | |
| 131 | + | |
| 132 | + return allAPIs.toArray(new LiteAPI[allAPIs.size()]); | |
| 133 | + } | |
| 134 | + | |
| 135 | + /** | |
| 136 | + * Bakes all currently registered API classes to a new APIProvider containing the API instances | |
| 137 | + * @throws InvalidAPIStateException if the API list was already baked | |
| 138 | + */ | |
| 139 | + public APIProvider bake() throws InvalidAPIStateException | |
| 140 | + { | |
| 141 | + if (this.baked != null) | |
| 142 | + { | |
| 143 | + throw new InvalidAPIStateException("Unable to bake the API provider list because the API list is already baked"); | |
| 144 | + } | |
| 145 | + | |
| 146 | + LiteAPI[] apis = this.getAllAPIs(); | |
| 147 | + return this.baked = new APIProviderBasic(apis); | |
| 148 | + } | |
| 149 | + | |
| 150 | + /** | |
| 151 | + * Gets the current APIProvider instance | |
| 152 | + * @throws InvalidAPIStateException if the provider list was not yet baked | |
| 153 | + */ | |
| 154 | + public APIProvider getProvider() throws InvalidAPIStateException | |
| 155 | + { | |
| 156 | + if (this.baked == null) | |
| 157 | + { | |
| 158 | + throw new InvalidAPIStateException("Call to APIRegistry.getProvider() failed because the provider list has not been baked"); | |
| 159 | + } | |
| 160 | + | |
| 161 | + return this.baked; | |
| 162 | + } | |
| 163 | + | |
| 164 | + /** | |
| 165 | + * Gets the current APIAdapter instance | |
| 166 | + * @throws InvalidAPIStateException if the provider list was not yet baked | |
| 167 | + */ | |
| 168 | + public APIAdapter getAdapter() throws InvalidAPIStateException | |
| 169 | + { | |
| 170 | + if (this.baked == null) | |
| 171 | + { | |
| 172 | + throw new InvalidAPIStateException("Call to APIRegistry.APIAdapter() failed because the provider list has not been baked"); | |
| 173 | + } | |
| 174 | + | |
| 175 | + return this.baked; | |
| 176 | + } | |
| 177 | +} | ... | ... |
java/common/com/mumfrey/liteloader/common/GameEngine.java renamed to src/main/java/com/mumfrey/liteloader/common/GameEngine.java
| 1 | -package com.mumfrey.liteloader.common; | |
| 2 | - | |
| 3 | -import java.util.List; | |
| 4 | - | |
| 5 | -import net.minecraft.client.settings.KeyBinding; | |
| 6 | -import net.minecraft.profiler.Profiler; | |
| 7 | -import net.minecraft.server.MinecraftServer; | |
| 8 | - | |
| 9 | -/** | |
| 10 | - * @author Adam Mummery-Smith | |
| 11 | - * | |
| 12 | - * @param <TClient> Type of the client runtime, "Minecraft" on client and null on the server | |
| 13 | - * @param <TServer> Type of the server runtime, "IntegratedServer" on the client, "MinecraftServer" on the server | |
| 14 | - */ | |
| 15 | -public interface GameEngine<TClient, TServer extends MinecraftServer> | |
| 16 | -{ | |
| 17 | - /** | |
| 18 | - * True if the environment is a client environment | |
| 19 | - */ | |
| 20 | - public abstract boolean isClient(); | |
| 21 | - | |
| 22 | - /** | |
| 23 | - * True if the current environment is a server environment, always true on dedicated and true in single player | |
| 24 | - */ | |
| 25 | - public abstract boolean isServer(); | |
| 26 | - | |
| 27 | - /** | |
| 28 | - * True if the client is "in game", always true on server | |
| 29 | - */ | |
| 30 | - public abstract boolean isInGame(); | |
| 31 | - | |
| 32 | - /** | |
| 33 | - * True if the game loop's "isRunning" flag is true | |
| 34 | - */ | |
| 35 | - public abstract boolean isRunning(); | |
| 36 | - | |
| 37 | - /** | |
| 38 | - * True if the current world is single player, always false on the server | |
| 39 | - */ | |
| 40 | - public abstract boolean isSinglePlayer(); | |
| 41 | - | |
| 42 | - /** | |
| 43 | - * Get the underlying client instance, returns a dummy on the server | |
| 44 | - */ | |
| 45 | - public abstract TClient getClient(); | |
| 46 | - | |
| 47 | - /** | |
| 48 | - * Get the underlying server instance | |
| 49 | - */ | |
| 50 | - public abstract TServer getServer(); | |
| 51 | - | |
| 52 | - /** | |
| 53 | - * Get the resources manager | |
| 54 | - */ | |
| 55 | - public abstract Resources<?, ?> getResources(); | |
| 56 | - | |
| 57 | - /** | |
| 58 | - * Get the profiler instance | |
| 59 | - */ | |
| 60 | - public abstract Profiler getProfiler(); | |
| 61 | - | |
| 62 | - /** | |
| 63 | - * Get the keybinding list, only supported on client will throw an exception on the server | |
| 64 | - */ | |
| 65 | - public abstract List<KeyBinding> getKeyBindings(); | |
| 66 | - | |
| 67 | - /** | |
| 68 | - * Set the keybinding list, only supported on client will throw an exception on the server | |
| 69 | - * | |
| 70 | - * @param keyBindings | |
| 71 | - */ | |
| 72 | - public abstract void setKeyBindings(List<KeyBinding> keyBindings); | |
| 73 | -} | |
| 1 | +package com.mumfrey.liteloader.common; | |
| 2 | + | |
| 3 | +import java.util.List; | |
| 4 | + | |
| 5 | +import net.minecraft.client.settings.KeyBinding; | |
| 6 | +import net.minecraft.profiler.Profiler; | |
| 7 | +import net.minecraft.server.MinecraftServer; | |
| 8 | + | |
| 9 | +/** | |
| 10 | + * @author Adam Mummery-Smith | |
| 11 | + * | |
| 12 | + * @param <TClient> Type of the client runtime, "Minecraft" on client and null on the server | |
| 13 | + * @param <TServer> Type of the server runtime, "IntegratedServer" on the client, "MinecraftServer" on the server | |
| 14 | + */ | |
| 15 | +public interface GameEngine<TClient, TServer extends MinecraftServer> | |
| 16 | +{ | |
| 17 | + /** | |
| 18 | + * True if the environment is a client environment | |
| 19 | + */ | |
| 20 | + public abstract boolean isClient(); | |
| 21 | + | |
| 22 | + /** | |
| 23 | + * True if the current environment is a server environment, always true on dedicated and true in single player | |
| 24 | + */ | |
| 25 | + public abstract boolean isServer(); | |
| 26 | + | |
| 27 | + /** | |
| 28 | + * True if the client is "in game", always true on server | |
| 29 | + */ | |
| 30 | + public abstract boolean isInGame(); | |
| 31 | + | |
| 32 | + /** | |
| 33 | + * True if the game loop's "isRunning" flag is true | |
| 34 | + */ | |
| 35 | + public abstract boolean isRunning(); | |
| 36 | + | |
| 37 | + /** | |
| 38 | + * True if the current world is single player, always false on the server | |
| 39 | + */ | |
| 40 | + public abstract boolean isSinglePlayer(); | |
| 41 | + | |
| 42 | + /** | |
| 43 | + * Get the underlying client instance, returns a dummy on the server | |
| 44 | + */ | |
| 45 | + public abstract TClient getClient(); | |
| 46 | + | |
| 47 | + /** | |
| 48 | + * Get the underlying server instance | |
| 49 | + */ | |
| 50 | + public abstract TServer getServer(); | |
| 51 | + | |
| 52 | + /** | |
| 53 | + * Get the resources manager | |
| 54 | + */ | |
| 55 | + public abstract Resources<?, ?> getResources(); | |
| 56 | + | |
| 57 | + /** | |
| 58 | + * Get the profiler instance | |
| 59 | + */ | |
| 60 | + public abstract Profiler getProfiler(); | |
| 61 | + | |
| 62 | + /** | |
| 63 | + * Get the keybinding list, only supported on client will throw an exception on the server | |
| 64 | + */ | |
| 65 | + public abstract List<KeyBinding> getKeyBindings(); | |
| 66 | + | |
| 67 | + /** | |
| 68 | + * Set the keybinding list, only supported on client will throw an exception on the server | |
| 69 | + * | |
| 70 | + * @param keyBindings | |
| 71 | + */ | |
| 72 | + public abstract void setKeyBindings(List<KeyBinding> keyBindings); | |
| 73 | +} | ... | ... |
java/common/com/mumfrey/liteloader/common/LoadingProgress.java renamed to src/main/java/com/mumfrey/liteloader/common/LoadingProgress.java
| 1 | -package com.mumfrey.liteloader.common; | |
| 2 | - | |
| 3 | -/** | |
| 4 | - * @author Adam Mummery-Smith | |
| 5 | - */ | |
| 6 | -public abstract class LoadingProgress | |
| 7 | -{ | |
| 8 | - private static LoadingProgress instance; | |
| 9 | - | |
| 10 | - protected LoadingProgress() | |
| 11 | - { | |
| 12 | - LoadingProgress.instance = this; | |
| 13 | - } | |
| 14 | - | |
| 15 | - public static void setEnabled(boolean enabled) | |
| 16 | - { | |
| 17 | - if (LoadingProgress.instance != null) LoadingProgress.instance._setEnabled(enabled); | |
| 18 | - } | |
| 19 | - | |
| 20 | - public static void dispose() | |
| 21 | - { | |
| 22 | - if (LoadingProgress.instance != null) LoadingProgress.instance._dispose(); | |
| 23 | - } | |
| 24 | - | |
| 25 | - public static void incLiteLoaderProgress() | |
| 26 | - { | |
| 27 | - if (LoadingProgress.instance != null) LoadingProgress.instance._incLiteLoaderProgress(); | |
| 28 | - } | |
| 29 | - | |
| 30 | - public static void setMessage(String format, String... args) | |
| 31 | - { | |
| 32 | - if (LoadingProgress.instance != null) LoadingProgress.instance._setMessage(String.format(format, args)); | |
| 33 | - } | |
| 34 | - | |
| 35 | - public static void setMessage(String message) | |
| 36 | - { | |
| 37 | - if (LoadingProgress.instance != null) LoadingProgress.instance._setMessage(message); | |
| 38 | - } | |
| 39 | - | |
| 40 | - public static void incLiteLoaderProgress(String format, String... args) | |
| 41 | - { | |
| 42 | - if (LoadingProgress.instance != null) LoadingProgress.instance._incLiteLoaderProgress(String.format(format, args)); | |
| 43 | - } | |
| 44 | - | |
| 45 | - public static void incLiteLoaderProgress(String message) | |
| 46 | - { | |
| 47 | - if (LoadingProgress.instance != null) LoadingProgress.instance._incLiteLoaderProgress(message); | |
| 48 | - } | |
| 49 | - | |
| 50 | - public static void incTotalLiteLoaderProgress(int by) | |
| 51 | - { | |
| 52 | - if (LoadingProgress.instance != null) LoadingProgress.instance._incTotalLiteLoaderProgress(by); | |
| 53 | - } | |
| 54 | - | |
| 55 | - protected abstract void _setEnabled(boolean enabled); | |
| 56 | - | |
| 57 | - protected abstract void _dispose(); | |
| 58 | - | |
| 59 | - protected abstract void _incLiteLoaderProgress(); | |
| 60 | - | |
| 61 | - protected abstract void _setMessage(String message); | |
| 62 | - | |
| 63 | - protected abstract void _incLiteLoaderProgress(String message); | |
| 64 | - | |
| 65 | - protected abstract void _incTotalLiteLoaderProgress(int by); | |
| 1 | +package com.mumfrey.liteloader.common; | |
| 2 | + | |
| 3 | +/** | |
| 4 | + * @author Adam Mummery-Smith | |
| 5 | + */ | |
| 6 | +public abstract class LoadingProgress | |
| 7 | +{ | |
| 8 | + private static LoadingProgress instance; | |
| 9 | + | |
| 10 | + protected LoadingProgress() | |
| 11 | + { | |
| 12 | + LoadingProgress.instance = this; | |
| 13 | + } | |
| 14 | + | |
| 15 | + public static void setEnabled(boolean enabled) | |
| 16 | + { | |
| 17 | + if (LoadingProgress.instance != null) LoadingProgress.instance._setEnabled(enabled); | |
| 18 | + } | |
| 19 | + | |
| 20 | + public static void dispose() | |
| 21 | + { | |
| 22 | + if (LoadingProgress.instance != null) LoadingProgress.instance._dispose(); | |
| 23 | + } | |
| 24 | + | |
| 25 | + public static void incLiteLoaderProgress() | |
| 26 | + { | |
| 27 | + if (LoadingProgress.instance != null) LoadingProgress.instance._incLiteLoaderProgress(); | |
| 28 | + } | |
| 29 | + | |
| 30 | + public static void setMessage(String format, String... args) | |
| 31 | + { | |
| 32 | + if (LoadingProgress.instance != null) LoadingProgress.instance._setMessage(String.format(format, args)); | |
| 33 | + } | |
| 34 | + | |
| 35 | + public static void setMessage(String message) | |
| 36 | + { | |
| 37 | + if (LoadingProgress.instance != null) LoadingProgress.instance._setMessage(message); | |
| 38 | + } | |
| 39 | + | |
| 40 | + public static void incLiteLoaderProgress(String format, String... args) | |
| 41 | + { | |
| 42 | + if (LoadingProgress.instance != null) LoadingProgress.instance._incLiteLoaderProgress(String.format(format, args)); | |
| 43 | + } | |
| 44 | + | |
| 45 | + public static void incLiteLoaderProgress(String message) | |
| 46 | + { | |
| 47 | + if (LoadingProgress.instance != null) LoadingProgress.instance._incLiteLoaderProgress(message); | |
| 48 | + } | |
| 49 | + | |
| 50 | + public static void incTotalLiteLoaderProgress(int by) | |
| 51 | + { | |
| 52 | + if (LoadingProgress.instance != null) LoadingProgress.instance._incTotalLiteLoaderProgress(by); | |
| 53 | + } | |
| 54 | + | |
| 55 | + protected abstract void _setEnabled(boolean enabled); | |
| 56 | + | |
| 57 | + protected abstract void _dispose(); | |
| 58 | + | |
| 59 | + protected abstract void _incLiteLoaderProgress(); | |
| 60 | + | |
| 61 | + protected abstract void _setMessage(String message); | |
| 62 | + | |
| 63 | + protected abstract void _incLiteLoaderProgress(String message); | |
| 64 | + | |
| 65 | + protected abstract void _incTotalLiteLoaderProgress(int by); | |
| 66 | 66 | } |
| 67 | 67 | \ No newline at end of file | ... | ... |
java/common/com/mumfrey/liteloader/common/Resources.java renamed to src/main/java/com/mumfrey/liteloader/common/Resources.java
| 1 | -package com.mumfrey.liteloader.common; | |
| 2 | - | |
| 3 | -public interface Resources<TResourceManager, TResourcePack> | |
| 4 | -{ | |
| 5 | - /** | |
| 6 | - * Refresh resource pack list | |
| 7 | - * | |
| 8 | - * @param force | |
| 9 | - */ | |
| 10 | - public abstract void refreshResources(boolean force); | |
| 11 | - | |
| 12 | - /** | |
| 13 | - * Get the resource manager for the current environment, returns the SimpleReloadableResourceManager on client and ModResourceManager on the server | |
| 14 | - */ | |
| 15 | - public abstract TResourceManager getResourceManager(); | |
| 16 | - | |
| 17 | - /** | |
| 18 | - * @param resourcePack | |
| 19 | - */ | |
| 20 | - public abstract boolean registerResourcePack(TResourcePack resourcePack); | |
| 21 | - | |
| 22 | - /** | |
| 23 | - * @param resourcePack | |
| 24 | - */ | |
| 25 | - public abstract boolean unRegisterResourcePack(TResourcePack resourcePack); | |
| 26 | -} | |
| 1 | +package com.mumfrey.liteloader.common; | |
| 2 | + | |
| 3 | +public interface Resources<TResourceManager, TResourcePack> | |
| 4 | +{ | |
| 5 | + /** | |
| 6 | + * Refresh resource pack list | |
| 7 | + * | |
| 8 | + * @param force | |
| 9 | + */ | |
| 10 | + public abstract void refreshResources(boolean force); | |
| 11 | + | |
| 12 | + /** | |
| 13 | + * Get the resource manager for the current environment, returns the SimpleReloadableResourceManager on client and ModResourceManager on the server | |
| 14 | + */ | |
| 15 | + public abstract TResourceManager getResourceManager(); | |
| 16 | + | |
| 17 | + /** | |
| 18 | + * @param resourcePack | |
| 19 | + */ | |
| 20 | + public abstract boolean registerResourcePack(TResourcePack resourcePack); | |
| 21 | + | |
| 22 | + /** | |
| 23 | + * @param resourcePack | |
| 24 | + */ | |
| 25 | + public abstract boolean unRegisterResourcePack(TResourcePack resourcePack); | |
| 26 | +} | ... | ... |
java/common/com/mumfrey/liteloader/common/transformers/LiteLoaderEventTransformer.java renamed to src/main/java/com/mumfrey/liteloader/common/transformers/LiteLoaderEventTransformer.java
| 1 | -package com.mumfrey.liteloader.common.transformers; | |
| 2 | - | |
| 3 | -import static com.mumfrey.liteloader.core.runtime.Methods.*; | |
| 4 | -import static com.mumfrey.liteloader.transformers.event.InjectionPoint.*; | |
| 5 | - | |
| 6 | -import org.objectweb.asm.Opcodes; | |
| 7 | - | |
| 8 | -import com.mumfrey.liteloader.core.runtime.Obf; | |
| 9 | -import com.mumfrey.liteloader.transformers.event.Event; | |
| 10 | -import com.mumfrey.liteloader.transformers.event.EventInjectionTransformer; | |
| 11 | -import com.mumfrey.liteloader.transformers.event.InjectionPoint; | |
| 12 | -import com.mumfrey.liteloader.transformers.event.MethodInfo; | |
| 13 | -import com.mumfrey.liteloader.transformers.event.inject.BeforeFieldAccess; | |
| 14 | -import com.mumfrey.liteloader.transformers.event.inject.BeforeInvoke; | |
| 15 | -import com.mumfrey.liteloader.transformers.event.inject.BeforeNew; | |
| 16 | -import com.mumfrey.liteloader.transformers.event.inject.BeforeReturn; | |
| 17 | -import com.mumfrey.liteloader.transformers.event.inject.MethodHead; | |
| 18 | - | |
| 19 | -/** | |
| 20 | - * Injector for LiteLoader's common events | |
| 21 | - * | |
| 22 | - * @author Adam Mummery-Smith | |
| 23 | - */ | |
| 24 | -public abstract class LiteLoaderEventTransformer extends EventInjectionTransformer | |
| 25 | -{ | |
| 26 | - protected abstract Obf getProxy(); | |
| 27 | - | |
| 28 | - @Override | |
| 29 | - protected void addEvents() | |
| 30 | - { | |
| 31 | - // Event declarations | |
| 32 | - Event onInitializePlayerConnection = Event.getOrCreate("onInitializePlayerConnection", false); | |
| 33 | - Event onPlayerLogin = Event.getOrCreate("onPlayerLogin", false); | |
| 34 | - Event onPlayerLogout = Event.getOrCreate("onPlayerLogout", false); | |
| 35 | - Event onSpawnPlayer = Event.getOrCreate("onSpawnPlayer", false); | |
| 36 | - Event onRespawnPlayer = Event.getOrCreate("onRespawnPlayer", false); | |
| 37 | - Event onServerTick = Event.getOrCreate("onServerTick", false); | |
| 38 | - Event onBlockClickedEvent = Event.getOrCreate("onBlockClicked", true); | |
| 39 | - Event onActivateBlockOrUseItem = Event.getOrCreate("onActivateBlockOrUseItem", true); | |
| 40 | - Event onPlayerDigging = Event.getOrCreate("onPlayerDigging", true); | |
| 41 | - Event onPlaceBlock = Event.getOrCreate("onPlaceBlock", true); | |
| 42 | - Event onClickedAir = Event.getOrCreate("onClickedAir", true); | |
| 43 | - Event onSessionProfileBad = Event.getOrCreate("onSessionProfileBad", true); | |
| 44 | - Event onPlayerMoved = Event.getOrCreate("onPlayerMoved", true); | |
| 45 | - | |
| 46 | - // Injection Points | |
| 47 | - InjectionPoint methodHead = new MethodHead(); | |
| 48 | - InjectionPoint methodReturn = new BeforeReturn(); | |
| 49 | - InjectionPoint beforeNewGameProfile = new BeforeNew(1, Obf.GameProfile); | |
| 50 | - InjectionPoint beforeThreadMarshall = new BeforeInvoke(checkThreadAndEnqueue); | |
| 51 | - InjectionPoint beforeGetPosY = new BeforeFieldAccess(Opcodes.GETFIELD, Obf.entityPosY, Obf.EntityPlayerMP, 4).setCaptureLocals(true); | |
| 52 | - | |
| 53 | - // Hooks | |
| 54 | - this.add(onInitializePlayerConnection, initPlayerConnection, (methodReturn), "onInitializePlayerConnection"); | |
| 55 | - this.add(onPlayerLogin, playerLoggedIn, (methodReturn), "onPlayerLogin"); | |
| 56 | - this.add(onPlayerLogout, playerLoggedOut, (methodReturn), "onPlayerLogout"); | |
| 57 | - this.add(onSpawnPlayer, spawnPlayer, (methodReturn), "onSpawnPlayer"); | |
| 58 | - this.add(onRespawnPlayer, respawnPlayer, (methodReturn), "onRespawnPlayer"); | |
| 59 | - this.add(onServerTick, serverJobs, (methodHead), "onServerTick"); | |
| 60 | - this.add(onBlockClickedEvent, onBlockClicked, (methodHead), "onBlockClicked"); | |
| 61 | - this.add(onActivateBlockOrUseItem, activateBlockOrUseItem, (methodHead), "onUseItem"); | |
| 62 | - this.add(onPlaceBlock, processBlockPlacement, after(beforeThreadMarshall) , "onPlaceBlock"); | |
| 63 | - this.add(onClickedAir, handleAnimation, after(beforeThreadMarshall), "onClickedAir"); | |
| 64 | - this.add(onPlayerDigging, processPlayerDigging, after(beforeThreadMarshall), "onPlayerDigging"); | |
| 65 | - this.add(onPlayerMoved, processPlayer, (beforeGetPosY), "onPlayerMoved"); | |
| 66 | - | |
| 67 | - // Compatibility handlers | |
| 68 | - this.add(onSessionProfileBad, getProfile, (beforeNewGameProfile), "generateOfflineUUID"); | |
| 69 | - } | |
| 70 | - | |
| 71 | - protected final Event add(Event event, MethodInfo targetMethod, InjectionPoint injectionPoint, String callback) | |
| 72 | - { | |
| 73 | - return this.add(event, targetMethod, injectionPoint, callback, this.getProxy()); | |
| 74 | - } | |
| 75 | - | |
| 76 | - protected Event add(Event event, MethodInfo targetMethod, InjectionPoint injectionPoint, String callback, Obf proxy) | |
| 77 | - { | |
| 78 | - return this.addEvent(event, targetMethod, injectionPoint).addListener(new MethodInfo(proxy, callback)); | |
| 79 | - } | |
| 80 | -} | |
| 1 | +package com.mumfrey.liteloader.common.transformers; | |
| 2 | + | |
| 3 | +import static com.mumfrey.liteloader.core.runtime.Methods.*; | |
| 4 | +import static com.mumfrey.liteloader.transformers.event.InjectionPoint.*; | |
| 5 | + | |
| 6 | +import org.objectweb.asm.Opcodes; | |
| 7 | + | |
| 8 | +import com.mumfrey.liteloader.core.runtime.Obf; | |
| 9 | +import com.mumfrey.liteloader.transformers.event.Event; | |
| 10 | +import com.mumfrey.liteloader.transformers.event.EventInjectionTransformer; | |
| 11 | +import com.mumfrey.liteloader.transformers.event.InjectionPoint; | |
| 12 | +import com.mumfrey.liteloader.transformers.event.MethodInfo; | |
| 13 | +import com.mumfrey.liteloader.transformers.event.inject.BeforeFieldAccess; | |
| 14 | +import com.mumfrey.liteloader.transformers.event.inject.BeforeInvoke; | |
| 15 | +import com.mumfrey.liteloader.transformers.event.inject.BeforeNew; | |
| 16 | +import com.mumfrey.liteloader.transformers.event.inject.BeforeReturn; | |
| 17 | +import com.mumfrey.liteloader.transformers.event.inject.MethodHead; | |
| 18 | + | |
| 19 | +/** | |
| 20 | + * Injector for LiteLoader's common events | |
| 21 | + * | |
| 22 | + * @author Adam Mummery-Smith | |
| 23 | + */ | |
| 24 | +public abstract class LiteLoaderEventTransformer extends EventInjectionTransformer | |
| 25 | +{ | |
| 26 | + protected abstract Obf getProxy(); | |
| 27 | + | |
| 28 | + @Override | |
| 29 | + protected void addEvents() | |
| 30 | + { | |
| 31 | + // Event declarations | |
| 32 | + Event onInitializePlayerConnection = Event.getOrCreate("onInitializePlayerConnection", false); | |
| 33 | + Event onPlayerLogin = Event.getOrCreate("onPlayerLogin", false); | |
| 34 | + Event onPlayerLogout = Event.getOrCreate("onPlayerLogout", false); | |
| 35 | + Event onSpawnPlayer = Event.getOrCreate("onSpawnPlayer", false); | |
| 36 | + Event onRespawnPlayer = Event.getOrCreate("onRespawnPlayer", false); | |
| 37 | + Event onServerTick = Event.getOrCreate("onServerTick", false); | |
| 38 | + Event onBlockClickedEvent = Event.getOrCreate("onBlockClicked", true); | |
| 39 | + Event onActivateBlockOrUseItem = Event.getOrCreate("onActivateBlockOrUseItem", true); | |
| 40 | + Event onPlayerDigging = Event.getOrCreate("onPlayerDigging", true); | |
| 41 | + Event onPlaceBlock = Event.getOrCreate("onPlaceBlock", true); | |
| 42 | + Event onClickedAir = Event.getOrCreate("onClickedAir", true); | |
| 43 | + Event onSessionProfileBad = Event.getOrCreate("onSessionProfileBad", true); | |
| 44 | + Event onPlayerMoved = Event.getOrCreate("onPlayerMoved", true); | |
| 45 | + | |
| 46 | + // Injection Points | |
| 47 | + InjectionPoint methodHead = new MethodHead(); | |
| 48 | + InjectionPoint methodReturn = new BeforeReturn(); | |
| 49 | + InjectionPoint beforeNewGameProfile = new BeforeNew(1, Obf.GameProfile); | |
| 50 | + InjectionPoint beforeThreadMarshall = new BeforeInvoke(checkThreadAndEnqueue); | |
| 51 | + InjectionPoint beforeGetPosY = new BeforeFieldAccess(Opcodes.GETFIELD, Obf.entityPosY, Obf.EntityPlayerMP, 4).setCaptureLocals(true); | |
| 52 | + | |
| 53 | + // Hooks | |
| 54 | + this.add(onInitializePlayerConnection, initPlayerConnection, (methodReturn), "onInitializePlayerConnection"); | |
| 55 | + this.add(onPlayerLogin, playerLoggedIn, (methodReturn), "onPlayerLogin"); | |
| 56 | + this.add(onPlayerLogout, playerLoggedOut, (methodReturn), "onPlayerLogout"); | |
| 57 | + this.add(onSpawnPlayer, spawnPlayer, (methodReturn), "onSpawnPlayer"); | |
| 58 | + this.add(onRespawnPlayer, respawnPlayer, (methodReturn), "onRespawnPlayer"); | |
| 59 | + this.add(onServerTick, serverJobs, (methodHead), "onServerTick"); | |
| 60 | + this.add(onBlockClickedEvent, onBlockClicked, (methodHead), "onBlockClicked"); | |
| 61 | + this.add(onActivateBlockOrUseItem, activateBlockOrUseItem, (methodHead), "onUseItem"); | |
| 62 | + this.add(onPlaceBlock, processBlockPlacement, after(beforeThreadMarshall) , "onPlaceBlock"); | |
| 63 | + this.add(onClickedAir, handleAnimation, after(beforeThreadMarshall), "onClickedAir"); | |
| 64 | + this.add(onPlayerDigging, processPlayerDigging, after(beforeThreadMarshall), "onPlayerDigging"); | |
| 65 | + this.add(onPlayerMoved, processPlayer, (beforeGetPosY), "onPlayerMoved"); | |
| 66 | + | |
| 67 | + // Compatibility handlers | |
| 68 | + this.add(onSessionProfileBad, getProfile, (beforeNewGameProfile), "generateOfflineUUID"); | |
| 69 | + } | |
| 70 | + | |
| 71 | + protected final Event add(Event event, MethodInfo targetMethod, InjectionPoint injectionPoint, String callback) | |
| 72 | + { | |
| 73 | + return this.add(event, targetMethod, injectionPoint, callback, this.getProxy()); | |
| 74 | + } | |
| 75 | + | |
| 76 | + protected Event add(Event event, MethodInfo targetMethod, InjectionPoint injectionPoint, String callback, Obf proxy) | |
| 77 | + { | |
| 78 | + return this.addEvent(event, targetMethod, injectionPoint).addListener(new MethodInfo(proxy, callback)); | |
| 79 | + } | |
| 80 | +} | ... | ... |
java/common/com/mumfrey/liteloader/common/transformers/LiteLoaderPacketTransformer.java renamed to src/main/java/com/mumfrey/liteloader/common/transformers/LiteLoaderPacketTransformer.java
| 1 | -package com.mumfrey.liteloader.common.transformers; | |
| 2 | - | |
| 3 | -import com.mumfrey.liteloader.core.runtime.Obf; | |
| 4 | -import com.mumfrey.liteloader.core.runtime.Packets; | |
| 5 | -import com.mumfrey.liteloader.transformers.event.EventInjectionTransformer; | |
| 6 | -import com.mumfrey.liteloader.transformers.event.InjectionPoint; | |
| 7 | -import com.mumfrey.liteloader.transformers.event.MethodInfo; | |
| 8 | -import com.mumfrey.liteloader.transformers.event.inject.MethodHead; | |
| 9 | - | |
| 10 | -public class LiteLoaderPacketTransformer extends EventInjectionTransformer | |
| 11 | -{ | |
| 12 | - @Override | |
| 13 | - protected void addEvents() | |
| 14 | - { | |
| 15 | - InjectionPoint methodHead = new MethodHead(); | |
| 16 | - MethodInfo handlePacket = new MethodInfo(Obf.PacketEvents, "handlePacket"); | |
| 17 | - | |
| 18 | - for (Packets packet : Packets.packets) | |
| 19 | - { | |
| 20 | - MethodInfo processPacket = new MethodInfo(packet, Obf.processPacket, Void.TYPE, Obf.INetHandler); | |
| 21 | - this.addEvent(new PacketEvent(packet), processPacket, methodHead).addListener(handlePacket); | |
| 22 | - } | |
| 23 | - } | |
| 24 | -} | |
| 1 | +package com.mumfrey.liteloader.common.transformers; | |
| 2 | + | |
| 3 | +import com.mumfrey.liteloader.core.runtime.Obf; | |
| 4 | +import com.mumfrey.liteloader.core.runtime.Packets; | |
| 5 | +import com.mumfrey.liteloader.transformers.event.EventInjectionTransformer; | |
| 6 | +import com.mumfrey.liteloader.transformers.event.InjectionPoint; | |
| 7 | +import com.mumfrey.liteloader.transformers.event.MethodInfo; | |
| 8 | +import com.mumfrey.liteloader.transformers.event.inject.MethodHead; | |
| 9 | + | |
| 10 | +public class LiteLoaderPacketTransformer extends EventInjectionTransformer | |
| 11 | +{ | |
| 12 | + @Override | |
| 13 | + protected void addEvents() | |
| 14 | + { | |
| 15 | + InjectionPoint methodHead = new MethodHead(); | |
| 16 | + MethodInfo handlePacket = new MethodInfo(Obf.PacketEvents, "handlePacket"); | |
| 17 | + | |
| 18 | + for (Packets packet : Packets.packets) | |
| 19 | + { | |
| 20 | + MethodInfo processPacket = new MethodInfo(packet, Obf.processPacket, Void.TYPE, Obf.INetHandler); | |
| 21 | + this.addEvent(new PacketEvent(packet), processPacket, methodHead).addListener(handlePacket); | |
| 22 | + } | |
| 23 | + } | |
| 24 | +} | ... | ... |
java/common/com/mumfrey/liteloader/common/transformers/PacketEvent.java renamed to src/main/java/com/mumfrey/liteloader/common/transformers/PacketEvent.java
| 1 | -package com.mumfrey.liteloader.common.transformers; | |
| 2 | - | |
| 3 | -import org.objectweb.asm.Opcodes; | |
| 4 | -import org.objectweb.asm.tree.InsnList; | |
| 5 | -import org.objectweb.asm.tree.InsnNode; | |
| 6 | -import org.objectweb.asm.tree.IntInsnNode; | |
| 7 | -import org.objectweb.asm.tree.LdcInsnNode; | |
| 8 | -import org.objectweb.asm.tree.MethodInsnNode; | |
| 9 | -import org.objectweb.asm.tree.VarInsnNode; | |
| 10 | - | |
| 11 | -import com.mumfrey.liteloader.core.runtime.Obf; | |
| 12 | -import com.mumfrey.liteloader.core.runtime.Packets; | |
| 13 | -import com.mumfrey.liteloader.transformers.event.Event; | |
| 14 | -import com.mumfrey.liteloader.transformers.event.EventInfo; | |
| 15 | - | |
| 16 | -/** | |
| 17 | - * Special event used to hook all packets | |
| 18 | - * | |
| 19 | - * @author Adam Mummery-Smith | |
| 20 | - */ | |
| 21 | -public class PacketEvent extends Event | |
| 22 | -{ | |
| 23 | - /** | |
| 24 | - * Soft index for this packet, used as a lookup for speed when determining handlers | |
| 25 | - */ | |
| 26 | - private int packetIndex; | |
| 27 | - | |
| 28 | - PacketEvent(Packets packet) | |
| 29 | - { | |
| 30 | - super("on" + packet.getShortName(), true, 1000); | |
| 31 | - this.packetIndex = packet.getIndex(); | |
| 32 | - this.verbose = false; | |
| 33 | - } | |
| 34 | - | |
| 35 | - /* (non-Javadoc) | |
| 36 | - * @see com.mumfrey.liteloader.transformers.event.Event#getEventInfoClassName() | |
| 37 | - */ | |
| 38 | - @Override | |
| 39 | - public String getEventInfoClassName() | |
| 40 | - { | |
| 41 | - return "com/mumfrey/liteloader/common/transformers/PacketEventInfo"; | |
| 42 | - } | |
| 43 | - | |
| 44 | - /* (non-Javadoc) | |
| 45 | - * @see com.mumfrey.liteloader.transformers.event.Event#invokeEventInfoConstructor(org.objectweb.asm.tree.InsnList, boolean) | |
| 46 | - */ | |
| 47 | - @Override | |
| 48 | - protected int invokeEventInfoConstructor(InsnList insns, boolean cancellable, boolean pushReturnValue, int marshallVar) | |
| 49 | - { | |
| 50 | - int ctorMAXS = 0; | |
| 51 | - | |
| 52 | - insns.add(new LdcInsnNode(this.name)); ctorMAXS++; | |
| 53 | - insns.add(this.methodIsStatic ? new InsnNode(Opcodes.ACONST_NULL) : new VarInsnNode(Opcodes.ALOAD, 0)); ctorMAXS++; | |
| 54 | - insns.add(new InsnNode(cancellable ? Opcodes.ICONST_1 : Opcodes.ICONST_0)); ctorMAXS++; | |
| 55 | - insns.add(new IntInsnNode(Opcodes.BIPUSH, this.packetIndex)); | |
| 56 | - insns.add(new MethodInsnNode(Opcodes.INVOKESPECIAL, this.eventInfoClass, Obf.constructor.name, EventInfo.getConstructorDescriptor().replace(")", "I)"), false)); | |
| 57 | - | |
| 58 | - return ctorMAXS; | |
| 59 | - } | |
| 60 | -} | |
| 1 | +package com.mumfrey.liteloader.common.transformers; | |
| 2 | + | |
| 3 | +import org.objectweb.asm.Opcodes; | |
| 4 | +import org.objectweb.asm.tree.InsnList; | |
| 5 | +import org.objectweb.asm.tree.InsnNode; | |
| 6 | +import org.objectweb.asm.tree.IntInsnNode; | |
| 7 | +import org.objectweb.asm.tree.LdcInsnNode; | |
| 8 | +import org.objectweb.asm.tree.MethodInsnNode; | |
| 9 | +import org.objectweb.asm.tree.VarInsnNode; | |
| 10 | + | |
| 11 | +import com.mumfrey.liteloader.core.runtime.Obf; | |
| 12 | +import com.mumfrey.liteloader.core.runtime.Packets; | |
| 13 | +import com.mumfrey.liteloader.transformers.event.Event; | |
| 14 | +import com.mumfrey.liteloader.transformers.event.EventInfo; | |
| 15 | + | |
| 16 | +/** | |
| 17 | + * Special event used to hook all packets | |
| 18 | + * | |
| 19 | + * @author Adam Mummery-Smith | |
| 20 | + */ | |
| 21 | +public class PacketEvent extends Event | |
| 22 | +{ | |
| 23 | + /** | |
| 24 | + * Soft index for this packet, used as a lookup for speed when determining handlers | |
| 25 | + */ | |
| 26 | + private int packetIndex; | |
| 27 | + | |
| 28 | + PacketEvent(Packets packet) | |
| 29 | + { | |
| 30 | + super("on" + packet.getShortName(), true, 1000); | |
| 31 | + this.packetIndex = packet.getIndex(); | |
| 32 | + this.verbose = false; | |
| 33 | + } | |
| 34 | + | |
| 35 | + /* (non-Javadoc) | |
| 36 | + * @see com.mumfrey.liteloader.transformers.event.Event#getEventInfoClassName() | |
| 37 | + */ | |
| 38 | + @Override | |
| 39 | + public String getEventInfoClassName() | |
| 40 | + { | |
| 41 | + return "com/mumfrey/liteloader/common/transformers/PacketEventInfo"; | |
| 42 | + } | |
| 43 | + | |
| 44 | + /* (non-Javadoc) | |
| 45 | + * @see com.mumfrey.liteloader.transformers.event.Event#invokeEventInfoConstructor(org.objectweb.asm.tree.InsnList, boolean) | |
| 46 | + */ | |
| 47 | + @Override | |
| 48 | + protected int invokeEventInfoConstructor(InsnList insns, boolean cancellable, boolean pushReturnValue, int marshallVar) | |
| 49 | + { | |
| 50 | + int ctorMAXS = 0; | |
| 51 | + | |
| 52 | + insns.add(new LdcInsnNode(this.name)); ctorMAXS++; | |
| 53 | + insns.add(this.methodIsStatic ? new InsnNode(Opcodes.ACONST_NULL) : new VarInsnNode(Opcodes.ALOAD, 0)); ctorMAXS++; | |
| 54 | + insns.add(new InsnNode(cancellable ? Opcodes.ICONST_1 : Opcodes.ICONST_0)); ctorMAXS++; | |
| 55 | + insns.add(new IntInsnNode(Opcodes.BIPUSH, this.packetIndex)); | |
| 56 | + insns.add(new MethodInsnNode(Opcodes.INVOKESPECIAL, this.eventInfoClass, Obf.constructor.name, EventInfo.getConstructorDescriptor().replace(")", "I)"), false)); | |
| 57 | + | |
| 58 | + return ctorMAXS; | |
| 59 | + } | |
| 60 | +} | ... | ... |
java/common/com/mumfrey/liteloader/common/transformers/PacketEventInfo.java renamed to src/main/java/com/mumfrey/liteloader/common/transformers/PacketEventInfo.java
| 1 | -package com.mumfrey.liteloader.common.transformers; | |
| 2 | - | |
| 3 | -import com.mumfrey.liteloader.transformers.event.EventInfo; | |
| 4 | - | |
| 5 | -import net.minecraft.network.Packet; | |
| 6 | - | |
| 7 | -public class PacketEventInfo<S extends Packet> extends EventInfo<S> | |
| 8 | -{ | |
| 9 | - private final int packetId; | |
| 10 | - | |
| 11 | - @SuppressWarnings("unchecked") | |
| 12 | - public PacketEventInfo(String name, Object source, boolean cancellable, int packetId) | |
| 13 | - { | |
| 14 | - super(name, (S)source, cancellable); | |
| 15 | - | |
| 16 | - this.packetId = packetId; | |
| 17 | - } | |
| 18 | - | |
| 19 | - public int getPacketId() | |
| 20 | - { | |
| 21 | - return this.packetId; | |
| 22 | - } | |
| 23 | -} | |
| 1 | +package com.mumfrey.liteloader.common.transformers; | |
| 2 | + | |
| 3 | +import com.mumfrey.liteloader.transformers.event.EventInfo; | |
| 4 | + | |
| 5 | +import net.minecraft.network.Packet; | |
| 6 | + | |
| 7 | +public class PacketEventInfo<S extends Packet> extends EventInfo<S> | |
| 8 | +{ | |
| 9 | + private final int packetId; | |
| 10 | + | |
| 11 | + @SuppressWarnings("unchecked") | |
| 12 | + public PacketEventInfo(String name, Object source, boolean cancellable, int packetId) | |
| 13 | + { | |
| 14 | + super(name, (S)source, cancellable); | |
| 15 | + | |
| 16 | + this.packetId = packetId; | |
| 17 | + } | |
| 18 | + | |
| 19 | + public int getPacketId() | |
| 20 | + { | |
| 21 | + return this.packetId; | |
| 22 | + } | |
| 23 | +} | ... | ... |
java/common/com/mumfrey/liteloader/core/BadContainerInfo.java renamed to src/main/java/com/mumfrey/liteloader/core/BadContainerInfo.java
| 1 | -package com.mumfrey.liteloader.core; | |
| 2 | - | |
| 3 | -import com.mumfrey.liteloader.core.api.LoadableModFile; | |
| 4 | -import com.mumfrey.liteloader.interfaces.Loadable; | |
| 5 | - | |
| 6 | -/** | |
| 7 | - * ModInfo for invalid containers | |
| 8 | - * | |
| 9 | - * @author Adam Mummery-Smith | |
| 10 | - */ | |
| 11 | -public class BadContainerInfo extends NonMod | |
| 12 | -{ | |
| 13 | - /** | |
| 14 | - * Reason the container could not be loaded | |
| 15 | - */ | |
| 16 | - private final String reason; | |
| 17 | - | |
| 18 | - public BadContainerInfo(Loadable<?> container, String reason) | |
| 19 | - { | |
| 20 | - super(container, false); | |
| 21 | - this.reason = reason; | |
| 22 | - } | |
| 23 | - | |
| 24 | - /* (non-Javadoc) | |
| 25 | - * @see com.mumfrey.liteloader.core.ModInfo#isToggleable() | |
| 26 | - */ | |
| 27 | - @Override | |
| 28 | - public boolean isToggleable() | |
| 29 | - { | |
| 30 | - return false; | |
| 31 | - } | |
| 32 | - | |
| 33 | - /* (non-Javadoc) | |
| 34 | - * @see com.mumfrey.liteloader.core.ModInfo#isValid() | |
| 35 | - */ | |
| 36 | - @Override | |
| 37 | - public boolean isValid() | |
| 38 | - { | |
| 39 | - return false; | |
| 40 | - } | |
| 41 | - | |
| 42 | - /* (non-Javadoc) | |
| 43 | - * @see com.mumfrey.liteloader.core.ModInfo#getDescription() | |
| 44 | - */ | |
| 45 | - @Override | |
| 46 | - public String getDescription() | |
| 47 | - { | |
| 48 | - return "\247c" + this.reason; | |
| 49 | - } | |
| 50 | - | |
| 51 | - /* (non-Javadoc) | |
| 52 | - * @see com.mumfrey.liteloader.core.ModInfo#getVersion() | |
| 53 | - */ | |
| 54 | - @Override | |
| 55 | - public String getVersion() | |
| 56 | - { | |
| 57 | - if (this.container instanceof LoadableModFile) | |
| 58 | - { | |
| 59 | - return "supported: \247c" + ((LoadableModFile)this.container).getTargetVersion() + "\247r"; | |
| 60 | - } | |
| 61 | - | |
| 62 | - return "supported: \247cUnknown"; | |
| 63 | - } | |
| 64 | -} | |
| 1 | +package com.mumfrey.liteloader.core; | |
| 2 | + | |
| 3 | +import com.mumfrey.liteloader.core.api.LoadableModFile; | |
| 4 | +import com.mumfrey.liteloader.interfaces.Loadable; | |
| 5 | + | |
| 6 | +/** | |
| 7 | + * ModInfo for invalid containers | |
| 8 | + * | |
| 9 | + * @author Adam Mummery-Smith | |
| 10 | + */ | |
| 11 | +public class BadContainerInfo extends NonMod | |
| 12 | +{ | |
| 13 | + /** | |
| 14 | + * Reason the container could not be loaded | |
| 15 | + */ | |
| 16 | + private final String reason; | |
| 17 | + | |
| 18 | + public BadContainerInfo(Loadable<?> container, String reason) | |
| 19 | + { | |
| 20 | + super(container, false); | |
| 21 | + this.reason = reason; | |
| 22 | + } | |
| 23 | + | |
| 24 | + /* (non-Javadoc) | |
| 25 | + * @see com.mumfrey.liteloader.core.ModInfo#isToggleable() | |
| 26 | + */ | |
| 27 | + @Override | |
| 28 | + public boolean isToggleable() | |
| 29 | + { | |
| 30 | + return false; | |
| 31 | + } | |
| 32 | + | |
| 33 | + /* (non-Javadoc) | |
| 34 | + * @see com.mumfrey.liteloader.core.ModInfo#isValid() | |
| 35 | + */ | |
| 36 | + @Override | |
| 37 | + public boolean isValid() | |
| 38 | + { | |
| 39 | + return false; | |
| 40 | + } | |
| 41 | + | |
| 42 | + /* (non-Javadoc) | |
| 43 | + * @see com.mumfrey.liteloader.core.ModInfo#getDescription() | |
| 44 | + */ | |
| 45 | + @Override | |
| 46 | + public String getDescription() | |
| 47 | + { | |
| 48 | + return "\247c" + this.reason; | |
| 49 | + } | |
| 50 | + | |
| 51 | + /* (non-Javadoc) | |
| 52 | + * @see com.mumfrey.liteloader.core.ModInfo#getVersion() | |
| 53 | + */ | |
| 54 | + @Override | |
| 55 | + public String getVersion() | |
| 56 | + { | |
| 57 | + if (this.container instanceof LoadableModFile) | |
| 58 | + { | |
| 59 | + return "supported: \247c" + ((LoadableModFile)this.container).getTargetVersion() + "\247r"; | |
| 60 | + } | |
| 61 | + | |
| 62 | + return "supported: \247cUnknown"; | |
| 63 | + } | |
| 64 | +} | ... | ... |