Плотность тумана

1,057
50
234
Добрый день.
Вот у меня такая штука:
 
plxfK1L9SCk.jpg


Как увеличить плотность тумана, чтобы игрок видел не дальше 10-15 блоков?
 
Красиво.Сфоткай и скинь мне в лс без худа.
Скорее всего через евент Fog...Event
 
Ставить прорисовку нет смысла. Ибо На Венере видимость маленькая, а тут ползунок перетащил и все видишь...


Можно подробнее про ивент?
 
Насчёт изменения я бы поспорил. Хотя всё довольно легко решается.
Просто клиентский код всегда можно исправить и плотность тумана убрать.
По сути: да, FogDensityEvent. И на сервере поставь маленький view-distance
 
Я так понял, создаем класс
Код:
public class TickHandlerVenus implements ITickHandler {

 @Cancelable
 public static class FogDensity extends EntityViewRenderEvent
 {
      public float density;

       public FogDensity(EntityRenderer renderer, EntityLivingBase entity, Block block, double renderPartialTicks, float density)
      {
          super(renderer, entity, block, renderPartialTicks);
          this.density = N;
      }
  }

}
Где N есть число.

Вот только, куда его пихать, класс? в чанкпровайдер?
Или в ворлдпровайдер?

И еще такой вопрос, как правильно его импортировать....
 
Что же ты делаешь.
Взял и создал своё событие.
Ты точно читал туториал по событиям?
Идешь в ClientProxy и добавляешь туда метод:

Код:
@SubscribeEvent
public void handleFog(FogDensityEvent e) {
  e.density = 0.85F;
}
И всё.
Главное чтобы ClientProxy был зарегистрирован в EVENT_BUS. Ну или создай для этого отдельный класс. Тут как хочешь.
 
Спасибо
Еще, не подскажите, как делать проверку на ID дименсиона?
[merge_posts_bbcode]Добавлено: 26.12.2014 16:43:05[/merge_posts_bbcode]

public void preload() {

MinecraftForge.EVENT_BUS.register(new ClientCommandHandler());
FMLCommonHandler.instance().bus().register(new ClientCommandHandler());

}

вот этот бас вписан....
 
Чему там даваться?

Код:
@SubscribeEvent
    public void configureFog(FogDensity e) {
        e.density = 0.96F;
        e.setCanceled(true);
    }
В ClientProxy и всё.
KnSpmZb.png
 
Код:
package blessentumble.core.proxy;

import micdoodle8.mods.galacticraft.core.client.render.item.ItemRendererKey;
import micdoodle8.mods.galacticraft.planets.asteroids.AsteroidsModule;
import net.minecraft.block.Block;
import net.minecraft.client.Minecraft;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.client.ClientCommandHandler;
import net.minecraftforge.client.MinecraftForgeClient;
import net.minecraftforge.client.event.EntityViewRenderEvent.FogDensity;
import net.minecraftforge.client.model.AdvancedModelLoader;
import net.minecraftforge.client.model.IModelCustom;
import net.minecraftforge.common.MinecraftForge;
import blessentumble.BlesseAddon;
import blessentumble.core.achievements.AchEvent;
import blessentumble.core.achievements.AchievementList;
import blessentumble.core.blocks.BlocksAddon;
import blessentumble.core.items.ItemsAddon;
import blessentumble.moons.europa.entities.EntityBossBlaze;
import blessentumble.moons.europa.entities.EntityEvolvedColdBlaze;
import blessentumble.moons.europa.entities.particle.EntityIceWater;
import blessentumble.moons.europa.entities.particle.EntityIceWater2;
import blessentumble.moons.europa.render.block.BlockRendererEuropaTreasureChest;
import blessentumble.moons.europa.render.entities.RenderBossBlaze;
import blessentumble.moons.europa.render.entities.RenderEvolvedColdBlaze;
import blessentumble.moons.europa.render.tile.TileEntityEuropaTreasureChestRenderer;
import blessentumble.moons.europa.tile.TileEntityEuropaTreasureChest;
import blessentumble.moons.io.entities.EntityEvolvedFireCreeper;
import blessentumble.moons.io.entities.EntityTier4Rocket;
import blessentumble.moons.io.render.entity.RenderEvolvedFireCreeper;
import blessentumble.moons.io.render.entity.RenderTier4Rocket;
import blessentumble.moons.io.render.item.ItemRendererTier4Rocket;
import cpw.mods.fml.client.FMLClientHandler;
import cpw.mods.fml.client.registry.ClientRegistry;
import cpw.mods.fml.client.registry.RenderingRegistry;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;


public class ClientProxy extends CommonProxy {
 
 private static Minecraft mc = FMLClientHandler.instance().getClient(); 
 private static int europaTreasureChestRenderID;
 
