mirror of
https://github.com/xSquishyLiam/mc-GeyserModelEngine-plugin.git
synced 2025-12-19 14:59:19 +00:00
added Damage Tint and comments to interfaces
This commit is contained in:
28
.idea/workspace.xml
generated
28
.idea/workspace.xml
generated
@@ -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" />
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user