- Баллы
- 123
.
Последнее редактирование:
Следуйте инструкциям в видео ниже, чтобы узнать, как установить наш сайт как веб-приложение на главный экран вашего устройства.
Примечание: Эта функция может быть недоступна в некоторых браузерах.
@EventHandler(priority = EventPriority.LOW)
public void onPlayerMove(final PlayerMoveEvent e) {
final Player player = e.getPlayer();
final Chunk chunk = e.getTo().getChunk();
if (player.isOp()) {
for (int y = 0; y < 256; ++y) {
for (int x = 0; x < 2; ++x) {
for (int z = 0; z < 2; ++z) {
final Block block = chunk.getBlock(0, y, 0);
final Block b = block.getWorld().getBlockAt(block.getLocation().add((double)(16 * x), 0.0, (double)(16 * z)));
if (b.getType() == Material.AIR) {
player.spawnParticle(Particle.VILLAGER_HAPPY, b.getLocation(), 1, 0, 0, 0, 1);
}
}
}
}
}
}
Не знал о такой функции...F3 + G уволились?
Очень круто... Но... А можно так что не только по бокам, а и по сторонам?)Java:@EventHandler(priority = EventPriority.LOW) public void onPlayerMove(final PlayerMoveEvent e) { final Player player = e.getPlayer(); final Chunk chunk = e.getTo().getChunk(); if (player.isOp()) { for (int y = 0; y < 256; ++y) { for (int x = 0; x < 2; ++x) { for (int z = 0; z < 2; ++z) { final Block block = chunk.getBlock(0, y, 0); final Block b = block.getWorld().getBlockAt(block.getLocation().add((double)(16 * x), 0.0, (double)(16 * z))); if (b.getType() == Material.AIR) { player.spawnParticle(Particle.VILLAGER_HAPPY, b.getLocation(), 1, 0, 0, 0, 1); } } } } } }
вроде только одному игроку отправляет.
![]()

