Skip to content

Commit

Permalink
Merge pull request #14 from Tim203/move-fixes
Browse files Browse the repository at this point in the history
Updated to latest adapters commit and fixes the double getWorld call
  • Loading branch information
Camotoy authored Nov 19, 2020
2 parents 7268694 + 360db28 commit 1ba0915
Show file tree
Hide file tree
Showing 5 changed files with 30 additions and 32 deletions.
2 changes: 1 addition & 1 deletion bootstrap/spigot/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
</dependency>
<dependency>
<groupId>org.geysermc.adapters</groupId>
<artifactId>GeyserAdapters</artifactId>
<artifactId>spigot-all</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
</dependencies>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@
import com.github.steveice10.mc.protocol.MinecraftConstants;
import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;
import org.geysermc.adapters.GeyserAdapters;
import org.geysermc.adapters.spigot.SpigotAdapters;
import org.geysermc.common.PlatformType;
import org.geysermc.connector.GeyserConnector;
import org.geysermc.connector.bootstrap.GeyserBootstrap;
Expand Down Expand Up @@ -61,7 +61,6 @@
import java.util.logging.Level;

public class GeyserSpigotPlugin extends JavaPlugin implements GeyserBootstrap {

private GeyserSpigotCommandManager geyserCommandManager;
private GeyserSpigotConfiguration geyserConfig;
private GeyserSpigotLogger geyserLogger;
Expand Down Expand Up @@ -154,7 +153,7 @@ public void onEnable() {
try {
String name = Bukkit.getServer().getClass().getPackage().getName();
String nmsVersion = name.substring(name.lastIndexOf('.') + 1);
GeyserAdapters.registerWorldAdapter(PlatformType.SPIGOT, nmsVersion);
SpigotAdapters.registerWorldAdapter(nmsVersion);
if (isViaVersion && isViaVersionNeeded()) {
if (isLegacy) {
// Pre-1.13
Expand Down Expand Up @@ -200,8 +199,9 @@ public void onEnable() {

@Override
public void onDisable() {
if (connector != null)
if (connector != null) {
connector.shutdown();
}
}

@Override
Expand Down Expand Up @@ -266,7 +266,7 @@ private int[] parseVersion(String versionParam) {
String t = stringArray[index].replaceAll("\\D", "");
try {
temp[index] = Integer.parseInt(t);
} catch(NumberFormatException ex) {
} catch (NumberFormatException ex) {
temp[index] = 0;
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -27,8 +27,8 @@

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.geysermc.adapters.GeyserAdapters;
import org.geysermc.adapters.WorldAdapter;
import org.geysermc.adapters.spigot.SpigotAdapters;
import org.geysermc.adapters.spigot.SpigotWorldAdapter;
import org.geysermc.connector.network.session.GeyserSession;
import org.geysermc.connector.network.translators.world.block.BlockTranslator;
import us.myles.ViaVersion.api.Via;
Expand All @@ -38,21 +38,22 @@
* Used with ViaVersion and pre-1.13.
*/
public class GeyserSpigot1_12NativeWorldManager extends GeyserSpigot1_12WorldManager {
private final WorldAdapter adapter;
private final SpigotWorldAdapter adapter;

public GeyserSpigot1_12NativeWorldManager() {
this.adapter = GeyserAdapters.getWorldAdapter();
this.adapter = SpigotAdapters.getWorldAdapter();
// Unlike post-1.13, we can't build up a cache of block states, because block entities need some special conversion
}

@Override
public int getBlockAt(GeyserSession session, int x, int y, int z) {
Player bukkitPlayer;
if ((bukkitPlayer = Bukkit.getPlayer(session.getPlayerEntity().getUsername())) == null) {
Player player = Bukkit.getPlayer(session.getPlayerEntity().getUsername());
if (player == null) {
return BlockTranslator.JAVA_AIR_ID;
}
// Get block entity storage
BlockStorage storage = Via.getManager().getConnection(bukkitPlayer.getUniqueId()).get(BlockStorage.class);
int blockId = adapter.getBlockAt(bukkitPlayer.getWorld().getName(), x, y, z);
BlockStorage storage = Via.getManager().getConnection(player.getUniqueId()).get(BlockStorage.class);
int blockId = adapter.getBlockAt(player.getWorld(), x, y, z);
return getLegacyBlock(storage, blockId, x, y, z);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -56,13 +56,13 @@ public GeyserSpigot1_12WorldManager() {

@Override
public int getBlockAt(GeyserSession session, int x, int y, int z) {
Player bukkitPlayer;
if ((bukkitPlayer = Bukkit.getPlayer(session.getPlayerEntity().getUsername())) == null) {
Player player = Bukkit.getPlayer(session.getPlayerEntity().getUsername());
if (player == null) {
return BlockTranslator.JAVA_AIR_ID;
}
// Get block entity storage
BlockStorage storage = Via.getManager().getConnection(bukkitPlayer.getUniqueId()).get(BlockStorage.class);
Block block = bukkitPlayer.getWorld().getBlockAt(x, y, z);
BlockStorage storage = Via.getManager().getConnection(player.getUniqueId()).get(BlockStorage.class);
Block block = player.getWorld().getBlockAt(x, y, z);
// Black magic that gets the old block state ID
int blockId = (block.getType().getId() << 4) | (block.getData() & 0xF);
return getLegacyBlock(storage, blockId, x, y, z);
Expand Down Expand Up @@ -102,13 +102,13 @@ public int getLegacyBlock(BlockStorage storage, int blockId, int x, int y, int z
@SuppressWarnings("deprecation")
@Override
public void getBlocksInSection(GeyserSession session, int x, int y, int z, Chunk chunk) {
Player bukkitPlayer;
if ((bukkitPlayer = Bukkit.getPlayer(session.getPlayerEntity().getUsername())) == null) {
Player player = Bukkit.getPlayer(session.getPlayerEntity().getUsername());
if (player == null) {
return;
}
World world = bukkitPlayer.getWorld();
World world = player.getWorld();
// Get block entity storage
BlockStorage storage = Via.getManager().getConnection(bukkitPlayer.getUniqueId()).get(BlockStorage.class);
BlockStorage storage = Via.getManager().getConnection(player.getUniqueId()).get(BlockStorage.class);
for (int blockY = 0; blockY < 16; blockY++) { // Cache-friendly iteration order
for (int blockZ = 0; blockZ < 16; blockZ++) {
for (int blockX = 0; blockX < 16; blockX++) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,29 +26,26 @@
package org.geysermc.platform.spigot.world.manager;

import org.bukkit.Bukkit;
import org.bukkit.World;
import org.bukkit.entity.Player;
import org.geysermc.adapters.GeyserAdapters;
import org.geysermc.adapters.WorldAdapter;
import org.geysermc.adapters.spigot.SpigotAdapters;
import org.geysermc.adapters.spigot.SpigotWorldAdapter;
import org.geysermc.connector.network.session.GeyserSession;
import org.geysermc.connector.network.translators.world.block.BlockTranslator;

public class GeyserSpigotNativeWorldManager extends GeyserSpigotWorldManager {

protected final WorldAdapter adapter;
protected final SpigotWorldAdapter adapter;

public GeyserSpigotNativeWorldManager(boolean use3dBiomes) {
super(use3dBiomes);
adapter = GeyserAdapters.getWorldAdapter();
adapter = SpigotAdapters.getWorldAdapter();
}

@Override
public int getBlockAt(GeyserSession session, int x, int y, int z) {
Player bukkitPlayer;
if ((bukkitPlayer = Bukkit.getPlayer(session.getPlayerEntity().getUsername())) == null) {
Player player = Bukkit.getPlayer(session.getPlayerEntity().getUsername());
if (player == null) {
return BlockTranslator.JAVA_AIR_ID;
}
World world = bukkitPlayer.getWorld();
return adapter.getBlockAt(world.getName(), x, y, z);
return adapter.getBlockAt(player.getWorld(), x, y, z);
}
}

0 comments on commit 1ba0915

Please sign in to comment.