
更多事件
通过覆盖Hytale与特定交互关联的类文件,为ECS添加更多可取消的事件。
更多事件
由于Hytale尚未支持某些可取消事件,我制作了一个模组来添加它们!
使用此模组,您可以处理以下事件:
- 采集
- 收获
- 填充桶
- 放置流体
- 更改方块样式
与处理其他可取消事件(如破坏或放置方块)一样,不会影响其他模组自定义这些事件行为的能力。
这非常巧妙,因为举例来说,如果您想跨两个插件修改交互行为,仅使用类注册覆盖会迫使两个插件的逻辑合并为一个,因为覆盖是服务器范围(而非插件特定)的设置。
如何使用
下载 MoreEvents
将 MoreEvents.jar 移动到您的插件依赖文件夹(与插件引用的 Hytale.jar 相同的文件夹,用于依赖关系)
在 build.gradle.kts(或等效文件)中将 MoreEvents.jar 标记为编译时依赖:
dependencies {
compileOnly(files("libs/HytaleServer.jar"))
compileOnly(files("libs/MoreEvents-1.0.jar"))
}
将 MoreEvents 作为依赖添加到模组的 manifest.json 文件中,格式如下:
"Dependencies" : {
"Mods:MoreEvents" : ">=1.0.0"
}
导入您想使用的事件
使用导入的事件注册一个系统!示例:
public class YourPlugin extends JavaPlugin {
@Override
protected void setup() {
getEntityStoreRegistry().registerSystem(
new PlaceFluidEventSystem(PlaceFluidEvent.class));
}
}
public class PlaceFluidEventSystem extends EntityEventSystem<EntityStore, PlaceFluidEvent> {
public PlaceFluidEventSystem(@Nonnull Class<PlaceFluidEvent> eventType) {
super(eventType);
}
@Override
public void handle(int i, @Nonnull ArchetypeChunk<EntityStore> archetypeChunk,
@Nonnull Store<EntityStore> store,
@Nonnull CommandBuffer<EntityStore> commandBuffer,
@Nonnull PlaceFluidEvent placeFluidEvent) {
}
@Nullable
@Override
public Query<EntityStore> getQuery() {
return Player.getComponentType();
}
}
没有找到你想要的事件?
现在有通用事件,您可以在玩家击中或与方块交互(F 键)时监听,并使用提供的上下文检测特定事件。此事件在足够早的阶段拦截这些交互,从而实际取消大部分交互,这与 Hytale 内置的事件不同。
如果您想请求向插件添加特定类型的事件,只需询问,我会看看能否添加支持。
正在加载版本记录…
正在加载评论…
评论在新手盒子客户端中发表,这里同步展示。