[Фонарик][1.7.10] Направленный источник света от игрока.

2,505
81
397
hohserg написал(а):
Можно в серверном мире сетать блок, не излучающий свет, а на клиенте о светом
Лайт мапа итак пересчитывается только на клиенте. Смысл делать это на сервере?
Но вот зачем сам блок? Игрок каждый тик расставляет на сервере блоки (а они синхронятся на клиент). Еще лучше, тайлы! А что, если будет 100 игроков? На кой нужна эта нагрузка, тем более, когда ее можно избежать.
Как минимум все вычисления и установки блоков нужно делать только на клиенте. Но это все равно не отменяет костыльности и убогости всего происходящего.
 
691
1
5
Dahaka написал(а):
hohserg написал(а):
Можно в серверном мире сетать блок, не излучающий свет, а на клиенте о светом
Лайт мапа итак пересчитывается только на клиенте. Смысл делать это на сервере?
Но вот зачем сам блок? Игрок каждый тик расставляет на сервере блоки (а они синхронятся на клиент). Еще лучше, тайлы! А что, если будет 100 игроков? На кой нужна эта нагрузка, тем более, когда ее можно избежать.
Как минимум все вычисления и установки блоков нужно делать только на клиенте. Но это все равно не отменяет костыльности и убогости всего происходящего.

Короче говорю: "Надеемся что Ивасик запилит гайд по нормальному фонарику"
 
2,505
81
397
Это шейдер. Это не для всех. Ради того, чтобы кто-то тупо скопипастил? Я бы не делал.
 
691
1
5
А я вот такой вот блок света нарыл:

Код:
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.material.Material;
import net.minecraft.client.renderer.texture.IconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;

public class BlockLight extends Block {

 public static Block instance;

 public BlockLight(int par1) {
 super(par1, Material.air);
 this.setLightValue(1);
 this.setUnlocalizedName("Invisible Light");
 this.setHardness(0);
 this.setResistance(0);
 }
 
 public void registerIcons(IconRegister par1IconRegister)
    {
        this.blockIcon = Block.glowStone.getBlockTextureFromSide(0);//par1IconRegister.registerIcon("***:light");
    }
 
 public boolean shouldSideBeRendered(IBlockAccess par1IBlockAccess, int par2, int par3, int par4, int par5)
    {
        return false;
    }
 
    public AxisAlignedBB getCollisionBoundingBoxFromPool(World par1World, int par2, int par3, int par4)
    {
        return null;
    }

    public boolean isOpaqueCube()
    {
        return false;
    }

    public boolean renderAsNormalBlock()
    {
        return false;
    }
    
    public MovingObjectPosition collisionRayTrace(World par1World, int par2, int par3, int par4, Vec3 par5Vec3, Vec3 par6Vec3)
    {
     return null;
    }
    
    public int quantityDropped(Random par1Random)
    {
        return 0;
    }
}
 
Сверху