 public void preload() {

 }
 
 
 public void load()
 { 
 ClientProxy.registerEntityRenderers();
 ClientProxy.registerItemRenderers();
 ClientRegistry.bindTileEntitySpecialRenderer(TileEntityEuropaTreasureChest.class, new TileEntityEuropaTreasureChestRenderer());
 
 this.register_event(new AchEvent());
 AchievementList.load();
 }
 
 
 public void postload() {
 
 
 }

 
 public static void registerEntityRenderers()
 {
 ClientProxy.europaTreasureChestRenderID = RenderingRegistry.getNextAvailableRenderId();
 
 RenderingRegistry.registerEntityRenderingHandler(EntityEvolvedColdBlaze.class, new RenderEvolvedColdBlaze());
 RenderingRegistry.registerEntityRenderingHandler(EntityBossBlaze.class, new RenderBossBlaze());
 RenderingRegistry.registerBlockHandler(new BlockRendererEuropaTreasureChest(ClientProxy.europaTreasureChestRenderID));
 
 RenderingRegistry.registerEntityRenderingHandler(EntityEvolvedFireCreeper.class, new RenderEvolvedFireCreeper());
 
 }
 
 public static void registerItemRenderers()
 {
 IModelCustom rocketModeltier4 = AdvancedModelLoader.loadModel(new ResourceLocation(AsteroidsModule.ASSET_PREFIX, "models/tier3rocket.obj"));
 RenderingRegistry.registerEntityRenderingHandler(EntityTier4Rocket.class, new RenderTier4Rocket(rocketModeltier4, BlesseAddon.ASSET_PREFIX, "tier4rocket"));
 
 MinecraftForgeClient.registerItemRenderer(ItemsAddon.Tier4Key, new ItemRendererKey(new ResourceLocation(BlesseAddon.ASSET_PREFIX, "textures/model/europaTreasureChest.png")));
 MinecraftForgeClient.registerItemRenderer(ItemsAddon.Tier4Rocket, new ItemRendererTier4Rocket(rocketModeltier4));
 
 }
 
 public void spawnParticle(World world, String particleType, double x, double y, double z, double velX, double velY, double velZ) {
 if(mc != null && mc.renderViewEntity != null && mc.effectRenderer != null && mc.theWorld == world) {
 double distX = mc.renderViewEntity.posX - x;
 double distY = mc.renderViewEntity.posY - y;
 double distZ = mc.renderViewEntity.posZ - z;
 Object particle = null;
 double maxDist = 64.0D;
 if(distX * distX + distY * distY + distZ * distZ < maxDist * maxDist) {
 if(particleType.equals("largeflame")) {
 particle = new EntityIceWater(world, x, y, z, velX, velY, velZ);
 } 
 if(particleType.equals("largewater")) {
 particle = new EntityIceWater2(world, x, y, z, velX, velY, velZ);
 } 

 if(particle != null) {
 ((Entity)particle).prevPosX = ((Entity)particle).posX;
 ((Entity)particle).prevPosY = ((Entity)particle).posY;
 ((Entity)particle).prevPosZ = ((Entity)particle).posZ;
 mc.effectRenderer.addEffect((EntityFX)particle);
 }
 }
 }

 }
 
 @Override
 public int getBlockRender(Block block)
 {
 if (block == BlocksAddon.EuropaTChestT3)
 {
 return ClientProxy.europaTreasureChestRenderID;
 }
 return -1;
 }
 
 public void register_event(Object obj)
 {
 FMLCommonHandler.instance().bus().register(obj);
 MinecraftForge.EVENT_BUS.register(obj);
 }
 
@SubscribeEvent
 public void configureFog(FogDensity e) {
 e.density = 0.96F;
 e.setCanceled(true);
 }

 }

@SidedProxy(clientSide="blessentumble.core.proxy.ClientProxy", serverSide="blessentumble.core.proxy.CommonProxy")

public static CommonProxy proxy;

Чет нифига....
 
В комонн прокси должны быть теже методы,но пустые(лоад). Кстати импорты можно делаь так
Пакет.*
 
Они есть.
Код:
package blessentumble.core.proxy;

import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import net.minecraft.block.Block;
import net.minecraft.world.World;
import net.minecraftforge.client.event.EntityViewRenderEvent.FogDensity;
import net.minecraftforge.common.MinecraftForge;
import blessentumble.core.achievements.AchEvent;
import blessentumble.core.achievements.AchievementList;

public class CommonProxy {

 public void preload() {
 
 }
 
 
 public void load()
 { 
 this.register_event(new AchEvent());
 AchievementList.load();
 }
 
 
 public void postload() {
 
 }


 public void spawnParticle(World world, String string, double d, double e,
 double f, double g, double h, double i) {

 
 }


 public int getBlockRender(Block block) {

 return 0;
 }
 
 public void register_event(Object obj)
 {

 }

 @SubscribeEvent
 public void configureFog(FogDensity e) {}

}
 
Получилось!
hAQYiYXY-Ps.jpg


Последний вопрос.

Как данный туман сделать только в определенном дименсионе? Допустим с id -6
 
Попробуй как нибудь раком из Minecraft(о классе) достать,либо пробуй рефлексией(если филды приватные).И чекай,если игрок в -6 то выполняй/Minecraft.getMinecraft().thePlayer.getDimensionID().Так вроде бы
 
Сделал вот так:
@SubscribeEvent
public void configureFog(FogDensity e) {
World world = ClientProxy.mc.theWorld;

if (world.provider.dimensionId == -6)
{
e.density = 0.025F;
e.setCanceled(true);
}

}

Когда появляешься в дименсионе - тумана нет
 
Назад
Сверху