Skip to content

Commit

Permalink
feat: Add removeWaystoneFromDatabase, getAllWaystones, getWaystonesBy…
Browse files Browse the repository at this point in the history
…Type to API, add a less confusing getWaystone method, add getWaystoneAt that accepts a BlockGetter
  • Loading branch information
BlayTheNinth committed Feb 19, 2025
1 parent 3a85f14 commit 6656180
Show file tree
Hide file tree
Showing 5 changed files with 54 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import net.blay09.mods.waystones.requirement.RequirementRegistry;
import net.blay09.mods.waystones.item.ModItems;
import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
Expand All @@ -34,6 +35,7 @@
import java.util.Optional;
import java.util.UUID;
import java.util.function.Consumer;
import java.util.stream.Stream;

public class InternalMethodsImpl implements InternalMethods {

Expand Down Expand Up @@ -237,4 +239,20 @@ public void deactivateWaystone(ServerPlayer player, Waystone waystone) {
PlayerWaystoneManager.deactivateWaystone(player, waystone);
WaystoneSyncManager.sendActivatedWaystones(player);
}

@Override
public Stream<Waystone> getAllWaystones(MinecraftServer server) {
return WaystoneManagerImpl.get(server).getWaystones();
}

@Override
public Stream<Waystone> getWaystonesByType(MinecraftServer server, ResourceLocation type) {
return WaystoneManagerImpl.get(server).getWaystonesByType(type);
}

@Override
public void removeWaystoneFromDatabase(MinecraftServer server, Waystone waystone) {
WaystoneManagerImpl.get(server).removeWaystone(waystone);
PlayerWaystoneManager.removeKnownWaystone(server, waystone);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
import net.blay09.mods.waystones.api.error.WaystoneTeleportError;
import net.minecraft.core.BlockPos;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
Expand All @@ -19,6 +20,7 @@
import java.util.Optional;
import java.util.UUID;
import java.util.function.Consumer;
import java.util.stream.Stream;

public interface InternalMethods {

Expand Down Expand Up @@ -72,9 +74,15 @@ public interface InternalMethods {

Collection<Waystone> getActivatedWaystones(Player player);

Optional<Waystone> getNearestWaystone(Player player);

void activateWaystone(ServerPlayer player, Waystone waystone);

void deactivateWaystone(ServerPlayer player, Waystone waystone);

Optional<Waystone> getNearestWaystone(Player player);

Stream<Waystone> getAllWaystones(MinecraftServer server);

Stream<Waystone> getWaystonesByType(MinecraftServer server, ResourceLocation type);

void removeWaystoneFromDatabase(MinecraftServer server, Waystone waystone);
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
import net.blay09.mods.waystones.api.requirement.*;
import net.blay09.mods.waystones.api.error.WaystoneTeleportError;
import net.minecraft.core.BlockPos;
import net.minecraft.resources.ResourceLocation;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
Expand All @@ -20,6 +21,7 @@
import java.util.Optional;
import java.util.UUID;
import java.util.function.Consumer;
import java.util.stream.Stream;

public class WaystonesAPI {

Expand Down Expand Up @@ -74,6 +76,24 @@ public static boolean isWaystoneActivated(Player player, Waystone waystone) {
return __internalMethods.isWaystoneActivated(player, waystone);
}

/**
* Returns a stream of all waystones in the database. This includes regular waystones, sharestones and others.
*/
public static Stream<Waystone> getAllWaystones(MinecraftServer server) {
return __internalMethods.getAllWaystones(server);
}

public static Stream<Waystone> getWaystonesByType(MinecraftServer server, ResourceLocation type) {
return __internalMethods.getWaystonesByType(server, type);
}

/**
* Removes a waystone from the database. This does not destroy the block, it only removes the data stored for the waystone.
*/
public static void removeWaystoneFromDatabase(MinecraftServer server, Waystone waystone) {
__internalMethods.removeWaystoneFromDatabase(server, waystone);
}

public static Collection<Waystone> getActivatedWaystones(Player player) {
return __internalMethods.getActivatedWaystones(player);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,9 @@

import java.util.Collections;
import java.util.Optional;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class SharestoneBlockEntity extends WaystoneBlockEntityBase {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,9 @@
import java.util.Collection;
import java.util.Set;
import java.util.function.Consumer;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;

public class WaystoneSelectionMenu extends AbstractContainerMenu {

Expand Down

0 comments on commit 6656180

Please sign in to comment.