Add get world and registries
This commit is contained in:
parent
03e762cd45
commit
eebcb0467e
@ -182,7 +182,9 @@ public class NativePatchBukkit {
|
|||||||
long registerEventAddr,
|
long registerEventAddr,
|
||||||
long getAbilitiesAddr,
|
long getAbilitiesAddr,
|
||||||
long setAbilitiesAddr,
|
long setAbilitiesAddr,
|
||||||
long getLocationAddr
|
long getLocationAddr,
|
||||||
|
long freeStringAddr,
|
||||||
|
long getWorldAddr
|
||||||
) {
|
) {
|
||||||
// void rust_send_message(const char* uuid, const char* message)
|
// void rust_send_message(const char* uuid, const char* message)
|
||||||
sendMessageNative = LINKER.downcallHandle(
|
sendMessageNative = LINKER.downcallHandle(
|
||||||
|
|||||||
@ -38,6 +38,7 @@ import org.bukkit.util.Vector;
|
|||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.patchbukkit.bridge.NativePatchBukkit;
|
import org.patchbukkit.bridge.NativePatchBukkit;
|
||||||
|
import org.patchbukkit.world.PatchBukkitWorld;
|
||||||
|
|
||||||
import io.papermc.paper.datacomponent.DataComponentType;
|
import io.papermc.paper.datacomponent.DataComponentType;
|
||||||
import io.papermc.paper.datacomponent.DataComponentType.Valued;
|
import io.papermc.paper.datacomponent.DataComponentType.Valued;
|
||||||
@ -319,8 +320,11 @@ public class PatchBukkitEntity implements Entity {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public @NotNull World getWorld() {
|
public @NotNull World getWorld() {
|
||||||
// TODO Auto-generated method stub
|
var world_uuid_str = NativePatchBukkit.getWorld(this.uuid);
|
||||||
throw new UnsupportedOperationException("Unimplemented method 'getWorld'");
|
UUID world_uuid = UUID.fromString(world_uuid_str);
|
||||||
|
var world = PatchBukkitWorld.getOrCreate(world_uuid);
|
||||||
|
|
||||||
|
return world;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@ -0,0 +1,22 @@
|
|||||||
|
package org.patchbukkit.registry;
|
||||||
|
|
||||||
|
import io.papermc.paper.registry.RegistryAccess;
|
||||||
|
import io.papermc.paper.registry.RegistryKey;
|
||||||
|
import org.bukkit.Keyed;
|
||||||
|
import org.bukkit.Registry;
|
||||||
|
import org.jspecify.annotations.Nullable;
|
||||||
|
|
||||||
|
public class PatchBukkitRegistryAccess implements RegistryAccess {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T extends Keyed> @Nullable Registry<T> getRegistry(Class<T> type) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
throw new UnsupportedOperationException("Unimplemented method 'getRegistry'");
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public <T extends Keyed> Registry<T> getRegistry(RegistryKey<T> registryKey) {
|
||||||
|
// TODO Auto-generated method stub
|
||||||
|
throw new UnsupportedOperationException("Unimplemented method 'getRegistry'");
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -33,6 +33,17 @@ public class PatchBukkitWorld
|
|||||||
extends PatchBukkitRegionAccessor
|
extends PatchBukkitRegionAccessor
|
||||||
implements World
|
implements World
|
||||||
{
|
{
|
||||||
|
private static final Map<UUID, PatchBukkitWorld> instances = new HashMap<>();
|
||||||
|
private UUID uuid;
|
||||||
|
|
||||||
|
private PatchBukkitWorld(UUID uuid) {
|
||||||
|
this.uuid = uuid;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PatchBukkitWorld getOrCreate(UUID uuid) {
|
||||||
|
return instances.computeIfAbsent(uuid, PatchBukkitWorld::new);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean isVoidDamageEnabled() {
|
public boolean isVoidDamageEnabled() {
|
||||||
|
|||||||
@ -0,0 +1 @@
|
|||||||
|
org.patchbukkit.registry.PatchBukkitRegistryAccess
|
||||||
Loading…
Reference in New Issue
Block a user