[1.6.4] Мой энтити не видно другим игрокам на сервере

Код:
 extends EntityFX
Это даже не энтити, а партикл, его спавнить нужно через EffectRenderer только на клиенте.
Значит идея с пакетами не так уж и плоха.
 
anti344 написал(а):
Код:
 extends EntityFX
Это даже не энтити, а партикл, его спавнить нужно через EffectRenderer только на клиенте.
Значит идея с пакетами не так уж и плоха.
А как он обычный фейерверк на сервере спаунит? Тоже пакеты отсылает?
Я смотрел ссылки наверху, но не понял, как этим пользоваться. В какой момент отправлять пакет, что должно быть в пакете и что делать, когда этот пакет пришел на сервер?
Вы так пишете, как будто я спец по коду майна и знаю, что куда там и когда приходит.
Будьте добры, разжуйте эту тему по-доступнее или видео туториалы какие-нибудь.
 
Dragon2488 написал(а):
Мы тоже не спец, но почему то знаем.
знаем, но почему-то держим в тайне. А может и вовсе не знаете?
Объясните три пункта:
1) в какой момент отправлять пакет?
2) что этот пакет должен содержать?
3) что делать, когда пакет пришел на сервер? Как спаунить мой EntityFX?
 
Опиши лучше, что за Entity ты хочешь сделать.
Если подобие фейерверка - все частицы надо будет спавнить на клиенте. От EntityFX придется убрать наследование, посылать как обычную сущность, которая спавнит частички. А на самом сервере частиц НЕТ. И никогда не было, они там нафиг не нужны. И рендера там нет, поэтому он и крашится у тебя.
Вечером приду, после игры, постараюсь ещё отписаться.
 
Отсылать на сервер, на сервере по принятию отсылать на все клиенты кроме того, что отослал.
Пересылать ту инфу, что нужна для спавна(коорды там, еще что-то).
 
Oldestkon написал(а):
Опиши лучше, что за Entity ты хочешь сделать.
Если подобие фейерверка - все частицы надо будет спавнить на клиенте.
Да я хочу сделать некое подобие фейерверка. Бросил гранату, она отсчитала несколько тиков и умерла, а в этом месте заспавнились разноцветные "fireworkSparks" и разлетелись в заданном направлении. Как в классе EntityFireworkSparkFX
 
Так а зачем наследовать EntityFX ?
 
anti344 написал(а):
Отсылать на сервер, на сервере по принятию отсылать на все клиенты кроме того, что отослал.
Пересылать ту инфу, что нужна для спавна(коорды там, еще что-то).
Вот это уже более понятно.
anti344 написал(а):
Так а зачем наследовать EntityFX ?
А можно как то иначе?
 
Ну EntityFX - своя частица вообще. А если тебе нужна ентити, что просто спавнит частицы, то просто пилишь свою энтити и спавнишь в ней частицы.
 
У него есть энтити, которое спавнит ЕГО частицы.
 
Majestic написал(а):
У него есть энтити, которое спавнит ЕГО частицы.
Так нужно создавать отдельно ЕГО частицы и энтити, которая их спавнит.
 
Ок, перепутал, тогда кто там со мной спорил про пакеты?
Всё правильно, как я описал пакет слать, первую энтити спавнить как обычно, а вторую энтити частицу - только на клиенте и только через EffectRenderer.
 
BlackCrafter написал(а):
знаем, но почему-то держим в тайне. А может и вовсе не знаете?
Объясните три пункта:
1) в какой момент отправлять пакет?
2) что этот пакет должен содержать?
3) что делать, когда пакет пришел на сервер? Как спаунить мой EntityFX?
Наверное каждый пришедший на этот форум со временем понимает, что "объясните пожалуйста построчно" - ЗДЕСЬ НЕ РАБОТАЕТ. Сам таким был. :)

  1. Entity у тебя спавнится не случайно, а по какой-то причине (нажатие кнопки, действие моба). Именно в этом методе ты должен вставить строчку отправки пакета на сервер
  2. Пакет должен как-то идентифицировать того, кто его отправил (ник).
  3. В примере coolAlias'а обработка пакета сервером осуществляется здесь:
Код:
@Override
public void handleServerSide(EntityPlayer player) {
    // Как видишь, этот метод берет player в качестве входного параметра,
    // тем самым зная, кто его отправил. Ну и открывает игроку менюшку
    player.openGui(TutorialMain.instance, id, player.worldObj, (int) player.posX, (int) player.posY, (int) player.posZ);
    }
Пакеты лучше сделать на каждое действие, будь то выстрел пули, использование колдовства или открытие менюшки.
 
Принцип мне ясен. Звучит просто - отправить, принять, заспавнить. Я с кодом не могу разобраться.
 
Код:
package mods.mod_fireworks;

import java.util.Random;

import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import mods.mod_fireworks.particles.EntityEffect1;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.Minecraft;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.world.World;

public class BlockFirework1 extends Block {

    public BlockFirework1(int id, Material mat, String name) {
        super(id, mat);
        this.setUnlocalizedName(name);
        this.setCreativeTab(CreativeTabs.tabBlock);
        // TODO Auto-generated constructor stub
    }

    @SideOnly(Side.CLIENT)
    public void registerIcons(IconRegister reg)
    {
    
        this.blockIcon = reg.registerIcon(ModInfo.modId+":bomb");
        //particleHeartIcon = reg.registerIcon("mod_heartblock:heart");
    }
    
    @Override
    @SideOnly(Side.CLIENT)
    public void randomDisplayTick(World world, int x, int y, int z, Random rand) 
    {
        if (world.isRemote){
            for (int i=0; i<11; i++){
        float mX = rand.nextFloat();
        float mY = rand.nextFloat();
        float mZ = rand.nextFloat();
        float red = rand.nextFloat();
        float green = rand.nextFloat();
        float blue = rand.nextFloat();
        float scale = rand.nextFloat();
        int maxAge = 40;
        EntitySpark spark = new EntitySpark(world,
                x,y,z,mX,mY,mZ,Minecraft.getMinecraft().effectRenderer);
        spark.setRBGColorF(red, green, blue);
        
        Minecraft.getMinecraft().effectRenderer.addEffect((EntityFX)spark);
        
            }
        }
    }

}
Партиклы от этого блока видно всем клиентам. Он сам пакеты отправляет? В каком классе описан код отправки?
 
А то что randomDisplayTick клиентский тебя не смущает?
 
Назад
Сверху