Follow along with the video below to see how to install our site as a web app on your home screen.
Примечание: This feature may not be available in some browsers.
рендер у меня в отдельном ивенте , ему только надо переменную обновлять.Dovakin написал(а):Для ТС,если хочешь рисовать на экране,то не выйдет ,ибо эвент серверный(хотя можно вынуть клиент)+ты не сможешь рисовать.Нужен бубен и рендер эвент
LogSystem log = new LogSystem( "Minecraft" );
FileConfigTree file_config = new FileConfigTree( log );
String mod_config_file = "my_mod_config.cfg";
file_config.addKeyValue( "worldName", "0", "desc" ); //запись в переменные
file_config.writeToFile( "", mod_config_file ); //сохранение в файл
//чтение из файла и получение значения из переменной
file_config.readFromFile( "", mod_config_file );
int timerWorldName = file_config.getNumber( "worldName" );
даSalamandr написал(а):к каждому миру и к каждому игроку свой?
@SubscribeEvent
public void onlogin(PlayerLoggedInEvent event)
{
System.out.println("login");
this.baseTime = System.currentTimeMillis();
World w = event.player.worldObj;
this.baseTime = System.currentTimeMillis();
this.timerAdd = loadTime(w.getWorldInfo().getWorldName(), mc.thePlayer.getDisplayName());
}
@SubscribeEvent
public void onexit(PlayerLoggedOutEvent event)
{
System.out.println("exit");
World w = event.player.worldObj;
saveTime(w.getWorldInfo().getWorldName(), mc.thePlayer.getDisplayName());
}
public void init(FMLInitializationEvent event)
{
if( event.getSide().isClient() )
FMLCommonHandler.instance().bus().register( new ServerEvents() );
else
MinecraftForge.EVENT_BUS.register( new ServerEvents() );
}
Не совсем так.Salamandr написал(а):для клиентской стороны их надо регистрировать как FML, для серверной как MinecraftForge
Код:public void init(FMLInitializationEvent event) { if( event.getSide().isClient() ) FMLCommonHandler.instance().bus().register( new ServerEvents() ); else MinecraftForge.EVENT_BUS.register( new ServerEvents() ); }
import java.io.DataInputStream;
import java.io.DataOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
import net.minecraftforge.client.event.RenderGameOverlayEvent.ElementType;
import cpw.mods.fml.common.eventhandler.SubscribeEvent;
import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedInEvent;
import cpw.mods.fml.common.gameevent.PlayerEvent.PlayerLoggedOutEvent;
import cpw.mods.fml.common.gameevent.TickEvent;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import org.lwjgl.opengl.GL11;
public class OVRL extends Gui
{
long timerAdd = 0L;
long baseTime = 0L;
long lastSave = 0L;
public boolean limit = false;
private Minecraft mc;
private static final ResourceLocation texture = new ResourceLocation("qi", "textures/gui/mana_bar.png");
public OVRL(Minecraft mc) {
super();
this.mc = mc;
}
private File getSaveFile(String worldName, String playerName)
{
Minecraft mc = Minecraft.getMinecraft();
File dataFile = new File("saves");
dataFile = new File(dataFile, worldName);
dataFile = new File(dataFile, "timer_" + playerName + ".dat");
return dataFile;
}
@SuppressWarnings("resource")
private void saveTime(String worldName, String username)
{
Minecraft mc = Minecraft.getMinecraft();
File dataFile = getSaveFile(worldName, username);
if (System.currentTimeMillis() - this.lastSave < 10000L) {
return;
}
if (dataFile.exists()) {
dataFile.delete();
}
try
{
dataFile.createNewFile();
DataOutputStream fos = new DataOutputStream(new FileOutputStream(dataFile));
fos.writeLong(calculateTime());
}
catch (Exception e)
{
System.out.println("Failed to save timer data: " + dataFile);
e.printStackTrace();
}
}
@SuppressWarnings("resource")
private long loadTime(String worldname, String username)
{
Minecraft mc = Minecraft.getMinecraft();
File dataFile = getSaveFile(worldname, username);
if (!dataFile.exists()) {
return 0L;
}
try
{
DataInputStream fis = new DataInputStream(new FileInputStream(dataFile));
return fis.readLong();
}
catch (Exception e)
{
System.out.println("Failed to load timer data: " + dataFile);
e.printStackTrace();
}
return 0L;
}
private long calculateTime()
{
return System.currentTimeMillis() - this.baseTime + this.timerAdd;
}
public String getDisplayString(long time)
{
int hour = (int)(time / 3600000L);
time -= hour * 3600000;
int min = (int)(time / 60000L);
time -= min * 60000;
int sec = (int)(time / 1000L);
time -= sec * 1000;
return String.format("%d:%02d:%02d.%03d", new Object[] { Integer.valueOf(hour), Integer.valueOf(min), Integer.valueOf(sec), Long.valueOf(time) });
}
@SubscribeEvent
public void onlogin(PlayerLoggedInEvent event)
{
System.out.println("login");
this.baseTime = System.currentTimeMillis();
World w = event.player.worldObj;
this.baseTime = System.currentTimeMillis();
this.timerAdd = loadTime(w.getWorldInfo().getWorldName(), mc.thePlayer.getDisplayName());
}
@SubscribeEvent
public void onexit(PlayerLoggedOutEvent event)
{
System.out.println("exit");
World w = event.player.worldObj;
saveTime(w.getWorldInfo().getWorldName(), mc.thePlayer.getDisplayName());
}
// @SideOnly(Side.CLIENT)
@SubscribeEvent
public void onRenderExperienceBar(RenderGameOverlayEvent.Post event) {
int xPos = 2;
int yPos = 6;
this.mc.getTextureManager().bindTexture(texture);
this.mc.fontRenderer.drawString(getDisplayString(calculateTime()), xPos, yPos, 16777215);
}
}
if( event.getSide().isClient() )
FMLCommonHandler.instance().bus().register( new OVRL(Minecraft.getMinecraft()) );
else
MinecraftForge.EVENT_BUS.register( new OVRL(Minecraft.getMinecraft()) );
Не делай велосипедов!Agravaine написал(а):Время храни в IExtendedEntityProperties.
Можно пожайлуста документацию по IExtendedEntityProperties?Agravaine написал(а):Не делай велосипедов!Agravaine написал(а):Время храни в IExtendedEntityProperties.