ModificationStation / StationAPI

A general use API for Fabric Loader mods on legacy Minecraft versions.
85 stars 19 forks source link

Multiplayer non-living entities do not appear #103

Closed matthewperiut closed 5 months ago

matthewperiut commented 7 months ago

I believe MobSpawnDataProvider works, but EntitySpawnDataProvider doesn't. Spawned entities that are using registerEntityHandlers instead of registerMobHandlers do not appear on server.

See matthewperiut/aether-fabric-b1.7.3#1 relevant code: com.matthewperiut.aether.entity.AetherEntities

    @EventListener
    public void registerEntityHandlers(EntityHandlerRegistryEvent event) {
        Registry.register(event.registry, MOD_ID.id("AetherLightning"), EntityAetherLightning::new);
        Registry.register(event.registry, MOD_ID.id("FlamingArrow"), EntityFlamingArrow::new);
        Registry.register(event.registry, MOD_ID.id("ZephyrSnowball"), EntityZephyrSnowball::new);
        Registry.register(event.registry, MOD_ID.id("PoisonNeedle"), EntityPoisonNeedle::new);
        Registry.register(event.registry, MOD_ID.id("PoisonDart"), EntityDartPoison::new);
        Registry.register(event.registry, MOD_ID.id("GoldenDart"), EntityDartGolden::new);
        Registry.register(event.registry, MOD_ID.id("EnchantedDart"), EntityDartEnchanted::new);
        Registry.register(event.registry, MOD_ID.id("CloudParachute"), EntityCloudParachute::new);
        Registry.register(event.registry, MOD_ID.id("FloatingBlock"), EntityFloatingBlock::new);
        Registry.register(event.registry, MOD_ID.id("FiroBall"), EntityFiroBall::new);
        Registry.register(event.registry, MOD_ID.id("LightningKnife"), EntityLightningKnife::new);
        Registry.register(event.registry, MOD_ID.id("NotchWave"), EntityNotchWave::new);
    }
matthewperiut commented 7 months ago

Also seen in https://github.com/kozibrodka/BetterThanWolves where "Broad Head Arrow" does not work on multiplayer.

matthewperiut commented 5 months ago

ALRIGHT I figured it out

  1. implements EntitySpawnDataProvider
  2. 
    public Identifier getHandlerIdentifier() {
        return MOD_ID.id("LightningKnife");
    }```
  3. @HasTrackingParameters(trackingDistance = 50, sendVelocity = TriState.TRUE, updatePeriod = 1)
  4. 
    public void registerEntityHandlers(EntityHandlerRegistryEvent event) {
        Registry.register(event.registry, MOD_ID.id("LightningKnife"), EntityAetherLightning::new);
        }
  5. profit