Added __on_player_message event (#1312)
* Added __on_player_sends_message event * Docs for chat message event * Rename to __on_player_message * Editor support * Added event to event_test app * Update docs/scarpet/api/Events.md Co-authored-by: gnembon <41132274+gnembon@users.noreply.github.com>
This commit is contained in:
1 parent
4da992dd22
commit
bf00051482
6 files changed
+34
No files matched your search
@@ -275,6 +275,9 @@ Triggered when the player has successfully logged in and was placed in the game.
|
|||||||
### `__on_player_disconnects(player, reason)`
|
### `__on_player_disconnects(player, reason)`
|
||||||
Triggered when a player sends a disconnect package or is forcefully disconnected from the server.
|
Triggered when a player sends a disconnect package or is forcefully disconnected from the server.
|
||||||
|
|
||||||
|
### `__on_player_message(player, message)`
|
||||||
|
Triggered when a player sends a chat message or runs a command.
|
||||||
|
|
||||||
### `__on_statistic(player, category, event, value)`
|
### `__on_statistic(player, category, event, value)`
|
||||||
Triggered when a player statistic changes. Doesn't notify on periodic an rhythmic events, i.e.
|
Triggered when a player statistic changes. Doesn't notify on periodic an rhythmic events, i.e.
|
||||||
`time_since_death`, `time_since_rest`, and `played_one_minute` since these are triggered every tick. Event
|
`time_since_death`, `time_since_rest`, and `played_one_minute` since these are triggered every tick. Event
|
||||||
|
|||||||
@@ -44,5 +44,6 @@ __on_player_dies(player) ->
|
|||||||
__on_player_respawns(player) ->
|
__on_player_respawns(player) ->
|
||||||
__on_player_disconnects(player, reason) ->
|
__on_player_disconnects(player, reason) ->
|
||||||
__on_player_connects(player) ->
|
__on_player_connects(player) ->
|
||||||
|
__on_player_message(player, message) ->
|
||||||
__on_explosion(pos, power, source, causer, mode, fire) ->
|
__on_explosion(pos, power, source, causer, mode, fire) ->
|
||||||
__on_explosion_outcome(pos, power, source, causer, mode, fire, blocks, entities) ->
|
__on_explosion_outcome(pos, power, source, causer, mode, fire, blocks, entities) ->
|
||||||
@@ -147,6 +147,7 @@
|
|||||||
__on_player_respawns
|
__on_player_respawns
|
||||||
__on_player_disconnects
|
__on_player_disconnects
|
||||||
__on_player_connects
|
__on_player_connects
|
||||||
|
__on_player_message
|
||||||
__on_explosion
|
__on_explosion
|
||||||
__on_explosion_outcome
|
__on_explosion_outcome
|
||||||
</Keywords>
|
</Keywords>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
package carpet.mixins;
|
package carpet.mixins;
|
||||||
|
|
||||||
|
import net.minecraft.server.network.TextFilter;
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.Shadow;
|
import org.spongepowered.asm.mixin.Shadow;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
@@ -24,6 +25,7 @@ import static carpet.script.CarpetEventServer.Event.PLAYER_STOPS_SPRINTING;
|
|||||||
import static carpet.script.CarpetEventServer.Event.PLAYER_SWAPS_HANDS;
|
import static carpet.script.CarpetEventServer.Event.PLAYER_SWAPS_HANDS;
|
||||||
import static carpet.script.CarpetEventServer.Event.PLAYER_SWINGS_HAND;
|
import static carpet.script.CarpetEventServer.Event.PLAYER_SWINGS_HAND;
|
||||||
import static carpet.script.CarpetEventServer.Event.PLAYER_SWITCHES_SLOT;
|
import static carpet.script.CarpetEventServer.Event.PLAYER_SWITCHES_SLOT;
|
||||||
|
import static carpet.script.CarpetEventServer.Event.PLAYER_MESSAGE;
|
||||||
import static carpet.script.CarpetEventServer.Event.PLAYER_USES_ITEM;
|
import static carpet.script.CarpetEventServer.Event.PLAYER_USES_ITEM;
|
||||||
import static carpet.script.CarpetEventServer.Event.PLAYER_WAKES_UP;
|
import static carpet.script.CarpetEventServer.Event.PLAYER_WAKES_UP;
|
||||||
|
|
||||||
@@ -42,6 +44,7 @@ import net.minecraft.server.network.ServerGamePacketListenerImpl;
|
|||||||
import net.minecraft.world.InteractionHand;
|
import net.minecraft.world.InteractionHand;
|
||||||
import net.minecraft.world.item.ItemStack;
|
import net.minecraft.world.item.ItemStack;
|
||||||
import net.minecraft.world.phys.BlockHitResult;
|
import net.minecraft.world.phys.BlockHitResult;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.LocalCapture;
|
||||||
|
|
||||||
|
|
||||||
@Mixin(ServerGamePacketListenerImpl.class)
|
@Mixin(ServerGamePacketListenerImpl.class)
|
||||||
@@ -278,4 +281,15 @@ public class ServerGamePacketListenerImpl_scarpetEventsMixin
|
|||||||
PLAYER_SWINGS_HAND.onHandAction(player, packet.getHand());
|
PLAYER_SWINGS_HAND.onHandAction(player, packet.getHand());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Inject(method = "handleChat(Lnet/minecraft/server/network/TextFilter$FilteredText;)V",
|
||||||
|
at = @At(value = "INVOKE", target = "Ljava/lang/String;startsWith(Ljava/lang/String;)Z"),
|
||||||
|
locals = LocalCapture.CAPTURE_FAILHARD
|
||||||
|
)
|
||||||
|
private void onChatMessage(TextFilter.FilteredText filteredText, CallbackInfo ci, String string) {
|
||||||
|
if (PLAYER_MESSAGE.isNeeded())
|
||||||
|
{
|
||||||
|
PLAYER_MESSAGE.onPlayerMessage(player,string);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -856,6 +856,14 @@ public class CarpetEventServer
|
|||||||
handler.call( () -> Arrays.asList(new EntityValue(player), new StringValue(message)), player::createCommandSourceStack);
|
handler.call( () -> Arrays.asList(new EntityValue(player), new StringValue(message)), player::createCommandSourceStack);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
public static final Event PLAYER_MESSAGE = new Event("player_message", 2, false) {
|
||||||
|
@Override
|
||||||
|
public void onPlayerMessage(ServerPlayer player, String message) {
|
||||||
|
handler.call( () -> Arrays.asList(new EntityValue(player), new StringValue(message)), player::createCommandSourceStack);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
public static final Event STATISTICS = new Event("statistic", 4, false)
|
public static final Event STATISTICS = new Event("statistic", 4, false)
|
||||||
{
|
{
|
||||||
private <T> ResourceLocation getStatId(Stat<T> stat)
|
private <T> ResourceLocation getStatId(Stat<T> stat)
|
||||||
|
|||||||
@@ -251,6 +251,13 @@ __on_player_disconnects(player, reason) ->
|
|||||||
print('Player '+player+' disconnects because: '+reason)
|
print('Player '+player+' disconnects because: '+reason)
|
||||||
);
|
);
|
||||||
|
|
||||||
|
__on_player_message(player, message) ->
|
||||||
|
(
|
||||||
|
print('');
|
||||||
|
print('__on_player_message(player, message)');
|
||||||
|
print('Player '+player+' sent message: '+message)
|
||||||
|
);
|
||||||
|
|
||||||
__on_player_chooses_recipe(player, recipe, full_stack) ->
|
__on_player_chooses_recipe(player, recipe, full_stack) ->
|
||||||
(
|
(
|
||||||
print('');
|
print('');
|
||||||
|
|||||||
Reference in new issue
Block a user