если по бокам, то фпс будет просаживаться.Не знал о такой функции...
Но в любом случае не подходит, заставлять игроков жмать F3+G когда мне надо - будет сложно)))
Очень круто... Но... А можно так что не только по бокам, а и по сторонам?)
И еще вопрос на засыпочку ботанам...
Какие частицы в майне (Particle) самые.. БОЛЬШИЕ...
Ну кроме взрывов, из них делать стенку чанка будет некрасиво...
Ну типо чтоб даже косоглазый их точно увидел![]()
public void onEnable() {
Bukkit.getScheduler().runTaskTimerAsynchronously(this, this, 28, 28);
}
@Override
public void run() {
for (Player player : Bukkit.getOnlinePlayers()) {
if (player.isOp()) {
final Chunk chunk = player.getLocation().getChunk();
for (int y = 0; y < 256; ++y) {
for (int x = 0; x < 2; ++x) {
for (int z = 0; z < 2; ++z) {
final Block block = chunk.getBlock(0, y, 0);
final Block b = block.getWorld().getBlockAt(block.getLocation().add((double)(16 * x), 0.0, (double)(16 * z)));
if (b.getType() == Material.AIR && (block.getY() < player.getLocation().getY() + 5 ) && (block.getY() > player.getLocation().getY() -5 )) {
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.05, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.05, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.1, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.1, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.15, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.15, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.20, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.20, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.25, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.25, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.30, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.30, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.35, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.35, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.40, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.40, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.45, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.45, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.50, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.50, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.55, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.55, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.60, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.60, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.65, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.65, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.70, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.70, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.75, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.75, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.80, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.80, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.85, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.85, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.90, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.90, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 0.95, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -0.95, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, 1, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, b.getLocation(), 1, 0, -1, 0, 0.25);
}
}
}
}
}
}
}
@Override
public void run() {
for (Player player : Bukkit.getOnlinePlayers()) {
if (player.isOp()) {
final Chunk chunk = player.getLocation().getChunk();
for (int y = 0; y < 256; ++y) {
for (int x = 0; x < 2; ++x) {
for (int z = 0; z < 2; ++z) {
final Block block = chunk.getBlock(0, y, 0);
final Block b = block.getWorld().getBlockAt(block.getLocation().add((double)(16 * x), +0.0, (double)(16 * z)));
if (b.getType() == Material.AIR && (block.getY() < player.getLocation().getY() + 5 ) && (block.getY() > player.getLocation().getY() -5 )) {
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.05), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.05), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.1), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.1), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.15), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.15), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.20), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.20), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.25), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.25), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.30), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.30), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.35), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.35), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.40), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.40), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.45), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.45), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.50), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.50), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.55), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.55), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.60), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.60), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.65), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.65), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.70), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.70), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.75), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.75), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.80), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.80), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.85), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.85), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.90), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.90), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +0.95), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -0.95), b.getZ()), 1, 0, 0, 0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() + 1) ,b.getZ()),1, 0, 0,0, 0.25);
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -1), b.getZ()), 1, 0, 0, 0, 0.25);
}
}
}
}
}
}
}
Так это не по бокам, это только по краям, чтобы прямая линия была, и небыло промежутков между частицами.Ыыы, ладно, это слишком страшно...
Буду лучше юзать тогда только по бокам))
Дальше идет вопрос именно про сами частицы,
как мне заспавнить частицы эффекта зелья определенного цвета?
И можно ли такое вообще?
public void selectChunk(Chunk chunk, Player player, Particle particle) {
for (int y = 0; y < 256; ++y) {
for (int x = 0; x < 2; ++x) {
for (int z = 0; z < 2; ++z) {
final Block block = chunk.getBlock(0, y, 0);
final Block b = block.getWorld().getBlockAt(block.getLocation().add((double)(16 * x), 0.0, (double)(16 * z)));
if (b.getType() == Material.AIR) {
player.spawnParticle(particle, b.getLocation(), 1, 0, 0, 0, 1);
}
}
}
}
}
Я понял, ну ладно, все-равно пожалуй сделаю без этого)Так это не по бокам, это только по краям, чтобы прямая линия была, и небыло промежутков между частицами.
for (double d = 0.05; d <= 1.05; d+= 0.05) {
}
@Override
public void run() {
for (Player player : Bukkit.getOnlinePlayers()) {
if (player.isOp()) {
final Chunk chunk = player.getLocation().getChunk();
for (int y = 0; y < 256; ++y) {
for (int x = 0; x < 2; ++x) {
for (int z = 0; z < 2; ++z) {
final Block block = chunk.getBlock(0, y, 0);
final Block b = block.getWorld().getBlockAt(block.getLocation().add((double)(16 * x), +0.0, (double)(16 * z)));
if (b.getType() == Material.AIR && (block.getY() < player.getLocation().getY() + 5 ) && (block.getY() > player.getLocation().getY() -5 )) {
for (double d = 0.05; d <= 1.05; d+= 0.05) {
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +d), b.getZ()), 1, 0, 0, 0, 0.25);
}
for (double d = 0.05; d >= -1.05; d-= 0.05) {
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() -d), b.getZ()), 1, 0, 0, 0, 0.25);
}
}
}
}
}
}
}
}
команда же вроде для всех игроков спавнит частицы./particle

