Unicopia/src/main/java/com/minelittlepony/unicopia/InteractionManager.java

138 lines
3.7 KiB
Java
Raw Normal View History

package com.minelittlepony.unicopia;
2020-01-27 11:05:22 +01:00
import java.util.Map;
2024-04-12 02:23:43 +02:00
import java.util.Optional;
2024-01-23 00:28:03 +01:00
import java.util.UUID;
2022-10-07 16:52:35 +02:00
2021-08-04 15:38:03 +02:00
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
2020-01-27 11:05:22 +01:00
2024-04-12 02:23:43 +02:00
import com.minelittlepony.unicopia.entity.player.Pony;
import com.minelittlepony.unicopia.entity.player.dummy.DummyPlayerEntity;
2024-01-23 00:28:03 +01:00
import com.minelittlepony.unicopia.particle.ParticleSpawner;
2020-01-27 11:05:22 +01:00
import com.mojang.authlib.GameProfile;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.network.PacketByteBuf;
import net.minecraft.util.Identifier;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Direction;
2021-08-18 17:30:59 +02:00
import net.minecraft.world.World;
2020-01-27 11:05:22 +01:00
public class InteractionManager {
2021-08-13 14:46:54 +02:00
public static final int SOUND_EARS_RINGING = 0;
public static final int SOUND_CHANGELING_BUZZ = 1;
public static final int SOUND_BEE = 2;
public static final int SOUND_MINECART = 3;
public static final int SOUND_GLIDING = 4;
2022-01-11 19:42:50 +01:00
public static final int SOUND_MAGIC_BEAM = 5;
public static final int SOUND_HEART_BEAT = 6;
2023-10-09 23:05:41 +02:00
public static final int SOUND_KIRIN_RAGE = 7;
2021-08-13 14:46:54 +02:00
2021-12-31 23:00:18 +01:00
public static final int SCREEN_DISPELL_ABILITY = 0;
2024-04-12 02:23:43 +02:00
private static InteractionManager INSTANCE = new InteractionManager();
2020-01-27 11:05:22 +01:00
@Nullable
private SyncedConfig config;
2024-04-26 17:40:43 +02:00
private EquineContext equineContext = EquineContext.ABSENT;
2024-04-12 02:23:43 +02:00
public static InteractionManager getInstance() {
2020-04-24 15:23:36 +02:00
return INSTANCE;
2020-01-27 11:05:22 +01:00
}
2024-04-12 02:23:43 +02:00
public InteractionManager() {
INSTANCE = this;
}
2024-01-23 00:28:03 +01:00
public ParticleSpawner createBoundParticle(UUID id) {
return ParticleSpawner.EMPTY;
}
public Map<Identifier, ?> readChapters(PacketByteBuf buf) {
throw new RuntimeException("Method not supported");
2021-08-13 14:46:54 +02:00
}
/**
* Plays a custom sound instance
*/
2022-06-25 00:19:55 +02:00
public void playLoopingSound(Entity source, int type, long seed) {
2021-08-13 14:46:54 +02:00
}
/**
* Returns true on the client if the passed in player entity is the client's player.
* Always returns false on the server.
*/
2020-01-27 11:05:22 +01:00
public boolean isClientPlayer(@Nullable PlayerEntity player) {
return false;
}
/**
* The player's camera mode. Always 0 on the server.
*/
2020-01-27 11:05:22 +01:00
public int getViewMode() {
return 0;
}
2021-12-31 23:00:18 +01:00
public void openScreen(int type) {
}
2020-01-27 11:05:22 +01:00
/**
* Side-independent method to create a new player.
*
* Returns an implementation of PlayerEntity appropriate to the side being called on.
*/
2021-08-04 15:38:03 +02:00
@NotNull
public final PlayerEntity createPlayer(Entity observer, GameProfile profile) {
2023-06-03 13:40:54 +02:00
return createPlayer(observer.getWorld(), profile);
2021-08-18 17:30:59 +02:00
}
/**
* Side-independent method to create a new player.
*
* Returns an implementation of PlayerEntity appropriate to the side being called on.
*/
@NotNull
public PlayerEntity createPlayer(World world, GameProfile profile) {
return new DummyPlayerEntity(world, profile);
2020-01-27 11:05:22 +01:00
}
public void sendPlayerLookAngles(PlayerEntity player) {
}
public void addBlockBreakingParticles(BlockPos pos, Direction direction) {
}
2024-04-12 02:23:43 +02:00
2024-04-26 17:40:43 +02:00
public void setEquineContext(EquineContext context) {
equineContext = context;
}
public EquineContext getEquineContext() {
return getClientPony().map(EquineContext.class::cast).orElse(equineContext);
}
2024-04-12 02:23:43 +02:00
public Optional<Pony> getClientPony() {
return Optional.empty();
}
public final Race getClientSpecies() {
return getClientPony().map(Pony::getSpecies).orElse(Race.HUMAN);
}
public void setSyncedConfig(SyncedConfig config) {
this.config = config;
}
public SyncedConfig getSyncedConfig() {
if (config == null) {
config = Unicopia.getConfig().toSynced();
}
return config;
}
2020-01-27 11:05:22 +01:00
}