mirror of
https://github.com/architectury/architectury-api.git
synced 2026-03-28 03:56:59 -05:00
Add PlayerEvent#CHANGE_DIMENSION
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
plugins {
|
||||
id "architectury-plugin" version "2.0.57"
|
||||
id "forgified-fabric-loom" version "0.6.49" apply false
|
||||
id "architectury-plugin" version "2.0.61"
|
||||
id "forgified-fabric-loom" version "0.6.53" apply false
|
||||
id "org.cadixdev.licenser" version "0.5.0"
|
||||
id "com.jfrog.bintray" version "1.8.4"
|
||||
id "com.matthewprenger.cursegradle" version "1.4.0" apply false
|
||||
@@ -30,7 +30,7 @@ allprojects {
|
||||
isSnapshot = System.getenv("PR_NUM") != null
|
||||
}
|
||||
|
||||
def runNumber = (System.getenv("GITHUB_RUN_NUMBER") == null ? (((short) new Random().nextInt()).abs() + 1000).toString() : System.getenv("GITHUB_RUN_NUMBER"))
|
||||
def runNumber = (System.getenv("GITHUB_RUN_NUMBER") == null ? "9999" : System.getenv("GITHUB_RUN_NUMBER"))
|
||||
|
||||
if (!ext.isSnapshot) {
|
||||
version = rootProject.base_version + "." + runNumber
|
||||
|
||||
@@ -24,6 +24,7 @@ import me.shedaniel.architectury.event.EventFactory;
|
||||
import me.shedaniel.architectury.utils.IntValue;
|
||||
import net.minecraft.advancements.Advancement;
|
||||
import net.minecraft.core.BlockPos;
|
||||
import net.minecraft.resources.ResourceKey;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.Container;
|
||||
import net.minecraft.world.InteractionResult;
|
||||
@@ -45,6 +46,7 @@ public interface PlayerEvent {
|
||||
Event<SmeltItem> SMELT_ITEM = EventFactory.createLoop();
|
||||
Event<PickupItemPredicate> PICKUP_ITEM_PRE = EventFactory.createInteractionResult();
|
||||
Event<PickupItem> PICKUP_ITEM_POST = EventFactory.createLoop();
|
||||
Event<ChangeDimension> CHANGE_DIMENSION = EventFactory.createLoop();
|
||||
Event<DropItem> DROP_ITEM = EventFactory.createLoop();
|
||||
Event<OpenMenu> OPEN_MENU = EventFactory.createLoop();
|
||||
Event<CloseMenu> CLOSE_MENU = EventFactory.createLoop();
|
||||
@@ -86,6 +88,10 @@ public interface PlayerEvent {
|
||||
void pickup(Player player, ItemEntity entity, ItemStack stack);
|
||||
}
|
||||
|
||||
interface ChangeDimension {
|
||||
void change(ServerPlayer player, ResourceKey<Level> oldLevel, ResourceKey<Level> newLevel);
|
||||
}
|
||||
|
||||
interface DropItem {
|
||||
InteractionResult drop(Player player, ItemEntity entity);
|
||||
}
|
||||
|
||||
@@ -20,6 +20,7 @@
|
||||
package me.shedaniel.architectury.mixin.fabric;
|
||||
|
||||
import me.shedaniel.architectury.event.events.PlayerEvent;
|
||||
import net.minecraft.server.level.ServerLevel;
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.world.Container;
|
||||
import net.minecraft.world.MenuProvider;
|
||||
@@ -57,4 +58,9 @@ public class MixinServerPlayer {
|
||||
private void doCloseContainer(CallbackInfo ci) {
|
||||
PlayerEvent.CLOSE_MENU.invoker().close((ServerPlayer) (Object) this, ((ServerPlayer) (Object) this).containerMenu);
|
||||
}
|
||||
|
||||
@Inject(method = "triggerDimensionChangeTriggers", at = @At("HEAD"))
|
||||
private void changeDimension(ServerLevel serverLevel, CallbackInfo ci) {
|
||||
PlayerEvent.CHANGE_DIMENSION.invoker().change((ServerPlayer) (Object) this, serverLevel.dimension(), ((ServerPlayer) (Object) this).level.dimension());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -322,6 +322,13 @@ public class EventHandlerImplCommon {
|
||||
LifecycleEvent.SERVER_BEFORE_START.invoker().stateChanged(event.getServer());
|
||||
}
|
||||
|
||||
@SubscribeEvent
|
||||
public static void event(PlayerChangedDimensionEvent event) {
|
||||
if (event.getPlayer() instanceof ServerPlayer) {
|
||||
PlayerEvent.CHANGE_DIMENSION.invoker().change((ServerPlayer) event.getPlayer(), event.getFrom(), event.getTo());
|
||||
}
|
||||
}
|
||||
|
||||
public static class ModBasedEventHandler {
|
||||
|
||||
}
|
||||
|
||||
@@ -165,6 +165,9 @@ public class DebugEvents {
|
||||
PlayerEvent.CLOSE_MENU.register((player, menu) -> {
|
||||
SINK.accept(player.getScoreboardName() + " closes " + toSimpleName(menu) + logSide(player.level));
|
||||
});
|
||||
PlayerEvent.CHANGE_DIMENSION.register((player, oldLevel, newLevel) -> {
|
||||
SINK.accept(player.getScoreboardName() + " switched from " + oldLevel.location() + " to " + newLevel.location() + logSide(player.level));
|
||||
});
|
||||
}
|
||||
|
||||
public static String toShortString(Vec3i pos) {
|
||||
|
||||
Reference in New Issue
Block a user