public void selectChunk(Chunk chunk, Player player, Effect effect) {
if (GWMServerPlugin.plugin.config.getBoolean("USE_BETTER_CHUNK_SELECT")) {
for (int y = 0; y < 256; ++y) {
for (int x = 0; x < 2; ++x) {
for (int z = 0; z < 2; ++z) {
final Block block = chunk.getBlock(0, y, 0);
final Block b = block.getWorld().getBlockAt(block.getLocation().add((double) (16 * x), 0.0, (double) (16 * z)));
player.playEffect(b.getLocation(), effect, 1);
}
}
}
} else {
for (int y = 0; y < 256; ++y) {
for (int x = 0; x < 2; ++x) {
for (int z = 0; z < 2; ++z) {
final Block block = chunk.getBlock(0, y, 0);
final Block b = block.getWorld().getBlockAt(block.getLocation().add((double) (16 * x), 0.0, (double) (16 * z)));
if (b.getType() == Material.AIR && (block.getY() < player.getLocation().getY() + 32) && (block.getY() > player.getLocation().getY() - 16))
for (double d = 0.05; d <= 1.05; d += 0.05)
player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX(), (b.getY() + d), b.getZ()), 1, 0, 0, 0, 0.25);
}
}
}
}
}
Параметры команды "particle <name> <x> <y> <z><xd> <yd> <zd> <speed> [count] [mode] [player] [params ...]".команда же вроде для всех игроков спавнит частицы.
А пакеты только для определёных игроков. Поидее ведь от пакетов должно быть меньше нагрузки чем от команды.
Я вот передал в вот такой метод для удобства, что мне нужна переждать как последний параметр для того чтобы заспавнить эффект зелья определенного цвета?
ArrayList<Player> p = new ArrayList<Player>();
@Override
public void run() {
for (Player player : Bukkit.getOnlinePlayers()) {
if (player.isOp()) {
final Chunk chunk = player.getLocation().getChunk();
p.add(player);
for (int y = 0; y < 256; ++y) {
for (int x = 0; x < 2; ++x) {
for (int z = 0; z < 2; ++z) {
final Block block = chunk.getBlock(0, y, 0);
final Block b = block.getWorld().getBlockAt(block.getLocation().add((double)(16 * x), +0.0, (double)(16 * z)));
if (b.getType() == Material.AIR && (block.getY() < player.getLocation().getY() + 5 ) && (block.getY() > player.getLocation().getY() -5 )) {
for (double d = 0.05; d <= 1.05; d+= 0.05) {
ParticleEffect.REDSTONE.sendColor(p, new Location(b.getWorld(), b.getX() , (b.getY() +d), b.getZ()), Color.BLACK);
// import java.awt.Color;
// player.spawnParticle(Particle.DRIP_WATER, new Location(b.getWorld(), b.getX() , (b.getY() +d), b.getZ()), 1, 0, 0, 0, 0.25);
}
}
}
}
}
p.remove(player);
}
}
}
// enable.. a.add(0);//
ArrayList<Player> p = new ArrayList<Player>();
ArrayList<Integer> a = new ArrayList<Integer>();
@Override
public void run() {
for (Player player : Bukkit.getOnlinePlayers()) {
if (player.isOp()) {
final Chunk chunk = player.getLocation().getChunk();
Location corner1 = chunk.getBlock(0, 0, 0).getLocation();
Location corner2 = chunk.getBlock(15, 0, 0).getLocation();
Location corner3 = chunk.getBlock(0, 0, 15).getLocation();
Location corner4 = chunk.getBlock(15, 0, 15).getLocation();
p.add(player);
a.set(0, 0);
for (int i = 0; i < 127; ++i) {
for (int i2 = 0; i2 < 15; ++i2) {
corner1 = chunk.getBlock(i2, i, 0).getLocation();
corner2 = chunk.getBlock(15, i, i2).getLocation();
corner3 = chunk.getBlock(15 - i2, i, 15).getLocation();
corner4 = chunk.getBlock(0, i, 15 - i2).getLocation();
if (corner1.getBlock().getType() == Material.AIR && (corner1.getY() < player.getLocation().getY() + 10 ) && (corner1.getY() > player.getLocation().getY() -10 )) {
ParticleEffect.REDSTONE.sendColor(p, new Location(corner1.getWorld(), corner1.getX() , corner1.getY() , corner1.getZ()), Color.BLACK);
a.set(0, a.get(0) + 1);
}
if (corner2.getBlock().getType() == Material.AIR && (corner2.getY() < player.getLocation().getY() + 10 ) && (corner2.getY() > player.getLocation().getY() -10 )) {
ParticleEffect.REDSTONE.sendColor(p, new Location(corner2.getWorld(), corner2.getX() , corner2.getY() , corner2.getZ()), Color.BLACK);
a.set(0, a.get(0) + 1);
}
if (corner3.getBlock().getType() == Material.AIR && (corner3.getY() < player.getLocation().getY() + 10 ) && (corner3.getY() > player.getLocation().getY() -10 )) {
ParticleEffect.REDSTONE.sendColor(p, new Location(corner3.getWorld(), corner3.getX() , corner3.getY() , corner3.getZ()), Color.BLACK);
a.set(0, a.get(0) + 1);
}
if (corner4.getBlock().getType() == Material.AIR && (corner4.getY() < player.getLocation().getY() + 10 ) && (corner4.getY() > player.getLocation().getY() -10 )) {
ParticleEffect.REDSTONE.sendColor(p, new Location(corner4.getWorld(), corner4.getX() , corner4.getY(), corner4.getZ()), Color.BLACK);
a.set(0, a.get(0) + 1);
}
}
}
p.remove(player);
System.out.print(a.get(0));
}
}
}