mirror of
https://github.com/MinecraftForge/MinecraftForge.git
synced 2026-11-12 08:17:35 +00:00
Add a OnDatapackSyncEvent, useful as a notification for modders to send extra data to the client (#7912)
This commit is contained in:
1 parent
14c6fc3388
commit
dbdc345d4a
4 files changed
+84
-2
No files matched your search
@@ -16,8 +16,11 @@
|
||||
GameRules gamerules = serverlevel1.m_46469_();
|
||||
boolean flag = gamerules.m_46207_(GameRules.f_46156_);
|
||||
boolean flag1 = gamerules.m_46207_(GameRules.f_46145_);
|
||||
@@ -160,6 +_,7 @@
|
||||
@@ -158,8 +_,10 @@
|
||||
servergamepacketlistenerimpl.m_141995_(new ClientboundChangeDifficultyPacket(leveldata.m_5472_(), leveldata.m_5474_()));
|
||||
servergamepacketlistenerimpl.m_141995_(new ClientboundPlayerAbilitiesPacket(p_11263_.m_150110_()));
|
||||
servergamepacketlistenerimpl.m_141995_(new ClientboundSetCarriedItemPacket(p_11263_.m_150109_().f_35977_));
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.OnDatapackSyncEvent(this, p_11263_));
|
||||
servergamepacketlistenerimpl.m_141995_(new ClientboundUpdateRecipesPacket(this.f_11195_.m_129894_().m_44051_()));
|
||||
servergamepacketlistenerimpl.m_141995_(new ClientboundUpdateTagsPacket(this.f_11195_.m_129895_().m_144442_(this.f_11206_)));
|
||||
+ net.minecraftforge.fmllegacy.network.NetworkHooks.syncCustomTagTypes(p_11263_, this.f_11195_.m_129895_());
|
||||
@@ -110,9 +113,11 @@
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@@ -786,6 +_,7 @@
|
||||
@@ -785,7 +_,9 @@
|
||||
playeradvancements.m_135981_(this.f_11195_.m_129889_());
|
||||
}
|
||||
|
||||
+ net.minecraftforge.common.MinecraftForge.EVENT_BUS.post(new net.minecraftforge.event.OnDatapackSyncEvent(this, null));
|
||||
this.m_11268_(new ClientboundUpdateTagsPacket(this.f_11195_.m_129895_().m_144442_(this.f_11206_)));
|
||||
+ net.minecraftforge.fmllegacy.network.NetworkHooks.syncCustomTagTypes(this.f_11195_.m_129895_());
|
||||
ClientboundUpdateRecipesPacket clientboundupdaterecipespacket = new ClientboundUpdateRecipesPacket(this.f_11195_.m_129894_().m_44051_());
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
package net.minecraftforge.event;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraft.server.players.PlayerList;
|
||||
import net.minecraftforge.eventbus.api.Event;
|
||||
|
||||
/**
|
||||
* Fires when a player joins the server or when the reload command is ran,
|
||||
* before tags and crafting recipes are sent to the client. Send datapack data
|
||||
* to clients when this event fires.
|
||||
*/
|
||||
public class OnDatapackSyncEvent extends Event
|
||||
{
|
||||
private final PlayerList playerList;
|
||||
@Nullable
|
||||
private final ServerPlayer player;
|
||||
|
||||
public OnDatapackSyncEvent(PlayerList playerList, @Nullable ServerPlayer player)
|
||||
{
|
||||
this.playerList = playerList;
|
||||
this.player = player;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The server's player list to get a view of all players.
|
||||
*/
|
||||
public PlayerList getPlayerList()
|
||||
{
|
||||
return this.playerList;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return The player to sync datapacks to. Null when syncing for all players,
|
||||
* such as when the reload command runs.
|
||||
*/
|
||||
@Nullable
|
||||
public ServerPlayer getPlayer()
|
||||
{
|
||||
return this.player;
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
package net.minecraftforge.debug.misc;
|
||||
|
||||
import org.apache.logging.log4j.LogManager;
|
||||
import org.apache.logging.log4j.Logger;
|
||||
|
||||
import net.minecraft.server.level.ServerPlayer;
|
||||
import net.minecraftforge.event.OnDatapackSyncEvent;
|
||||
import net.minecraftforge.eventbus.api.SubscribeEvent;
|
||||
import net.minecraftforge.fml.common.Mod;
|
||||
|
||||
@Mod("send_datapacks_to_client")
|
||||
@Mod.EventBusSubscriber
|
||||
public class OnDatapackSynctEventTest
|
||||
{
|
||||
private static final Logger LOGGER = LogManager.getLogger();
|
||||
|
||||
@SubscribeEvent
|
||||
protected static void onSendDataToClient(final OnDatapackSyncEvent event)
|
||||
{
|
||||
// Fire for a specific player on login
|
||||
if (event.getPlayer() != null)
|
||||
syncData(event.getPlayer());
|
||||
// Fire for all players on /reload
|
||||
else
|
||||
event.getPlayerList().getPlayers().forEach(OnDatapackSynctEventTest::syncData);
|
||||
}
|
||||
|
||||
private static void syncData(ServerPlayer player)
|
||||
{
|
||||
LOGGER.info("Sending modded datapack data to {}", player.getName().getString());
|
||||
}
|
||||
}
|
||||
@@ -142,5 +142,7 @@ license="LGPL v2.1"
|
||||
modId="overlay_layers_test"
|
||||
[[mods]]
|
||||
modId="entity_renderer_events_test"
|
||||
[[mods]]
|
||||
modId="send_datapacks_to_client"
|
||||
|
||||
# ADD ABOVE THIS LINE
|
||||
Reference in new issue
Block a user