Skip to content

Commit

Permalink
Add entity tick events
Browse files Browse the repository at this point in the history
  • Loading branch information
senseiwells committed Jan 16, 2025
1 parent b42a052 commit df0b2ce
Show file tree
Hide file tree
Showing 8 changed files with 70 additions and 3 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ repositories {
}

dependencies {
include(modImplementation("net.casualchampionships:arcade:0.4.0-beta.2+1.21.4")!!)
include(modImplementation("net.casualchampionships:arcade:0.4.0-beta.5+1.21.4")!!)
}
```

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/*
* Copyright (c) 2025 senseiwells
* Licensed under the MIT License. See LICENSE file in the project root for details.
*/
package net.casual.arcade.events.server.mixins;

import net.casual.arcade.events.BuiltInEventPhases;
import net.casual.arcade.events.GlobalEventHandler;
import net.casual.arcade.events.server.entity.EntityTickEvent;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.level.Level;
import org.spongepowered.asm.mixin.Mixin;
import org.spongepowered.asm.mixin.Shadow;
import org.spongepowered.asm.mixin.injection.At;
import org.spongepowered.asm.mixin.injection.Inject;
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;

@Mixin(Entity.class)
public class EntityMixin {
@Shadow private Level level;

@Inject(
method = "tick",
at = @At("HEAD")
)
private void onTickPre(CallbackInfo ci) {
if (!this.level.isClientSide) {
EntityTickEvent event = new EntityTickEvent((Entity) (Object) this);
GlobalEventHandler.Server.broadcast(event, BuiltInEventPhases.PRE_PHASES);
}
}

@Inject(
method = "tick",
at = @At("HEAD")
)
private void onTickPost(CallbackInfo ci) {
if (!this.level.isClientSide) {
EntityTickEvent event = new EntityTickEvent((Entity) (Object) this);
GlobalEventHandler.Server.broadcast(event, BuiltInEventPhases.POST_PHASES);
}
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
/*
* Copyright (c) 2025 senseiwells
* Licensed under the MIT License. See LICENSE file in the project root for details.
*/
package net.casual.arcade.events.server.entity

import net.minecraft.world.entity.Entity

public data class EntityTickEvent(
override val entity: Entity
): EntityEvent
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
"BrewingStandBlockEntityMixin",
"CommandsMixin",
"EntityCallbacksMixin",
"EntityMixin",
"FlowingFluidMixin",
"InteractionHandlerMixin",
"ItemStackMixin",
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/*
* Copyright (c) 2025 senseiwells
* Licensed under the MIT License. See LICENSE file in the project root for details.
*/
package net.casual.arcade.extensions.mixins;

import net.casual.arcade.events.GlobalEventHandler;
Expand Down Expand Up @@ -34,9 +38,9 @@ private void onCreateEntity(
if (entity instanceof ServerPlayer) {
return;
}
this.arcade$extensions = new ExtensionMap();
EntityExtensionEvent event = new EntityExtensionEvent(entity);
GlobalEventHandler.Server.broadcast(event);
this.arcade$extensions = new ExtensionMap();
}

@Inject(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/*
* Copyright (c) 2025 senseiwells
* Licensed under the MIT License. See LICENSE file in the project root for details.
*/
package net.casual.arcade.extensions

import net.minecraft.server.level.ServerPlayer
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
/*
* Copyright (c) 2025 senseiwells
* Licensed under the MIT License. See LICENSE file in the project root for details.
*/
package net.casual.arcade.extensions.event

import net.casual.arcade.events.server.entity.EntityEvent
Expand Down
2 changes: 1 addition & 1 deletion build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ plugins {
java
}

val modVersion = "0.4.0-beta.2"
val modVersion = "0.4.0-beta.5"

allprojects {
apply(plugin = "org.jetbrains.kotlin.jvm")
Expand Down

0 comments on commit df0b2ce

Please sign in to comment.