+ Antworten
Seite 2 von 2 ErsteErste 1 2
Ergebnis 11 bis 17 von 17
  1. #11
    Team Hund
    Registriert seit
    12.11.2010
    Beiträge
    3.263
    Minecraft
    Marlor
    @pitman-87
    Nur muss man dann selbst nicht sekündlich checken.
    Wenn man dem Buff sagt das er unendlich hält und sekündlich schaden macht
    dann muss man nur alle ~10 sekunden nachschaun ob man in der nähe von so einem Block ist
    bzw wenn der block selbst den buff ausgebt muss man selbst garnicht checken
    wär bestimmt auch tick schonender

  2. #12
    Team Hund Avatar von Gnoccy
    Registriert seit
    25.12.2010
    Beiträge
    457
    Minecraft
    Gnoccy
    ModKlasse:
    Code:
    public class ModBTM {
    	
    	
    	
    	
    	@Instance
    	public static ModBTM instance = new ModBTM();
    	
    	@Side dProxy(clientSide = "mod.ClientProxy", serverSide = "mod.commonProxy")
    	public static commonProxy proxy;
    	
    	
    	
    	@PreInit
    	public void preLoad(FMLPreInitializationEvent event){}
    	
    	
    	@Init 
    	public void load(FMLInitializationEvent event){
    		
    		ServerTickHandler serverTickHandler = new ServerTickHandler();
    		
    		
    		
    		TickRegistry.registerTickHandler(serverTickHandler, Side.SERVER);
    		
    		
    		proxy.registerRenderThings();
    		
    	}
    	
    
    }
    ServerTickHandler:
    Code:
    package mod.betterThanMagic;
    
    import java.util.EnumSet;
    import java.util.List;
    
    import net.minecraft.server.MinecraftServer;
    import net.minecraft.src.EntityPlayer;
    
    import cpw.mods.fml.common.ITickHandler;
    import cpw.mods.fml.common.TickType;
    
    public class ServerTickHandler implements ITickHandler {
    
    	@Override
    	public void tickStart(EnumSet<TickType> type, Object... tickData) {
    		System.out.println("mgbotp");
    		List l = MinecraftServer.getServer().getConfigurationManager().playerEntityList;
    		EntityPlayer[] playerArray = (EntityPlayer[]) l.toArray();
    		System.out.println(playerArray.length);
    		for(int i = 0; i < playerArray.length; i++){
    			if(playerArray[i].dimension == 22 && !playerInBlock((int)playerArray[i].posX, (int)playerArray[i].posY, (int)playerArray[i].posZ)){
    				playerArray[i].setEntityHealth(playerArray[i].getHealth() - 1);
    			}
    		}
    
    	}
    
    	@Override
    	public void tickEnd(EnumSet<TickType> type, Object... tickData) {
    		// TODO Auto-generated method stub
    
    	}
    
    	@Override
    	public EnumSet<TickType> ticks() {
    		// TODO Auto-generated method stub
    		return null;
    	}
    
    	@Override
    	public String getLabel() {
    		// TODO Auto-generated method stub
    		return null;
    	}
    	
    	protected boolean playerInBlock(int posX, int posY, int posZ){
    		return MinecraftServer.getServer().worldServerForDimension(22).getBlockId(posX, posY, posZ) == ModBTM.blockXyz.blockID;
    	}
    
    }
    Vorallem aus der ModKlasse habe ich einiges entfernt. Ich will noch nicht zu viel von meinem Projekt preisgeben. Dabe ging es aber um andere Dinge, wie Blöcke und Dimensionen.

  3. #13
    Zitat Zitat von Marlor Beitrag anzeigen
    @pitman-87
    Nur muss man dann selbst nicht sekündlich checken.
    Wenn man dem Buff sagt das er unendlich hält und sekündlich schaden macht
    dann muss man nur alle ~10 sekunden nachschaun ob man in der nähe von so einem Block ist
    bzw wenn der block selbst den buff ausgebt muss man selbst garnicht checken
    wär bestimmt auch tick schonender
    Egal ob sekündlich oder menütlich, trotzdem muss man in gewissen Abständen von irgendwo her checken wie nun der aktuelle stand ist, und eigentlich nur darum gehts.

    @Gnoccy pack das mal in deinen Tickhandler:

    Code:
    @Override
        public EnumSet<TickType> ticks()
        {
            return EnumSet.of(TickType.SERVER);
        }

  4. #14
    Team Hund
    Registriert seit
    12.11.2010
    Beiträge
    3.263
    Minecraft
    Marlor
    Zitat Zitat von pitman-87 Beitrag anzeigen
    Egal ob sekündlich oder menütlich, trotzdem muss man in gewissen Abständen von irgendwo her checken wie nun der aktuelle stand ist, und eigentlich nur darum gehts.
    Und was ist wohl schonender für die Performance?

  5. #15
    Team Hund Avatar von Gnoccy
    Registriert seit
    25.12.2010
    Beiträge
    457
    Minecraft
    Gnoccy
    Ok, danke @pitman-87 das war das Problem. Jetzt funktioniert alles.

  6. #16
    Zitat Zitat von Marlor Beitrag anzeigen
    Und was ist wohl schonender für die Performance?
    Es geht hier nicht um Performance, sondern darum dass es überhaupt funktioniert.
    Außerdem wird eh alles in Minecraft 20 mal die Sekunde aufgerufen, da machen die paar Zeilen kein Problem.

  7. #17
    Team Hund
    Registriert seit
    12.11.2010
    Beiträge
    3.263
    Minecraft
    Marlor
    Zitat Zitat von pitman-87 Beitrag anzeigen
    Es geht hier nicht um Performance, sondern darum dass es überhaupt funktioniert.
    Man sollte schon ein wenig vorausschauend denken und Performance gleich mit einbeziehen
    was bringt es die hälfte später neuschreiben zu müssen wenn der Mod größer wird?

+ Antworten