added Damage Tint and comments to interfaces

This commit is contained in:
xSquishyLiam
2025-09-10 22:35:44 +01:00
parent ae3b67a733
commit 79f99ffebe
15 changed files with 157 additions and 48 deletions

28
.idea/workspace.xml generated
View File

@@ -5,32 +5,12 @@
</component> </component>
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="ff2e9770-ec88-4715-adeb-b9dbda130e1a" name="Changes" comment=""> <list default="true" id="ff2e9770-ec88-4715-adeb-b9dbda130e1a" name="Changes" comment="">
<change afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/taskshandler/BetterModelTaskHandler.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/taskshandler/ModelEngineTaskHandler.java" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/taskshandler/TaskHandler.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/GeyserModelEngine.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/listener/BetterModelListener.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/listener/BetterModelListener.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/listener/BetterModelListener.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/listener/BetterModelListener.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/listener/ModelEngineListener.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/listener/ModelEngineListener.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/ModelHandler/BetterModelHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/ModelHandler/BetterModelHandler.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/listener/ModelListener.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/PropertyHandler/BetterModelPropertyHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/PropertyHandler/BetterModelPropertyHandler.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/EntityTaskManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/EntityTaskManager.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/PropertyHandler/ModelEnginePropertyHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/PropertyHandler/ModelEnginePropertyHandler.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/ModelManager.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/ModelManager.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/PropertyHandler/PropertyHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/PropertyHandler/PropertyHandler.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/entity/BetterModelEntityData.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/entity/BetterModelEntityData.java" afterDir="false" /> <change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/entity/BetterModelEntityData.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/entity/BetterModelEntityData.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/entity/EntityData.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/entity/EntityData.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/entity/ModelEngineEntityData.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/entity/ModelEngineEntityData.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/model/BetterModelModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/model/BetterModelModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/model/Model.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/model/Model.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/model/ModelEngineModel.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/model/ModelEngineModel.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/modelhandler/BetterModelHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/ModelHandler/BetterModelHandler.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/modelhandler/ModelEngineHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/ModelHandler/ModelEngineHandler.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/modelhandler/ModelHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/ModelHandler/ModelHandler.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/propertyhandler/BetterModelPropertyHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/PropertyHandler/BetterModelPropertyHandler.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/propertyhandler/ModelEnginePropertyHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/PropertyHandler/ModelEnginePropertyHandler.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/propertyhandler/PropertyHandler.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/managers/model/PropertyHandler/PropertyHandler.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/packet/entity/PacketEntity.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/runnables/EntityTaskRunnable.java" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/runnables/UpdateTaskRunnable.java" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/java/re/imc/geysermodelengine/runnables/UpdateTaskRunnable.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/src/main/resources/paper-plugin.yml" beforeDir="false" afterPath="$PROJECT_DIR$/src/main/resources/paper-plugin.yml" afterDir="false" />
</list> </list>
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
<option name="HIGHLIGHT_CONFLICTS" value="true" /> <option name="HIGHLIGHT_CONFLICTS" value="true" />

View File

