Add ParticleSystem
This commit is contained in:
@@ -5,8 +5,8 @@ import com.hypixel.hytale.server.core.plugin.JavaPluginInit;
|
||||
import com.tikaiz.commands.ExampleCommand;
|
||||
import com.tikaiz.components.EndermanTeleportComponent;
|
||||
import com.tikaiz.singletons.LoggerSingleton;
|
||||
import com.tikaiz.systems.AddDefaultComponentTickSystem;
|
||||
import com.tikaiz.systems.CustomComponentTickSystem;
|
||||
import com.tikaiz.systems.AddEndermanTeleportComponentTickSystem;
|
||||
import com.tikaiz.systems.EndermanComponentTickSystem;
|
||||
import com.tikaiz.systems.DamageEventSystem;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
@@ -23,25 +23,8 @@ public class HytaleDemo extends JavaPlugin {
|
||||
this.getCommandRegistry().registerCommand(new ExampleCommand());
|
||||
var type = this.getEntityStoreRegistry()
|
||||
.registerComponent(EndermanTeleportComponent.class, EndermanTeleportComponent::new);
|
||||
this.getEntityStoreRegistry().registerSystem(new AddDefaultComponentTickSystem(type));
|
||||
this.getEntityStoreRegistry().registerSystem(new CustomComponentTickSystem(type));
|
||||
this.getEntityStoreRegistry().registerSystem(new AddEndermanTeleportComponentTickSystem(type));
|
||||
this.getEntityStoreRegistry().registerSystem(new EndermanComponentTickSystem(type));
|
||||
this.getEntityStoreRegistry().registerSystem(new DamageEventSystem(type));
|
||||
// var list = new ArrayList<EntityStore>();
|
||||
// this.getEventRegistry().registerGlobal(AllWorldsLoadedEvent.class, (x)->{
|
||||
// LoggerSingleton.getInstance().getHytaleLogger().at(Level.INFO).log("World has loaded!");
|
||||
// });
|
||||
// Universe.get().getDefaultWorld().getEntityStore().getStore().fetch(new SystemType<>(), Query.any(),list);
|
||||
// EntityStore.REGISTRY.assertInStoreThread();
|
||||
// this.getEventRegistry().registerGlobal(LoadedNPCEvent.class, (x)->{
|
||||
// String id = x.getBuilderInfo().;
|
||||
// Arrays.stream(x.getNPCs()).forEach(x->x.getFlockDefinition().);
|
||||
// x.getAllNPCs().forEach((integer, builderInfo) -> {
|
||||
// builderInfo.
|
||||
// });
|
||||
// NotificationUtil.sendNotificationToUniverse(x.getBuilderInfo().getKeyName());
|
||||
// });
|
||||
// this.getEventRegistry().register(Damage.class,(x)->{
|
||||
// Damage.Source source = x.getSource();
|
||||
// });
|
||||
}
|
||||
}
|
||||
@@ -57,28 +57,8 @@ public class ExampleCommand extends AbstractPlayerCommand {
|
||||
|
||||
Teleport teleportForPlayer = Teleport.createForPlayer(newPos, new Vector3f());
|
||||
store.addComponent(ref,Teleport.getComponentType(),teleportForPlayer);
|
||||
// var results = new ArrayList<Object>();
|
||||
// store.fetch();
|
||||
|
||||
// transform.setPosition(newPos);
|
||||
|
||||
playerRef.sendMessage(Message.raw("Set Player Position to: " + newPos));
|
||||
|
||||
|
||||
// String message = messageArg.get(commandContext); // get the argument text by the player
|
||||
// playerRef.sendMessage(Message.raw("Player Name: " + playerRef.getUsername()));
|
||||
// var mass = store.getComponent(ref, PhysicsValues.getComponentType()).getMass();
|
||||
// playerRef.sendMessage(Message.raw("Player Mass: " + mass));
|
||||
// var archetype = store.getArchetype(ref);
|
||||
// playerRef.sendMessage(Message.raw("Archetype count: "+archetype.length()));
|
||||
// for (int i = 0; i < archetype.length(); i++) {
|
||||
// var type = archetype.get(i);
|
||||
// if (type!=null){
|
||||
// var typeClass = type.getTypeClass();
|
||||
// playerRef.sendMessage(Message.raw("Type class: "+typeClass));
|
||||
// LoggerSingleton.getInstance().getHytaleLogger().at(Level.INFO).log("Type class: "+typeClass);
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,21 +1,12 @@
|
||||
package com.tikaiz.helpers;
|
||||
|
||||
import com.hypixel.hytale.component.CommandBuffer;
|
||||
import com.hypixel.hytale.component.Ref;
|
||||
import com.hypixel.hytale.math.vector.Vector3d;
|
||||
import com.hypixel.hytale.math.vector.Vector3f;
|
||||
import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
|
||||
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
|
||||
import org.checkerframework.checker.nullness.compatqual.NonNullDecl;
|
||||
|
||||
public abstract class TeleportHelper {
|
||||
|
||||
public static void randomTeleport(@NonNullDecl CommandBuffer<EntityStore> commandBuffer, Ref<EntityStore> ref, Vector3d position) {
|
||||
public static Vector3d randomTeleport(Vector3d position) {
|
||||
Vector3d addPos = new Vector3d((Math.random() * 20) - 10, 3, (Math.random() * 20) - 10);
|
||||
|
||||
var newPos = position.add(addPos);
|
||||
|
||||
Teleport teleportForPlayer = Teleport.createForPlayer(newPos, new Vector3f());
|
||||
commandBuffer.addComponent(ref, Teleport.getComponentType(), teleportForPlayer);
|
||||
return position.add(addPos);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,10 +12,10 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
|
||||
|
||||
import java.util.logging.Level;
|
||||
|
||||
public class AddDefaultComponentTickSystem extends EntityTickingSystem<EntityStore> {
|
||||
public class AddEndermanTeleportComponentTickSystem extends EntityTickingSystem<EntityStore> {
|
||||
private final ComponentType<EntityStore, EndermanTeleportComponent> customComponentType;
|
||||
|
||||
public AddDefaultComponentTickSystem(ComponentType<EntityStore, EndermanTeleportComponent> poisonComponentType) {
|
||||
public AddEndermanTeleportComponentTickSystem(ComponentType<EntityStore, EndermanTeleportComponent> poisonComponentType) {
|
||||
this.customComponentType = poisonComponentType;
|
||||
}
|
||||
@Override
|
||||
@@ -31,7 +31,6 @@ public class AddDefaultComponentTickSystem extends EntityTickingSystem<EntitySto
|
||||
}
|
||||
DisplayNameComponent displayNameComponent = store.getComponent(ref, DisplayNameComponent.getComponentType());
|
||||
if (displayNameComponent == null || displayNameComponent.getDisplayName() == null) {
|
||||
// LoggerSingleton.getInstance().getHytaleLogger().at(Level.INFO).log("Added Component to ref!");
|
||||
return;
|
||||
}
|
||||
var displayName = displayNameComponent.getDisplayName().getAnsiMessage();
|
||||
@@ -3,9 +3,13 @@ package com.tikaiz.systems;
|
||||
import com.hypixel.hytale.component.*;
|
||||
import com.hypixel.hytale.component.query.Query;
|
||||
import com.hypixel.hytale.component.system.EntityEventSystem;
|
||||
import com.hypixel.hytale.math.vector.Vector3d;
|
||||
import com.hypixel.hytale.math.vector.Vector3f;
|
||||
import com.hypixel.hytale.server.core.modules.entity.component.DisplayNameComponent;
|
||||
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
|
||||
import com.hypixel.hytale.server.core.modules.entity.damage.Damage;
|
||||
import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
|
||||
import com.hypixel.hytale.server.core.universe.world.ParticleUtil;
|
||||
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
|
||||
import com.hypixel.hytale.server.core.util.NotificationUtil;
|
||||
import com.tikaiz.components.EndermanTeleportComponent;
|
||||
@@ -36,10 +40,15 @@ public class DamageEventSystem extends EntityEventSystem<EntityStore, Damage> {
|
||||
assert displayNameComponent.getDisplayName() != null;
|
||||
var name = displayNameComponent.getDisplayName().getAnsiMessage();
|
||||
|
||||
|
||||
NotificationUtil.sendNotificationToUniverse(name);
|
||||
if (Math.random() < 0.3) {
|
||||
var transform = transformComponent.getTransform();
|
||||
randomTeleport(commandBuffer, ref, transform.getPosition());
|
||||
ParticleUtil.spawnParticleEffect("Effect_Death",transform.getPosition(),commandBuffer);
|
||||
Vector3d newPos = randomTeleport(transform.getPosition());
|
||||
ParticleUtil.spawnParticleEffect("Effect_Death",transform.getPosition(),commandBuffer);
|
||||
Teleport teleportForPlayer = Teleport.createForPlayer(newPos, new Vector3f());
|
||||
commandBuffer.addComponent(ref, Teleport.getComponentType(), teleportForPlayer);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -3,7 +3,11 @@ package com.tikaiz.systems;
|
||||
import com.hypixel.hytale.component.*;
|
||||
import com.hypixel.hytale.component.query.Query;
|
||||
import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
|
||||
import com.hypixel.hytale.math.vector.Vector3d;
|
||||
import com.hypixel.hytale.math.vector.Vector3f;
|
||||
import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
|
||||
import com.hypixel.hytale.server.core.modules.entity.teleport.Teleport;
|
||||
import com.hypixel.hytale.server.core.universe.world.ParticleUtil;
|
||||
import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
|
||||
import com.tikaiz.components.EndermanTeleportComponent;
|
||||
import org.checkerframework.checker.nullness.compatqual.NonNullDecl;
|
||||
@@ -11,10 +15,10 @@ import org.checkerframework.checker.nullness.compatqual.NullableDecl;
|
||||
|
||||
import static com.tikaiz.helpers.TeleportHelper.randomTeleport;
|
||||
|
||||
public class CustomComponentTickSystem extends EntityTickingSystem<EntityStore> {
|
||||
public class EndermanComponentTickSystem extends EntityTickingSystem<EntityStore> {
|
||||
private final ComponentType<EntityStore, EndermanTeleportComponent> customComponentType;
|
||||
|
||||
public CustomComponentTickSystem(ComponentType<EntityStore, EndermanTeleportComponent> poisonComponentType) {
|
||||
public EndermanComponentTickSystem(ComponentType<EntityStore, EndermanTeleportComponent> poisonComponentType) {
|
||||
this.customComponentType = poisonComponentType;
|
||||
}
|
||||
|
||||
@@ -34,8 +38,12 @@ public class CustomComponentTickSystem extends EntityTickingSystem<EntityStore>
|
||||
endermanTeleportComponent.addElapsedTime(dt);
|
||||
if (endermanTeleportComponent.getElapsedTime() >= endermanTeleportComponent.getTickInterval()) {
|
||||
endermanTeleportComponent.resetElapsedTime();
|
||||
ParticleUtil.spawnParticleEffect("Effect_Death",transformComponent.getPosition(),commandBuffer);
|
||||
Vector3d newPos = randomTeleport(transformComponent.getPosition());
|
||||
ParticleUtil.spawnParticleEffect("Effect_Death",transformComponent.getPosition(),commandBuffer);
|
||||
|
||||
randomTeleport(commandBuffer, ref, transformComponent.getPosition());
|
||||
Teleport teleportForPlayer = Teleport.createForPlayer(newPos, new Vector3f());
|
||||
commandBuffer.addComponent(ref, Teleport.getComponentType(), teleportForPlayer);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,72 +0,0 @@
|
||||
package com.tikaiz.systems;
|
||||
|
||||
//public class EntitySpawnEventSystem extends EntityEventSystem<EntityStore, LoadedNPCEvent> {
|
||||
// protected EntitySpawnEventSystem() {
|
||||
// super(LoadedNPCEvent.class);
|
||||
// }
|
||||
//
|
||||
//// @Override
|
||||
//// public void handle(int i,
|
||||
//// @NonNullDecl ArchetypeChunk<EntityStore> archetypeChunk,
|
||||
//// @NonNullDecl Store<EntityStore> store,
|
||||
//// @NonNullDecl CommandBuffer<EntityStore> commandBuffer,
|
||||
//// @NonNullDecl Damage damage) {
|
||||
//// Ref<EntityStore> ref = archetypeChunk.getReferenceTo(i);
|
||||
//// TransformComponent component = store.getComponent(ref, TransformComponent.getComponentType());
|
||||
//// if (component == null) {
|
||||
//// LoggerSingleton.getInstance().getHytaleLogger().at(Level.SEVERE).log("Transform was Null");
|
||||
//// return;
|
||||
//// }
|
||||
//// var displayNameComponent = store.getComponent(ref, DisplayNameComponent.getComponentType());
|
||||
//// if (displayNameComponent == null) {
|
||||
//// LoggerSingleton.getInstance().getHytaleLogger().at(Level.SEVERE).log("Display name was Null");
|
||||
//// return;
|
||||
//// }
|
||||
////
|
||||
//// NotificationUtil.sendNotificationToUniverse(displayNameComponent.getDisplayName());
|
||||
//// LoggerSingleton.getInstance().getHytaleLogger().at(Level.INFO).log("Display name: " + displayNameComponent.getDisplayName());
|
||||
////
|
||||
//// var uuidComponent = store.getComponent(ref, UUIDComponent.getComponentType());
|
||||
//// if (uuidComponent == null) {
|
||||
//// LoggerSingleton.getInstance().getHytaleLogger().at(Level.SEVERE).log("UUID was Null");
|
||||
//// return;
|
||||
//// }
|
||||
//// LoggerSingleton.getInstance().getHytaleLogger().at(Level.INFO).log("UUID: " + uuidComponent.getUuid());
|
||||
//// var transform = component.getTransform();
|
||||
//// LoggerSingleton.getInstance().getHytaleLogger().at(Level.INFO).log("Transform: "+transform);
|
||||
////
|
||||
//// Vector3d addPos = new Vector3d((Math.random()*20)-10, 3, (Math.random()*20)-10);
|
||||
////
|
||||
//// var newPos = transform.getPosition().add(addPos);
|
||||
////
|
||||
//// Teleport teleportForPlayer = Teleport.createForPlayer(newPos, new Vector3f());
|
||||
//// new Thread(()->{
|
||||
//// store.addComponent(ref,Teleport.getComponentType(),teleportForPlayer);
|
||||
//// }).start();
|
||||
//// }
|
||||
//
|
||||
// @NullableDecl
|
||||
// @Override
|
||||
// public Query<EntityStore> getQuery() {
|
||||
// return Query.any();
|
||||
// }
|
||||
//
|
||||
//
|
||||
// @Override
|
||||
// public void handle(int i,
|
||||
// @NonNullDecl ArchetypeChunk<EntityStore> archetypeChunk,
|
||||
// @NonNullDecl Store<EntityStore> store,
|
||||
// @NonNullDecl CommandBuffer<EntityStore> commandBuffer,
|
||||
// @NonNullDecl LoadedNPCEvent loadedNPCEvent) {
|
||||
// Ref<EntityStore> ref = archetypeChunk.getReferenceTo(i);
|
||||
// var transformComponent = store.getComponent(ref, TransformComponent.getComponentType());
|
||||
// NotificationUtil.sendNotificationToUniverse(transformComponent != null ? transformComponent.getTransform().toString() : "null");
|
||||
// LoggerSingleton.getInstance().getHytaleLogger().at(Level.INFO).log(transformComponent != null ? transformComponent.getTransform().toString() : "null");
|
||||
// var displayNameComponent = store.getComponent(ref, DisplayNameComponent.getComponentType());
|
||||
// NotificationUtil.sendNotificationToUniverse(displayNameComponent != null ? displayNameComponent.getDisplayName() != null ? displayNameComponent.getDisplayName().getAnsiMessage() : "null" : "null");
|
||||
// LoggerSingleton.getInstance().getHytaleLogger().at(Level.INFO).log(displayNameComponent != null ? displayNameComponent.getDisplayName() != null ? displayNameComponent.getDisplayName().getAnsiMessage() : "null" : "null");
|
||||
//
|
||||
//// loadedNPCEvent.getBuilderInfo().getKeyName()
|
||||
//
|
||||
// }
|
||||
//}
|
||||
Reference in New Issue
Block a user