use of net.minecraft.server.v1_7_R4.Chunk in project TheAPI by TheDevTec.
the class v1_7_R4 method packetBlockChange.
@Override
public Object packetBlockChange(World world, Position position) {
PacketPlayOutBlockChange packet = new PacketPlayOutBlockChange();
Object chunk = getChunk(world, position.getBlockX() >> 4, position.getBlockZ() >> 4);
packet.data = getData(chunk, position.getBlockX(), position.getBlockY(), position.getBlockZ());
packet.block = (Block) getBlock(chunk, position.getBlockX(), position.getBlockY(), position.getBlockZ());
try {
posX.set(packet, position.getBlockX());
posY.set(packet, position.getBlockY());
posZ.set(packet, position.getBlockZ());
} catch (Exception e) {
}
return packet;
}
use of net.minecraft.server.v1_7_R4.Chunk in project Movecraft by APDevTeam.
the class IWorldHandler method setBlockFast.
private void setBlockFast(@NotNull World world, @NotNull BlockPosition position, @NotNull IBlockData data) {
Chunk chunk = world.getChunkAtWorldCoords(position);
ChunkSection chunkSection = chunk.getSections()[position.getY() >> 4];
if (chunkSection == null) {
// Put a GLASS block to initialize the section. It will be replaced next with the real block.
chunk.setType(position, Blocks.GLASS.getBlockData(), false);
chunkSection = chunk.getSections()[position.getY() >> 4];
}
if (chunkSection.getType(position.getX() & 15, position.getY() & 15, position.getZ() & 15).equals(data)) {
// Block is already of correct type and data, don't overwrite
return;
}
chunkSection.setType(position.getX() & 15, position.getY() & 15, position.getZ() & 15, data);
world.notify(position, data, data, 3);
var engine = chunk.e();
if (engine != null)
engine.a(position);
chunk.markDirty();
}
use of net.minecraft.server.v1_7_R4.Chunk in project Movecraft by APDevTeam.
the class IWorldHandler method setBlockFast.
private void setBlockFast(@NotNull World world, @NotNull BlockPosition position, @NotNull IBlockData data) {
Chunk chunk = world.getChunkAtWorldCoords(position);
ChunkSection chunkSection = chunk.getSections()[position.getY() >> 4];
if (chunkSection == null) {
// Put a GLASS block to initialize the section. It will be replaced next with the real block.
chunk.setType(position, Blocks.GLASS.getBlockData(), false);
chunkSection = chunk.getSections()[position.getY() >> 4];
}
if (chunkSection.getType(position.getX() & 15, position.getY() & 15, position.getZ() & 15).equals(data)) {
// Block is already of correct type and data, don't overwrite
return;
}
chunkSection.setType(position.getX() & 15, position.getY() & 15, position.getZ() & 15, data);
world.notify(position, data, data, 3);
var engine = chunk.e();
if (engine != null)
engine.a(position);
chunk.markDirty();
}
use of net.minecraft.server.v1_7_R4.Chunk in project PaperDev by Kamillaova.
the class ChunkIOProvider method callStage1.
// async stuff
public Chunk callStage1(QueuedChunk queuedChunk) throws RuntimeException {
try (Timing ignored = queuedChunk.provider.world.timings.chunkIOStage1.startTimingIfSync()) {
// Paper
ChunkRegionLoader loader = queuedChunk.loader;
Object[] data = loader.loadChunk(queuedChunk.world, queuedChunk.x, queuedChunk.z);
if (data != null) {
queuedChunk.compound = (NBTTagCompound) data[1];
return (Chunk) data[0];
}
return null;
} catch (IOException ex) {
throw new RuntimeException(ex);
// Paper - Mirror vanilla by catching everything (else) rather than immediately crashing the server
// stage2 will receive a null chunk and then load it synchronously, where vanilla MC will properly log and recover
// stage2 will _not_ however return that instance, only load it
} catch (Exception ex) {
return null;
}
}
use of net.minecraft.server.v1_7_R4.Chunk in project PaperDev by Kamillaova.
the class ActivationRange method activateEntities.
/**
* Find what entities are in range of the players in the world and set
* active if in range.
*/
public static void activateEntities(World world) {
MinecraftTimings.entityActivationCheckTimer.startTiming();
final int miscActivationRange = world.spigotConfig.miscActivationRange;
final int animalActivationRange = world.spigotConfig.animalActivationRange;
final int monsterActivationRange = world.spigotConfig.monsterActivationRange;
// Paper
final int waterActivationRange = world.spigotConfig.waterActivationRange;
int maxRange = Math.max(monsterActivationRange, animalActivationRange);
maxRange = Math.max(maxRange, miscActivationRange);
maxRange = Math.min((world.spigotConfig.viewDistance << 4) - 8, maxRange);
// Paper
Chunk chunk;
for (EntityHuman player : world.players) {
player.activatedTick = MinecraftServer.currentTick;
maxBB = player.getBoundingBox().grow(maxRange, 256, maxRange);
miscBB = player.getBoundingBox().grow(miscActivationRange, 256, miscActivationRange);
animalBB = player.getBoundingBox().grow(animalActivationRange, 256, animalActivationRange);
// Paper
waterBB = player.getBoundingBox().grow(waterActivationRange, 256, waterActivationRange);
monsterBB = player.getBoundingBox().grow(monsterActivationRange, 256, monsterActivationRange);
int i = MathHelper.floor(maxBB.a / 16.0D);
int j = MathHelper.floor(maxBB.d / 16.0D);
int k = MathHelper.floor(maxBB.c / 16.0D);
int l = MathHelper.floor(maxBB.f / 16.0D);
for (int i1 = i; i1 <= j; ++i1) {
for (int j1 = k; j1 <= l; ++j1) {
if (// Paper
(chunk = MCUtil.getLoadedChunkWithoutMarkingActive(world, i1, j1)) != null) {
// Paper
activateChunkEntities(chunk);
}
}
}
}
MinecraftTimings.entityActivationCheckTimer.stopTiming();
}
Aggregations