@@ -2,10 +2,14 @@ package re.imc.geysermodelengine.listener;
import kr.toxicity.model.api.event.CreateEntityTrackerEvent; import kr.toxicity.model.api.event.CreateEntityTrackerEvent;
import org.bukkit.entity.Entity;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority; import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import re.imc.geysermodelengine.GeyserModelEngine; import re.imc.geysermodelengine.GeyserModelEngine;
import re.imc.geysermodelengine.managers.model.entity.BetterModelEntityData;
import re.imc.geysermodelengine.managers.model.model.Model;
public class BetterModelListener implements Listener { public class BetterModelListener implements Listener {
@@ -17,6 +21,18 @@ public class BetterModelListener implements Listener {
@EventHandler(priority = EventPriority.MONITOR) @EventHandler(priority = EventPriority.MONITOR)
public void onModelSpawn(CreateEntityTrackerEvent event) { public void onModelSpawn(CreateEntityTrackerEvent event) {
plugin.getModelManager().getModelHandler().createModel(event.sourceEntity(), event.getTracker()); plugin.getModelManager().getModelHandler().createModel(event.sourceEntity(), event.getTracker(), event.tracker());
}
@EventHandler
public void onModelDamage(EntityDamageByEntityEvent event) {
Entity entity = event.getEntity();
Model model = plugin.getModelManager().getModelEntitiesCache().get(entity.getEntityId());
if (model == null) return;
BetterModelEntityData entityData = (BetterModelEntityData) model.getEntityData();
entityData.setHurt(true);
} }
} }

View File

@@ -21,8 +21,8 @@ public class CommandManager {
for (Class<?> clazz : new Reflections(path).getSubTypesOf(CommandManagers.class)) { for (Class<?> clazz : new Reflections(path).getSubTypesOf(CommandManagers.class)) {
try { try {
CommandManagers commandManager = (CommandManagers) clazz.getDeclaredConstructor(GeyserModelEngine.class).newInstance(plugin); CommandManagers commandManager = (CommandManagers) clazz.getDeclaredConstructor(GeyserModelEngine.class).newInstance(plugin);
plugin.getLogger().info("Loading Command Manager - " + commandManager.name()); plugin.getLogger().info("Loading Command Manager - " + commandManager.getName());
commandManagersCache.put(commandManager.name(), commandManager); commandManagersCache.put(commandManager.getName(), commandManager);
} catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException err) { } catch (InstantiationException | IllegalAccessException | InvocationTargetException | NoSuchMethodException err) {
plugin.getLogger().severe("Failed to load Command Manager " + clazz.getName()); plugin.getLogger().severe("Failed to load Command Manager " + clazz.getName());
throw new RuntimeException(err); throw new RuntimeException(err);

View File

@@ -6,7 +6,13 @@ import java.util.ArrayList;
public interface CommandManagers { public interface CommandManagers {
String name(); /**
* Gets the name of the command manager
*/
String getName();
/**
* Gets the command manager subcommands
*/
ArrayList<SubCommands> getCommands(); ArrayList<SubCommands> getCommands();
} }

View File

@@ -19,7 +19,7 @@ public class GeyserModelEngineCommandManager implements CommandManagers {
} }
private void registerCommand() { private void registerCommand() {
CommandAPICommand geyserModelEngineCommand = new CommandAPICommand(name()); CommandAPICommand geyserModelEngineCommand = new CommandAPICommand(getName());
commands.forEach(subCommands -> geyserModelEngineCommand.withSubcommand(subCommands.onCommand())); commands.forEach(subCommands -> geyserModelEngineCommand.withSubcommand(subCommands.onCommand()));
@@ -27,7 +27,7 @@ public class GeyserModelEngineCommandManager implements CommandManagers {
} }
@Override @Override
public String name() { public String getName() {
return "geysermodelengine"; return "geysermodelengine";
} }

View File

@@ -3,5 +3,9 @@ package re.imc.geysermodelengine.managers.commands.subcommands;
import dev.jorel.commandapi.CommandAPICommand; import dev.jorel.commandapi.CommandAPICommand;
public interface SubCommands { public interface SubCommands {
/**
* Subcommand setup
*/
CommandAPICommand onCommand(); CommandAPICommand onCommand();
} }

View File

@@ -1,5 +1,7 @@
package re.imc.geysermodelengine.managers.model.ModelHandler; package re.imc.geysermodelengine.managers.model.ModelHandler;
import kr.toxicity.model.api.tracker.EntityTracker;
import kr.toxicity.model.api.tracker.EntityTrackerRegistry;
import kr.toxicity.model.api.tracker.Tracker; import kr.toxicity.model.api.tracker.Tracker;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
@@ -22,16 +24,16 @@ public class BetterModelHandler implements ModelHandler {
this.plugin = plugin; this.plugin = plugin;
} }
// Why do you dupe smhhhh
@Override @Override
public void createModel(Object... objects) { public void createModel(Object... objects) {
Entity entitySource = (Entity) objects[0]; Entity entitySource = (Entity) objects[0];
Tracker tracker = (Tracker) objects[1]; Tracker tracker = (Tracker) objects[1];
EntityTracker entityTracker = (EntityTracker) objects[2];
int entityID = entitySource.getEntityId(); int entityID = entitySource.getEntityId();
PropertyHandler propertyHandler = plugin.getEntityTaskManager().getPropertyHandler(); PropertyHandler propertyHandler = plugin.getEntityTaskManager().getPropertyHandler();
EntityData entityData = new BetterModelEntityData(plugin, entitySource, tracker); EntityData entityData = new BetterModelEntityData(plugin, entitySource, tracker, entityTracker);
Model model = new BetterModelModel(tracker, this, entityData, propertyHandler); Model model = new BetterModelModel(tracker, this, entityData, propertyHandler);

View File

@@ -4,9 +4,20 @@ import org.bukkit.entity.Entity;
public interface ModelHandler { public interface ModelHandler {
/**
* Creates the model from the required Model Engine
* @param objects Processes the required objects
*/
void createModel(Object... objects); void createModel(Object... objects);
/**
* Processes entities into createModel()
* @param entity Registers bukkit entities
*/
void processEntities(Entity entity); void processEntities(Entity entity);
/**
* Loads the required listeners
*/
void loadListeners(); void loadListeners();
} }

View File

@@ -11,6 +11,7 @@ import org.jetbrains.annotations.NotNull;
import re.imc.geysermodelengine.GeyserModelEngine; import re.imc.geysermodelengine.GeyserModelEngine;
import re.imc.geysermodelengine.managers.model.entity.BetterModelEntityData; import re.imc.geysermodelengine.managers.model.entity.BetterModelEntityData;
import re.imc.geysermodelengine.managers.model.entity.EntityData; import re.imc.geysermodelengine.managers.model.entity.EntityData;
import re.imc.geysermodelengine.managers.model.entity.ModelEngineEntityData;
import re.imc.geysermodelengine.util.BooleanPacker; import re.imc.geysermodelengine.util.BooleanPacker;
import java.awt.*; import java.awt.*;
@@ -25,16 +26,30 @@ public class BetterModelPropertyHandler implements PropertyHandler {
this.plugin = plugin; this.plugin = plugin;
} }
// Other question is how am I meant to get the scale?? // Figure out on how to get the scale from BetterModel
@Override @Override
public void sendScale(EntityData entityData, Collection<Player> players, float lastScale, boolean firstSend) { public void sendScale(EntityData entityData, Collection<Player> players, float lastScale, boolean firstSend) {
BetterModelEntityData betterModelEntityData = (BetterModelEntityData) entityData;
} }
// Now real question how do I get the tint?
@Override @Override
public void sendColor(EntityData entityData, Collection<Player> players, Color lastColor, boolean firstSend) { public void sendColor(EntityData entityData, Collection<Player> players, Color lastColor, boolean firstSend) {
if (players.isEmpty()) return;
BetterModelEntityData betterModelEntityData = (BetterModelEntityData) entityData;
Color color = new Color(0xFFFFFF);
if (betterModelEntityData.isHurt()) color = new Color(betterModelEntityData.getEntityTracker().damageTintValue());
if (firstSend) {
if (color.equals(lastColor)) return;
}
for (Player player : players) {
EntityUtils.sendCustomColor(player, betterModelEntityData.getEntity().getEntityId(), color);
}
betterModelEntityData.setHurt(false);
} }
@Override @Override

View File

@@ -15,7 +15,6 @@ import re.imc.geysermodelengine.managers.model.entity.ModelEngineEntityData;
import re.imc.geysermodelengine.util.BooleanPacker; import re.imc.geysermodelengine.util.BooleanPacker;
import java.awt.*; import java.awt.*;
import java.lang.reflect.Method;
import java.util.*; import java.util.*;
import java.util.List; import java.util.List;
@@ -23,16 +22,8 @@ public class ModelEnginePropertyHandler implements PropertyHandler {
private final GeyserModelEngine plugin; private final GeyserModelEngine plugin;
private final Method scaleMethod;
public ModelEnginePropertyHandler(GeyserModelEngine plugin) { public ModelEnginePropertyHandler(GeyserModelEngine plugin) {
this.plugin = plugin; this.plugin = plugin;
try {
this.scaleMethod = ActiveModel.class.getMethod("getScale");
} catch (NoSuchMethodException err) {
throw new RuntimeException(err);
}
} }
@Override @Override
@@ -42,7 +33,7 @@ public class ModelEnginePropertyHandler implements PropertyHandler {
ModelEngineEntityData modelEngineEntityData = (ModelEngineEntityData) modelData; ModelEngineEntityData modelEngineEntityData = (ModelEngineEntityData) modelData;
Vector3fc scale = (Vector3fc) scaleMethod.invoke(modelEngineEntityData.getActiveModel()); Vector3fc scale = modelEngineEntityData.getActiveModel().getScale();
float average = (scale.x() + scale.y() + scale.z()) / 3; float average = (scale.x() + scale.y() + scale.z()) / 3;

View File

@@ -8,9 +8,37 @@ import java.util.Collection;
public interface PropertyHandler { public interface PropertyHandler {
/**
* Sends scale of the entity to the player
* @param entityData The data of the entity
* @param players Collection of players from the entity view
* @param lastScale Sends the last scale to the player
* @param firstSend Checks if it's the first time to send scale to the player
*/
void sendScale(EntityData entityData, Collection<Player> players, float lastScale, boolean firstSend); void sendScale(EntityData entityData, Collection<Player> players, float lastScale, boolean firstSend);
/**
* Sends a colour tint to the player
* @param entityData The data of the entity
* @param players Collection of players from the entity view
* @param lastColor Sends the last colour to the player
* @param firstSend Checks if it's the first time to send colour to the player
*/
void sendColor(EntityData entityData, Collection<Player> players, Color lastColor, boolean firstSend); void sendColor(EntityData entityData, Collection<Player> players, Color lastColor, boolean firstSend);
/**
* Sends a hitbox to the player
* @param entityData The data of the entity
* @param player Sends the player the entity hitbox
*/
void sendHitBox(EntityData entityData, Player player); void sendHitBox(EntityData entityData, Player player);
/**
* Updates the entity to all viewable players
* @param entityData The data of the entity
* @param players Collection of players from the entity view
* @param firstSend Checks if it's the first time to send the entity to the player
* @param forceAnims Forces the entity to do an animation
*/
void updateEntityProperties(EntityData entityData, Collection<Player> players, boolean firstSend, String... forceAnims); void updateEntityProperties(EntityData entityData, Collection<Player> players, boolean firstSend, String... forceAnims);
} }

View File

@@ -2,6 +2,7 @@ package re.imc.geysermodelengine.managers.model.entity;
import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes; import com.github.retrooper.packetevents.protocol.entity.type.EntityTypes;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import kr.toxicity.model.api.tracker.EntityTracker;
import kr.toxicity.model.api.tracker.Tracker; import kr.toxicity.model.api.tracker.Tracker;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.entity.Entity; import org.bukkit.entity.Entity;
@@ -21,14 +22,18 @@ public class BetterModelEntityData implements EntityData {
private final Entity entitySource; private final Entity entitySource;
private final Tracker tracker; private final Tracker tracker;
private final EntityTracker entityTracker;
private BetterModelTaskHandler entityTask; private BetterModelTaskHandler entityTask;
public BetterModelEntityData(GeyserModelEngine plugin, Entity entitySource, Tracker tracker) { private boolean hurt;
public BetterModelEntityData(GeyserModelEngine plugin, Entity entitySource, Tracker tracker, EntityTracker entityTracker) {
this.plugin = plugin; this.plugin = plugin;
this.entitySource = entitySource; this.entitySource = entitySource;
this.tracker = tracker; this.tracker = tracker;
this.entityTracker = entityTracker;
this.entity = new PacketEntity(EntityTypes.PIG, viewers, entitySource.getLocation()); this.entity = new PacketEntity(EntityTypes.PIG, viewers, entitySource.getLocation());
runEntityTask(); runEntityTask();
@@ -59,6 +64,10 @@ public class BetterModelEntityData implements EntityData {
return entityTask; return entityTask;
} }
public void setHurt(boolean hurt) {
this.hurt = hurt;
}
public Entity getEntitySource() { public Entity getEntitySource() {
return entitySource; return entitySource;
} }
@@ -66,4 +75,12 @@ public class BetterModelEntityData implements EntityData {
public Tracker getTracker() { public Tracker getTracker() {
return tracker; return tracker;
} }
public EntityTracker getEntityTracker() {
return entityTracker;
}
public boolean isHurt() {
return hurt;
}
} }

View File

@@ -8,10 +8,23 @@ import java.util.Set;
public interface EntityData { public interface EntityData {
/**
* Teleports the packet entity to the model
*/
void teleportToModel(); void teleportToModel();
/**
* Gets the packet Entity
*/
PacketEntity getEntity(); PacketEntity getEntity();
/**
* Gets the entity view of players
*/
Set<Player> getViewers(); Set<Player> getViewers();
/**
* Get the entity task handler
*/
TaskHandler getEntityTask(); TaskHandler getEntityTask();
} }

View File

@@ -6,11 +6,23 @@ import re.imc.geysermodelengine.managers.model.PropertyHandler.PropertyHandler;
public interface Model { public interface Model {
/**
* Gets the model's name
*/
String getName(); String getName();
ModelHandler getModelHandler(); /**
* Gets the model's entity data
*/
EntityData getEntityData(); EntityData getEntityData();
/**
* Gets the model's model handler
*/
ModelHandler getModelHandler();
/**
* Gets the model's property handler
*/
PropertyHandler getPropertyHandler(); PropertyHandler getPropertyHandler();
} }

View File

@@ -5,7 +5,21 @@ import re.imc.geysermodelengine.managers.model.entity.EntityData;
public interface TaskHandler { public interface TaskHandler {
/**
* Runs the entity scheduler
*/
void runAsync(); void runAsync();
/**
* Spawns the entity to the player
* @param entityData The data of the entity
* @param player Sends the entity to the player
* @param delay Delays sending the entity to the player
*/
void sendEntityData(EntityData entityData, Player player, int delay); void sendEntityData(EntityData entityData, Player player, int delay);
/**
* Cancels the entity scheduler
*/
void cancel(); void cancel();
} }