Bug on block#setType

Discussion in 'Spigot Plugin Development' started by vitorblog, Sep 13, 2018 at 9:18 PM.

  1. I have a simple code to generate my plot world anda when a try to get any location of the world and this give me a chunk
    upload_2018-9-13_17-16-10.png

    Code (Text):
    Block b = Bukkit.getWorld("terrenos").getBlockAt(x, 67, z);
    b.setType(Material.STONE);
     

    Attached Files:

  2. What are you trying to do?
     
  3. I'm trying to select two locs and make a region with WorldGuard (or cuboid)
     
  4. Loop through all the blocks between the two locations and set the block types?
     
  5. If you're trying to make a region with world guard you can just use a worldedit wand to select the two locations?
     
  6. I Tried that and this give me the result of thread
    Edit:
    Men i need make that automatically in the plugin
     
  7. Code (Java):
    Location pos1 = <yourfirstlocation>;
    Location pos2 = <yoursecondlocation>;
    Vector max = Vector.getMaximum(pos1.toVector, pos2.toVector());
    Vector min = Vector.getMinimum(pos1.toVector(), pos2.toVector());
    for (int x = min.getBlockX(); x <= max.getBlockX();x++) {
      for (int y = min.getBlockY(); y <= max.getBlockY(); y++) {
        for (int z = min.getBlockZ(); z <= max.getBlockZ();z++) {
          Block block = Bukkit.getServer().getWorld("terrenos").getBlockAt(x,y,z);
          block.setType(Material.STONE);

          //This will loop through all the blocks from pos1 to pos2 and set them to stone.
        }
      }
    }
     
  8. Thanks men ._. but... that is not my problem
    my problem is on world generation
    code:
    Code (Text):

    @Override
    public short[][] generateExtBlockSections(World world, Random random, int cx, int cz, BiomeGrid biomes) {
        int maxY = world.getMaxHeight();

        short[][] result = new short[maxY / 16][];

        double size = plotsize + pathsize;
        int valx;
        int valz;

        double n1;
        double n2;
        double n3;
        int mod2 = 0;
        int mod1 = 1;

        if (pathsize % 2 == 1) {
            n1 = Math.ceil(((double) pathsize) / 2) - 2;
            n2 = Math.ceil(((double) pathsize) / 2) - 1;
            n3 = Math.ceil(((double) pathsize) / 2);
        } else {
            n1 = Math.floor(((double) pathsize) / 2) - 2;
            n2 = Math.floor(((double) pathsize) / 2) - 1;
            n3 = Math.floor(((double) pathsize) / 2);
        }

        if (pathsize % 2 == 1) {
            mod2 = -1;
        }

        for (int x = 0; x < 16; x++) {
            valx = (cx * 16 + x);

            for (int z = 0; z < 16; z++) {
                int height = roadheight + 2;
                valz = (cz * 16 + z);

                biomes.setBiome(x, z, Biome.PLAINS);

                for (int y = 0; y < height; y++) {
                    if (y == 0) {
                        setBlock(result, x, y, z, bottom);

                    } else if (y == roadheight) {
                        if ((valx - n3 + mod1) % size == 0 || (valx + n3 + mod2) % size == 0) // middle+3
                        {
                            boolean found = false;
                            for (double i = n2; i >= 0; i--) {
                                if ((valz - i + mod1) % size == 0 || (valz + i + mod2) % size == 0) {
                                    found = true;
                                    break;
                                }
                            }

                            if (found) {
                                setBlock(result, x, y, z, floor1);
                            } else {
                                setBlock(result, x, y, z, filling);
                            }
                        } else if ((valx - n2 + mod1) % size == 0 || (valx + n2 + mod2) % size == 0) // middle+2
                        {
                            if ((valz - n3 + mod1) % size == 0 || (valz + n3 + mod2) % size == 0 || (valz - n2 + mod1) % size == 0 || (valz + n2 + mod2) % size == 0) {
                                setBlock(result, x, y, z, floor1);
                            } else {
                                setBlock(result, x, y, z, floor2);
                            }
                        } else if ((valx - n1 + mod1) % size == 0 || (valx + n1 + mod2) % size == 0) // middle+2
                        {
                            if ((valz - n2 + mod1) % size == 0 || (valz + n2 + mod2) % size == 0 || (valz - n1 + mod1) % size == 0 || (valz + n1 + mod2) % size == 0) {
                                setBlock(result, x, y, z, floor2);
                            } else {
                                setBlock(result, x, y, z, floor1);
                            }
                        } else {
                            boolean found = false;
                            for (double i = n1; i >= 0; i--) {
                                if ((valz - i + mod1) % size == 0 || (valz + i + mod2) % size == 0) {
                                    found = true;
                                    break;
                                }
                            }

                            if (found) {
                                setBlock(result, x, y, z, floor1);
                            } else {
                                if ((valz - n2 + mod1) % size == 0 || (valz + n2 + mod2) % size == 0) {
                                    setBlock(result, x, y, z, floor2);
                                } else {
                                    boolean found2 = false;
                                    for (double i = n1; i >= 0; i--) {
                                        if ((valz - i + mod1) % size == 0 || (valz + i + mod2) % size == 0) {
                                            found2 = true;
                                            break;
                                        }
                                    }

                                    if (found2) {
                                        setBlock(result, x, y, z, floor1);
                                    } else {
                                        boolean found3 = false;
                                        for (double i = n3; i >= 0; i--) {
                                            if ((valx - i + mod1) % size == 0 || (valx + i + mod2) % size == 0) {
                                                found3 = true;
                                                break;
                                            }
                                        }

                                        if (found3) {
                                            setBlock(result, x, y, z, floor1);
                                        } else {
                                            setBlock(result, x, y, z, plotfloor);
                                            //Main.api.cus.add(new Cu(x, z));
                                        }
                                    }
                                }
                            }
                        }
                    } else if (y == (roadheight + 1)) {

                        if ((valx - n3 + mod1) % size == 0 || (valx + n3 + mod2) % size == 0) // middle+3
                        {
                            boolean found = false;
                            for (double i = n2; i >= 0; i--) {
                                if ((valz - i + mod1) % size == 0 || (valz + i + mod2) % size == 0) {
                                    found = true;
                                    break;
                                }
                            }

                            if (found) {
                            } else {
                                setBlock(result, x, y, z, wall);
                                for (int yy = 0; yy != 65; yy++){
                                    setBlock(result, x, yy, z, (short)7);
                                }
                            }
                        } else {
                            boolean found = false;
                            for (double i = n2; i >= 0; i--) {
                                if ((valx - i + mod1) % size == 0 || (valx + i + mod2) % size == 0) {
                                    found = true;
                                    break;
                                }
                            }

                            if (!found) {
                                if ((valz - n3 + mod1) % size == 0 || (valz + n3 + mod2) % size == 0) {
                                    setBlock(result, x, y, z, wall);
                                    for (int yy = 0; yy != 65; yy++){
                                        setBlock(result, x, yy, z, (short)7);
                                    }
                                } else {
                                }
                            }
                        }
                    } else {
                        setBlock(result, x, y, z, filling);
                    }
                }
            }
        }

        return result;
    }
     
     

  9. Can you please post the error you get into a hastebin link and post that here?
     
  10. I don't get any error... please read the thread
     
  11. Can you please explain your issue in a bit more depth?
     
  12. Basically I'm trying to create a region (automatically) on the plot during / after the world generation of plot like plotsquared or plotme
     
  13. On a specific plot or on all plots?
     
  14. On all plots asas
     
  15. Up.
    Anyone help-me please
     

Share This Page