Dimensionwalker-Mod/src/main/java/moe/nekojimi/dimensionwalker/DimensionwalkerItem.java

65 lines
2.7 KiB
Java
Raw Normal View History

package moe.nekojimi.dimensionwalker;
import com.mojang.logging.LogUtils;
import net.minecraft.client.renderer.item.ItemProperties;
import net.minecraft.core.Registry;
import net.minecraft.server.MinecraftServer;
import net.minecraft.server.commands.TeleportCommand;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.server.level.ServerPlayer;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.CreativeModeTab;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.minecraft.world.level.block.NetherPortalBlock;
import net.minecraftforge.registries.DeferredRegister;
import net.minecraftforge.registries.ForgeRegistries;
import net.minecraftforge.registries.RegistryObject;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
import java.util.List;
import java.util.Collections;
import java.util.Random;
import java.util.logging.Logger;
import java.util.stream.StreamSupport;
public class DimensionwalkerItem extends Item
{
private static DeferredRegister<Level> DIMENSION_REGISTER = DeferredRegister.create(Registry.DIMENSION_REGISTRY, DimensionwalkerMod.MODID);
private static final org.slf4j.Logger LOGGER = LogUtils.getLogger();
public DimensionwalkerItem() {
super(new Item.Properties().tab(CreativeModeTab.TAB_TOOLS));
}
@Override
public @NotNull InteractionResultHolder<ItemStack> use(Level level, @NotNull Player player, @NotNull InteractionHand hand)
{
if (!level.isClientSide())
{
MinecraftServer server = level.getServer();
if (server != null)
{
Iterable<ServerLevel> allLevels = server.getAllLevels();
List<ServerLevel> levels = new java.util.ArrayList<>(StreamSupport.stream(allLevels.spliterator(), false).toList());
levels.remove((ServerLevel) level);
ServerLevel destination = levels.get(new Random().nextInt(levels.size()));
// server.getPlayerList().getPlayer(player.getUUID()).teleportTo(destination, player.getX(), player.getY(), player.getZ(), player.getYRot(), player.getXRot());
ServerPlayer serverPlayer = server.getPlayerList().getPlayer(player.getUUID());
if (serverPlayer != null)
serverPlayer.changeDimension(destination, DimensionwalkerTeleporter.instance());
else
LOGGER.warn("Can't teleport, serverPlayer == null");
}
else
LOGGER.warn("Can't teleport, server == null");
}
return super.use(level, player, hand);
}
}