geforkt von Mirrors/AxiomPaperPlugin
Change version, fix sending world properties, fix deadlock
Dieser Commit ist enthalten in:
Ursprung
1cead96565
Commit
48e10626f8
@ -8,7 +8,7 @@ plugins {
|
||||
}
|
||||
|
||||
group = "com.moulberry.axiom"
|
||||
version = "1.2.1"
|
||||
version = "1.4.0"
|
||||
description = "Serverside component for Axiom on Paper"
|
||||
|
||||
java {
|
||||
|
@ -149,22 +149,6 @@ public class AxiomPaper extends JavaPlugin implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onJoin(PlayerJoinEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
Bukkit.getScheduler().scheduleSyncDelayedTask(this, () -> {
|
||||
World world = player.getWorld();
|
||||
|
||||
ServerWorldPropertiesRegistry properties = getWorldProperties(world);
|
||||
|
||||
if (properties == null) {
|
||||
player.sendPluginMessage(this, "axiom:register_world_properties", new byte[]{0});
|
||||
} else {
|
||||
properties.registerFor(this, player);
|
||||
}
|
||||
}, 20); // Why does this need to be delayed?
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
public void onGameRuleChanged(WorldGameRuleChangeEvent event) {
|
||||
if (event.getGameRule() == GameRule.DO_WEATHER_CYCLE) {
|
||||
|
@ -6,11 +6,13 @@ import com.moulberry.axiom.View;
|
||||
import com.moulberry.axiom.event.AxiomHandshakeEvent;
|
||||
import com.moulberry.axiom.persistence.ItemStackDataType;
|
||||
import com.moulberry.axiom.persistence.UUIDDataType;
|
||||
import com.moulberry.axiom.world_properties.server.ServerWorldPropertiesRegistry;
|
||||
import io.netty.buffer.Unpooled;
|
||||
import net.kyori.adventure.text.Component;
|
||||
import net.minecraft.network.FriendlyByteBuf;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.craftbukkit.v1_20_R1.inventory.CraftItemStack;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.bukkit.inventory.ItemStack;
|
||||
@ -101,6 +103,16 @@ public class HelloPacketListener implements PluginMessageListener {
|
||||
|
||||
player.sendPluginMessage(this.plugin, "axiom:set_editor_views", buf.accessByteBufWithCorrectSize());
|
||||
}
|
||||
|
||||
// Register world properties
|
||||
World world = player.getWorld();
|
||||
ServerWorldPropertiesRegistry properties = plugin.getWorldProperties(world);
|
||||
|
||||
if (properties == null) {
|
||||
player.sendPluginMessage(plugin, "axiom:register_world_properties", new byte[]{0});
|
||||
} else {
|
||||
properties.registerFor(plugin, player);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -169,8 +169,6 @@ public class SetBlockBufferPacketListener {
|
||||
|
||||
Short2ObjectMap<CompressedBlockEntity> blockEntityChunkMap = buffer.getBlockEntityChunkMap(entry.getLongKey());
|
||||
|
||||
sectionStates.acquire();
|
||||
try {
|
||||
for (int x = 0; x < 16; x++) {
|
||||
for (int y = 0; y < 16; y++) {
|
||||
for (int z = 0; z < 16; z++) {
|
||||
@ -197,7 +195,7 @@ public class SetBlockBufferPacketListener {
|
||||
continue;
|
||||
}
|
||||
|
||||
BlockState old = section.setBlockState(x, y, z, blockState, false);
|
||||
BlockState old = section.setBlockState(x, y, z, blockState, true);
|
||||
if (blockState != old) {
|
||||
Block block = blockState.getBlock();
|
||||
motionBlocking.update(x, by, z, blockState);
|
||||
@ -260,9 +258,6 @@ public class SetBlockBufferPacketListener {
|
||||
}
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
sectionStates.release();
|
||||
}
|
||||
|
||||
boolean nowHasOnlyAir = section.hasOnlyAir();
|
||||
if (hasOnlyAir != nowHasOnlyAir) {
|
||||
|
Laden…
In neuem Issue referenzieren
Einen Benutzer sperren