Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Kilka problemów z własnym generatorem świata.


Ak47Dev

Rekomendowane odpowiedzi

Opublikowano

Cześć mam taki problem ze swoim generatorem świata. Dokładnie niektóre chunki nie reagują na polecenia zawarte w blockpopulatorach wygląda to mniejwięcej tak http://zapodaj.net/8fb0e2d174465.png.html . Pozatym nie pojawiają się potwory tylko slaimy.

 

Klasa main:

public class AwesomeGeneratorWorld extends JavaPlugin{
    
    @Override
    public ChunkGenerator getDefaultWorldGenerator(String worldName, String id){
        return new AwesomeGenerator(this);
    }
}

ChunkGenerator:

class AwesomeGenerator extends ChunkGenerator {
    AwesomeGeneratorWorld agw;
    ArrayList<BlockPopulator> populators = new ArrayList();

    @Override
    public byte[][] generateBlockSections(World world, Random random, int x, int z, BiomeGrid biomes){
        byte[][] result = new byte[world.getMaxHeight() / 16][];
        for(x = 0; x < 16; x++){
            for(z = 0; z < 16; z++){
                setBlock(result, x, 0, z, (byte)Material.BEDROCK.getId());
            }
        }
        return result;
    }
    void setBlock(byte[][] result, int x, int y, int z, byte blkid) {
        // is this chunk part already initialized?
        if (result[y >> 4] == null) {
            // Initialize the chunk part
            result[y >> 4] = new byte[4096];
        }
        // set the block (look above, how this is done)
        result[y >> 4][((y & 0xF) << 8) | (z << 4) | x] = blkid;
    }
    public AwesomeGenerator(AwesomeGeneratorWorld agw){
        this.agw = agw;
        populators.add(new CustomTrees());
        populators.add(new CustomLakes());
        populators.add(new CustomGrass());
    }
    @Override
    public ArrayList<BlockPopulator> getDefaultPopulators(World w){
        return this.populators;
    }
}

Populator bloków:

public class CustomLakes extends BlockPopulator{

    @Override
    public void populate(World world, Random random, Chunk chunk) {
        for (int x = 0; x < 16; x++){
            for (int z = 0; z < 16; z++){
                int chance = random.nextInt(100);
                Block handle = world.getHighestBlockAt(x + chunk.getX() * 16, z + chunk.getZ() * 16);
                if (chance < 66){
                    if (handle.getRelative(BlockFace.DOWN).getType().equals(Material.BEDROCK)) {
                        handle.setType(Material.GRASS);
                    }
                }
                else{
                    if (handle.getRelative(BlockFace.DOWN).getType().equals(Material.BEDROCK)) {
                        handle.setType(Material.WATER);
                        
                    }
                }
            }
        }
    }
}

I Traw:

public class CustomGrass extends BlockPopulator{
    @Override
    public void populate(World world, Random random, Chunk chunk) {
        for (int x = 0; x < 16; x++){
            for (int z = 0; z < 16; z++){
                int chance = random.nextInt(100);
                Block handle = world.getHighestBlockAt(x + chunk.getX() * 16, z + chunk.getZ() * 16);
                if (chance < 70){
                    if (handle.getRelative(BlockFace.DOWN).getType().equals(Material.GRASS)) {
                        handle.setType(Material.SUGAR_CANE);
                        handle.setTypeIdAndData(Material.LONG_GRASS.getId(), (byte)1, false);
                    }
                }
                else{
                   if (handle.getRelative(BlockFace.DOWN).getType().equals(Material.GRASS)) {
                       handle.setType(Material.SUGAR_CANE);
                   }
                }
            }
        }
    }
}

@GotoFinal

@OtekPlay

@OldisPL

Plugin jest wydajniejszy ! Rozumiesz to czy przewinąć od noooowa ! Ostrożny bądz i uważaj na skrypty !

 

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...