Hey,

ich bin mir nicht ganz sicher, aber man kann eine Welt im onLoad Event löschen. Ich habe es in einem meiner Plugins mal so gelöst gehabt.

    @Override
    public void onLoad() {
        if (getConfig().getBoolean("reset")) {
            File world = new File(Bukkit.getWorldContainer(), "world");
            utils.deleteWorld(world);

            getConfig().set("reset_now", false);
            saveConfig();
        }
    }

Ich schreibe bevor ich den Server neu starte füge ich ein reset: true in die Config und dann wird die Welt im onLoad Event gelöscht. Der Server läd nämlich keine Welten mit anderen Namen es sei denn diese wird von einem Plugin angefordert. So kann man auch neustarten und nicht resetten wenn man kein reset: true in die Config einträgt. Allerdings muss in der plugin.yml das hier stehen:

load: STARTUP

So wird das Plugin vor den Welten geladen und man kann die Welt löschen / austauschen.
Ich hoffe das hilft dir irgendwie...

LG
Jonas

...zur Antwort

Hey,

leider muss ich dir aufgrund dessen, dass du reines Spigot nutzt sagen, dass es nicht möglich sein wird in einem Plugin Einen Mod block zu nutzen, da der Server den Block ja gar nicht kennt (Spigot hat keinen Mod Support).

LG

...zur Antwort

Hey,

also den Schaden kann man ganz einfach über das EntityDamageByEntityEvent in der Spigot-API ändern :

@EventHandler
public void onDamageByEndCrystal(EntityDamageByEntityEvent event) {
  if(event.getDamager() != null && event.getDamager().getType() == EntityType.ENDER_CRYSTAL) {
    event.setDamage(DEIN_DAMAGE)
  }
}

LG

...zur Antwort

Hey,

ein solches Plugin mag es geben, aber es hängt zum Beispiel davon ab welches Permission-System man nutzt ob und wie die Sache mit dem Vergeben des Discord Ranges auf Basis des Ingame-Ranges so funktioniert. Ich persönlich kenne kein solches Plugin, kann dir, da ich selbst Plugins programmieren kann, jedoch anbieten, dass wir uns mal zusammensetzten und du mir nochmal genau schilderst was deine Umstände sind. Wenn du das möchtest dann schick mit auf Discord unter dem Namen @quark_baellchen eine FA und ich werde mir das ganze man anschauen.

LG
Quarxy

...zur Antwort

Naja es ist schon möglich du kannst über scorrboards abgreifen wie oft mit einem Item geklickt wurde und dann den Spieler halt porten mit der Blickrichtung aber du brauchst da mehr als einen Command... Müsste mit Funktionen aber gehen

Lg

...zur Antwort

Hey,

schau dir mal Regionsprioritäten und Inheritance von Regionen an:
https://worldguard.enginehub.org/en/latest/regions/priorities/

LG

...zur Antwort

Hey,

ja es bedeutet, dass der Studiengang zulassungsbeschränkt ist. Aber nur örtlich beschränkt, d. h nur an deiner Uni oder den Unis in deinem Umkreis. Wenn du aber an eine andere Uni gehst de weiter weg ist könnte es sein, dass er dort nicht beschränkt ist. (Deshalb örtlich zulassungsbeschränkt )

Liebe Grüße

...zur Antwort

Also du könntest die folgende Methode im BlockBreakEvent aufrufen und dann die Blöcke an den Koordinaten mit Block#breakNaturally zerstören, nachdem du gecheckt hast, dass es die gewünschte Picke war:

