44 lines
1.7 KiB
Java
44 lines
1.7 KiB
Java
package party._2a03.mc.mixin;
|
|
|
|
import com.mojang.authlib.properties.PropertyMap;
|
|
import net.minecraft.entity.player.PlayerAbilities;
|
|
import net.minecraft.server.PlayerManager;
|
|
import net.minecraft.network.ClientConnection;
|
|
import net.minecraft.server.network.ServerPlayerEntity;
|
|
import net.minecraft.world.GameMode;
|
|
import org.spongepowered.asm.mixin.injection.At;
|
|
import org.spongepowered.asm.mixin.injection.Inject;
|
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|
import org.spongepowered.asm.mixin.Mixin;
|
|
import org.spongepowered.asm.mixin.Shadow;
|
|
import party._2a03.mc.util.Config;
|
|
import party._2a03.mc.util.Database;
|
|
import party._2a03.mc.util.PlayerData;
|
|
|
|
@Mixin(PlayerManager.class)
|
|
public abstract class MixinPlayerManager {
|
|
@Inject(method = "onPlayerConnect", at = @At(value = "HEAD"))
|
|
void onConnect(ClientConnection connection, ServerPlayerEntity player, CallbackInfo ci) {
|
|
PlayerData playerdata = Database.getPlayer(player.getGameProfile().getId());
|
|
PropertyMap map = player.getGameProfile().getProperties();
|
|
map.removeAll("textures");
|
|
map.put("textures", playerdata.getTextures());
|
|
}
|
|
|
|
@Inject(method = "onPlayerConnect", at = @At(value = "INVOKE",
|
|
target = "Lnet/minecraft/server/network/ServerPlayerEntity;getAbilities()Lnet/minecraft/entity/player/PlayerAbilities;"))
|
|
public void persistFlight(ClientConnection connection, ServerPlayerEntity player, CallbackInfo ci) {
|
|
if (!Config.getBool("persistentFlight"))
|
|
return;
|
|
if (player.isOnGround())
|
|
return;
|
|
GameMode gameMode = player.interactionManager.getGameMode();
|
|
if (gameMode == GameMode.CREATIVE || gameMode == GameMode.SPECTATOR)
|
|
return;
|
|
PlayerAbilities abilities = player.getAbilities();
|
|
abilities.allowFlying = true;
|
|
abilities.flying = true;
|
|
}
|
|
}
|
|
|