Pegar uma variavel sem criar uma

Vamos supor a classe “Teste” Código:

public class Teste {

String a;

public void setA(String a){
this.a = a;
}

public String getA(){
return this.a;
}

}

O q eu quero fazer é pegar uma “variavel” (eu n sei se isso pode ser uma variavel, mas…) através da classe Teste. Exemplo: Código:

Teste t = Teste.getTeste("a");
System.out.println("a = " + t.getA());

Você quer pegar a variavel da ‘a’ da classe Teste e mostrar no console no claasse main?

se sim, seria algo como:

Teste t = new Teste();

System.out.print("a = "+ t.getA());

Não.
Queria um Teste t = Teste.getTeste("qualquer dado sla");

Não, você primeiro tem que setar algo pra a variável a, usando o
setA("alguma string");

E depois pegar o que foi setado usando o:
getA();

Em uma api q uso para fazer plugins para Minecraft, existe isso: Player p = Bukkit.getPlayer("Nome"); isso evita de eu ter q dar um new Player(), eu queria fazer isso também
Teste t = Teste.getTeste("Teste");

Na verdade, pelo que vi, o método Bukkit#getPlayer não serve pra criar um novo Player, ele serve pra pegar um player já existente pelo nome.

Teriámos que entender melhor o problema que vc quer resolver, mas ingenuamente falando, uma possível solução seria isso:

class Teste {
    private String nome;

    private Teste(String nome) {
        this.nome = nome;
    }

    public String getNome() {
        return this.nome;
    }

    public static Teste getTeste(String nome) {
        return new Teste(nome);
    }
}


public class Main {
    public static void main(String[] args) {
        Teste t = Teste.getTeste("Testando");
        System.out.println(t.getNome());
    }
}

Mas é uma coisa meio boba fazer isso.

Pode ser interessante pra vc olhar esse padrão de projeto também:

https://www.devmedia.com.br/padrao-de-projeto-factory-method-em-java/26348

Então, minha classe tem String name, double power e double maxPower e eu não queria dar um new pq vou estar deixando de lado o power e maxPower e não quero usar um return new Teste(name, power, maxPower);, como vc ja disse, o Bukkit.getPlayer() pega um player já existente e eu queria fazer exatamente isso, retornar name, power e maxPower tomando como base name

E se vc fizesse assim:

class Teste {
  String name;
  double power = 0;
  double maxPower = 0;

  Teste(String name) { /* ... */ }

  Teste(String name, double power, double maxPower) { /* ... */ }
}

A idéia é vc poder chamar tanto passando apenas o nome (e nesse caso os poderes ficam em 0 por padrão) quanto vc poder passar o poder que quiser. O que acha?

é o q eu disse, queria pegar tudo e não apenas name e deixar tudo em zero, quero tipo: “WizardlyBump17”, 3, 10 pegando apenas name e retornando tudo

E os player já existentes estão armazenados onde?

Em um arquivo .dat

Seguindo a ideia desse exemplo que tu postou e considerando que as informações de seus Player estejam salvos nesse arquivo .dat que você citou.

Você pode criar um método estático getTeste na sua classe Teste, esse método lê o seu arquivo, e instancia o objeto do tipo Teste que atende ao critério da sua consulta.
Mas não tem churumelas, para criar um objeto, em algum momento você vai instanciar uma classe utilizando a instrução new.
A única diferença é que nesse caso é o próprio método getTeste que fará isso.