Jump to content

Renato

Members
  • Posts

    2
  • Joined

  • Last visited

Recent Profile Visitors

54283 profile views

Renato's Achievements

Tree Puncher

Tree Puncher (2/8)

0

Reputation

  1. I try to get some information about other players when joining a server. For example, I want to listen to the `AttackEntityEvent` to observe if one player hits another. However, this event works only if my own player hits other entities. Also, I want to read the information in the chat on a server with `ClientChatReceivedEvent` but that only works in Singleplayer. I know these problems are kind of separate ones but maybe they are linked because I register my Event listeners in a wrong way. I don't know. I have the same problem with many other events like `ArrowNockEvent`, `LivingHurtEvent`. The only event that works correctly is my `TickEvent.PlayerTickEvent`. Could you help me please. Are these events wrong? If so, are they other events that I can consider? If not, how can I gather information about other players on the server? Thanks for your help! @Mod(Main.MODID) public class Main { // Define mod id in a common place for everything to reference public static final String MODID = "tttdatacollector"; // Directly reference a slf4j logger private static final Logger LOGGER = LogUtils.getLogger(); public Main(FMLJavaModLoadingContext context) { IEventBus modEventBus = context.getModEventBus(); // Register the commonSetup method for modloading modEventBus.addListener(this::commonSetup); // Register ourselves for server and other game events we are interested in MinecraftForge.EVENT_BUS.register(this); MinecraftForge.EVENT_BUS.register(new PlayerTickEventHandler()); MinecraftForge.EVENT_BUS.register(new PlayerHurtEventHandler()); MinecraftForge.EVENT_BUS.register(new PlayerAttackEntityEventHandler()); MinecraftForge.EVENT_BUS.register(new ChatMessageEventHandler()); MinecraftForge.EVENT_BUS.register(new KillEventHandler()); } } public class ChatMessageEventHandler { private static final Logger log = LogUtils.getLogger(); @SubscribeEvent public void onChatMessageServer(ClientChatReceivedEvent event) { log.info("ClientChatReceivedEvent"); log.info(event.getMessage().getString()); } } public class BowShotEventHandler { private static final Logger log = LogUtils.getLogger(); @SubscribeEvent public void onArrowNock(ArrowNockEvent event) { log.info("onArrowNock"); if (event.getEntity() instanceof ServerPlayer player) { log.info("Player nocked an arrow: {}", player.getName().getString()); } } } public class PlayerAttackEntityEventHandler { private static final Logger log = LogUtils.getLogger(); @SubscribeEvent public void onPlayerAttack(AttackEntityEvent event) { log.info("Player Attack by {} to {}", event.getEntity().getName().getString(), event.getTarget().getName().getString()); } } public class PlayerTickEventHandler { private static final Logger log = LogUtils.getLogger(); private final AggregatedPlayerDataCache aggregatedPlayerDataCache = AggregatedPlayerDataCache.getInstance(); private final PlayerPositionCache playerPositionCache = PlayerPositionCache.getInstance(); private final PlayerDistanceScoreCalculator playerDistanceScoreCalculator = PlayerDistanceScoreCalculator.getInstance(); @SubscribeEvent public void onPlayerTick(TickEvent.PlayerTickEvent event) { var player = event.player; String playerName = player.getName().getString(); var playerData = aggregatedPlayerDataCache.getPlayerData(playerName); playerData.setPlayerName(playerName); var oldPos = playerPositionCache.getPlayerPosition(playerName); this.calculateAndSetDistanceAndScore(oldPos, playerData, player); } }
×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.