generated from Nekojimi/ForgeModTemplate
65 lines
2.7 KiB
Java
65 lines
2.7 KiB
Java
|
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);
|
||
|
}
|
||
|
}
|