public Collection<Location> getBlastBlocks(Location brokenBlock, BlockFace brokenFromFace) {
	List<Location> locations = new ArrayList<>();
    if(!face.isCartesian()) {
		return locations;
    }
    switch (face) {
		case UP, DOWN -> {
			locations.add(origin.clone().add(1, 0, 0));
			locations.add(origin.clone().add(-1, 0, 0));
			locations.add(origin.clone().add(0, 0, 1));
			locations.add(origin.clone().add(0, 0, -1));
			locations.add(origin.clone().add(1, 0, 1));
			locations.add(origin.clone().add(-1, 0, 1));
			locations.add(origin.clone().add(1, 0, -1));
			locations.add(origin.clone().add(-1, 0, -1));
		}
		case NORTH, SOUTH -> {
			locations.add(origin.clone().add(1, 0, 0));
			locations.add(origin.clone().add(-1, 0, 0));
			locations.add(origin.clone().add(0, 1, 0));
			locations.add(origin.clone().add(0, -1, 0));
			locations.add(origin.clone().add(1, 1, 0));
			locations.add(origin.clone().add(1, -1, 0));
			locations.add(origin.clone().add(-1, 1, 0));
			locations.add(origin.clone().add(-1, -1, 0));
		}
		case EAST, WEST -> {
			locations.add(origin.clone().add(0, 0, 1));
			locations.add(origin.clone().add(0, 0, -1));
			locations.add(origin.clone().add(0, 1, 0));
			locations.add(origin.clone().add(0, -1, 0));
			locations.add(origin.clone().add(0, 1, 1));
			locations.add(origin.clone().add(0, -1, 1));
			locations.add(origin.clone().add(0, 1, -1));
			locations.add(origin.clone().add(0, -1, -1));
		}
    }
}

Dabei wird je nach Seite des Blocks, von der er zerstört wird (PlayerInteractEvent#getBlockFace()) eben 3x3 zerstört, d. h. die 8 Blöcke rundum den Block der eigentlich abgebaut wurde.

Liebe Grüße

...zur Antwort

Hey,

erstmal musst du den Command erstellen und funktionstüchtig bekommen. Dann kannst du bei erfolgreichem Setzten des Spawns folgendes machen:

DeinePluginMainClass instance = DeinePluginMainClass.getPlugin(DeinePluginMainClass.class);
instance.getConfig().set("spawn.world", spawnLocation.getWorld().getName());
instance.getConfig().set("spawn.x", spawnLocation.getX());
instance.getConfig().set("spawn.y", spawnLocation.getY());
instance.getConfig().set("spawn.z", spawnLocation.getZ());
instance.saveConfig();

Und beim Teleportieren zum Spawn folgendes:

DeinePluginMainClass instance = DeinePluginMainClass.getPlugin(DeinePluginMainClass.class);
player.teleport(new Location(
 Bukkit.getWorld(instance.getConfig().getString("spawn.world")),
 instance.getConfig().getDouble("spawn.x"),
 instance.getConfig().getConfig("spawn.y"),
 instance.getConfig().getConfig("spawn.z")
);
...zur Antwort

Hey, leider ist es nicht möglich BaseComponents (Superklasse von KeyComponent, TextComponent etc.) in Itemnamen zu schreiben. Diese sind nur im Chat, Actionbar und so nutzbar.
Tut mir leid, das einzige was du machen kannst ist standartmäßig immer Linkklick zu schreiben aber das was du möchtest ist nicht möglich ohne eine Clientseite Modifikation

...zur Antwort

Hey, das ist ganz einfach:
Du musst die ChatColor Klasse aus der Bungee API nutzen. Dort gibt es eine Methode #of(String s) auf Basis eines Hexadezimal Farbcodes oder der Java-eigenen Farbklasse, die du auf Basis von den einzelnen RGB Anteilen erzeugen kannst. Das ganze könnte so aussehen:

1| ChatColor rgbColor = ChatColor.of("#ff0000");
2| player.sendMessage(rgbColor + textToSendInColor)
3| player.spigot().sendMessage(ChatMessageType.ACTION_BAR, 
      new TextComponent(rgbColor + textToSendInColor))

Dabei wird in Zeile 1 das Farbobjekt mit der Farbe Rot (RGB: 255, 0, 0) erzeugt und in Zeile 2 direkt in den Chat versandt und in Zeile 3 in die Action Bar.
Du kannst natürlich den Text den du senden willst auch in chars aufsplitten und dann einen Farbverlauf berechnen, jeweils ein Farbobjekt erzeugen und jedem char eine andere Farbe geben. SO würdest du einen Farbverlauf über den Text erzeugen.

Ich hoffe dir hilft das :)

...zur Antwort

Soo dafür musst du erstmal ableiten:

 Dann setzt du die Ableitung gleich der lokalen Änderungsrate für die du den x-Wert möchtest (hier: 600)

 

...zur Antwort

Wie viele Pantoffeltierchen werden denn bei Teilung aus einem? 2 oder mehr?

...zur Antwort