1
0
Fork 0
minecraft-tweaks-2a03/src/main/java/party/_2a03/mc/mixin/MixinPlayerManager.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;
}
}