BauKlotzHeim Banner

BKH QUELLCODES

Eigene Skripte und Open-Source-Quellcodes für BauKlotzHeim zum Nachlesen und Kopieren.

1. Navigator.sk
# ==========================================
# BKH NAVIGATOR - VERSION MIT LANDS
# ==========================================

options:
    prefix: &b&lBKH &8| &7
    item: &b&lNavigation

# --- Item Vergabe ---
command /getnav []:
    permission: admin.navigation
    trigger:
        set {_p} to player
        if arg-1 is set:
            set {_p} to arg-1
        give 1 of beacon named "{@item}" with lore "&7Rechtsklick zum Oeffnen" to {_p}
        send "{@prefix}&aNavigator an %{_p}% gegeben."

# --- Events ---
on right click:
    if name of player's held item is "{@item}":
        cancel event
        openMainGui(player)

on place of beacon:
    if name of player's held item is "{@item}":
        cancel event
        openMainGui(player)

# --- Hauptmenü (Kompass mittig + Abstand) ---
function openMainGui(p: player):
    set {_gui} to a new chest inventory with 5 rows named "&8» &b&lBKH &8| &7Hauptmenü"
    loop 45 times:
        set slot (loop-number - 1) of {_gui} to gray stained glass pane named " "
    
    # Oben
    set slot 4 of {_gui} to chest named "&e&lShopfinder"
    
    # Mittlere Reihe (mit Abstand)
    set slot 20 of {_gui} to enchanted book named "&5&lSkills"
    set slot 22 of {_gui} to compass named "&b&lWelten & Reisen"
    set slot 24 of {_gui} to paper named "&d&lLand-Verwaltung"
    
    # Unten
    set slot 40 of {_gui} to nether star named "&a&lExtras & Tools"
    
    open {_gui} to {_p}

# --- Untermenü Extras ---
function openExtraGui(p: player):
    set {_gui} to a new chest inventory with 3 rows named "&8» &b&lBKH &8| &7Extras"
    loop 27 times:
        set slot (loop-number - 1) of {_gui} to gray stained glass pane named " "
    
    # Erste Reihe: Tools
    set slot 10 of {_gui} to glowstone dust named "&eFullbright"
    set slot 11 of {_gui} to feather named "&bFly"
    set slot 12 of {_gui} to crafting table named "&7Werkbank"
    
    # Zweite Reihe: Links & Community
    set slot 14 of {_gui} to light blue dye named "&bDiscord" with lore "&7Klicke für den Einladungs-Link."
    set slot 15 of {_gui} to book named "&eHomepage" with lore "&7Besuche unsere Webseite."
    set slot 16 of {_gui} to gold nugget named "&6Voten (Serverlisten)" with lore "&7Unterstütze uns auf Craftlist & Serverlist."
    
    set slot 22 of {_gui} to barrier named "&cZurück zum Hauptmenü"
    open {_gui} to {_p}

# --- Untermenü Welten ---
function openWorldGui(p: player):
    set {_gui} to a new chest inventory with 3 rows named "&8» &b&lBKH &8| &7Welten"
    loop 27 times:
        set slot (loop-number - 1) of {_gui} to gray stained glass pane named " "
    
    set slot 10 of {_gui} to nether star named "&e&lLobby"
    set slot 12 of {_gui} to oak sapling named "&eFarmwelt"
    set slot 14 of {_gui} to grass block named "&aBauwelt"
    set slot 16 of {_gui} to gold ingot named "&6&lShop"
    
    set slot 22 of {_gui} to barrier named "&cZurück zum Hauptmenü"
    open {_gui} to {_p}

# --- Zentrale Klick-Logik ---
on inventory click:
    if name of event-inventory contains "BKH":
        cancel event
 
        if event-item is air:
            stop
            
        # Hauptmenü
        if name of event-inventory contains "Hauptmenü":
            if index of event-slot is 4:
                make player execute command "/shops"
            else if index of event-slot is 20:
                make player execute command "/skills"
            else if index of event-slot is 22:
                openWorldGui(player)
            else if index of event-slot is 24:
                close player's inventory
                make player execute command "/lands"
            else if index of event-slot is 40:
                openExtraGui(player)

        # Klicks in EXTRAS
        else if name of event-inventory contains "Extras":
            if index of event-slot is 10:
                make player execute command "/fullbright"
            else if index of event-slot is 11:
                make player execute command "/fly"
            else if index of event-slot is 12:
                make player execute command "/wb"
            else if index of event-slot is 14:
                send "{@prefix}Discord: &nhttps://discord.gg/r3pZH6dSBV"
                close player's inventory
            else if index of event-slot is 15:
                send "{@prefix}Homepage: &nhttps://bkh.neocities.org"
                close player's inventory
            else if index of event-slot is 16:
                send "{@prefix}Voten auf &6Craftlist&7: &nhttps://craftlist.org/bkh"
                send "{@prefix}Voten auf &6Serverlist&7: &nhttps://www.minecraft-serverlist.net/vote/58361"
                close player's inventory
            else if index of event-slot is 22:
                openMainGui(player)

        # Klicks in WELTEN
        else if name of event-inventory contains "Welten":
            if index of event-slot is 10:
                make player execute command "/warp lobby"
            else if index of event-slot is 12:
                make player execute command "/warp farmwelt"
            else if index of event-slot is 14:
                make player execute command "/warp bauwelt"
            else if index of event-slot is 16:
                make player execute command "/warp shop"
            else if index of event-slot is 22:
                openMainGui(player)
2. MobileCrafting.sk
# --- MOBILE CRAFTING FÜR BKH ---

command /mobilecrafting:
    aliases: /mc, /mcraft
    trigger:
        # Prüfung: Hat der Spieler den Rang Siedler oder höher?
        if player has permission "bkh.mobilecraft":
            # Öffnet die virtuelle Werkbank
            open crafting table to player
            send "&b&lBKH &8» &7Du hast deine &emobile Werkbank &7geöffnet." to player
        else:
            send "&c&lSTOP &8| &7Dies ist erst ab dem Rang &eSiedler &7verfügbar!" to player
            send "&7Schau im &6/rankshop &7vorbei." to player

# --- INTEGRATION IN DEIN CLAIM-SYSTEM ---
# Dieses Event verhindert, dass Mobile-Crafting in fremden Claims 
# Probleme macht, da es rein virtuell ist.
on inventory close:
    if name of current inventory of player is "Crafting":
        # Hier könnte man einen Sound abspielen beim Schließen
        play sound "block.chest.close" with volume 0.5 to player
3. Reward.sk
# ==========================================
# Projekt: BauKlotzHeim (BKH)
# Feature: Einmalige Willkommens-Belohnung (Nur Geld)
# ==========================================

options:
    betrag: 2000
    prefix: &8[&bBauKlotzHeim&8] &r

# Befehl komplett klein schreiben, damit Minecraft die Basis-Registrierung schluckt
command /bauklotzheim:
    # Hier fügen wir alle Varianten als Alias hinzu. Dadurch ist die Schreibweise ingame egal!
    aliases: /bkh, /BauKlotzHeim, /Bkh
    description: Holt deine einmalige Belohnung von {@betrag}€ ab.
    trigger:
        # Prüfen, ob der Spieler die Belohnung bereits abgeholt hat
        if {bkh::belohnung::abgeholt::%uuid of player%} is set:
            send "{@prefix}&cDu hast deine einmalige Belohnung bereits abgeholt!" to player
            stop
            
        # Geldbetrag auszahlen (Nutzt das EssentialsX / Vault Economy System)
        execute console command "eco give %player% {@betrag}"
        
        # Variable auf 'true' setzen (UUID-gesichert gegen Namensänderungen)
        set {bkh::belohnung::abgeholt::%uuid of player%} to true
        
        # Bestätigung an den Spieler senden
        send "{@prefix}&aVielen Dank, dass du auf &bBauKlotzHeim &agespielt hast!" to player
        send "{@prefix}&2Dir wurden &e{@betrag}€ &2erfolgreich gutgeschrieben." to player
        
        # Sound-Effekt für den Spieler
        play sound "entity.player.levelup" with volume 0.5 and pitch 1.0 to player
4. FarmweltCords.sk
# ==========================================
# KOORDINATEN- & BIOM-SKRIPT (KORRIGIERT)
# ==========================================

# --- WELTEN-CHECK ---
function isFarmWorld(p: player) :: boolean:
    set {_w} to world of {_p}
    if {_w} is "world" or "world_nether" or "world_the_end" or "Farmwelt":
        return true
    return false

# --- HUD ANZEIGE ---
every 10 ticks:
    loop all players:
        if isFarmWorld(loop-player) is true:
            set {_x} to floor(x-coordinate of loop-player)
            set {_y} to floor(y-coordinate of loop-player)
            set {_z} to floor(z-coordinate of loop-player)
            set {_biom} to biome at loop-player
            send action bar "&fX: %{_x}% Y: %{_y}% Z: %{_z}% &8| &aBiom: &7%{_biom}%" to loop-player

# --- INTERAKTIONS-BEFEHL ---
command /coords:
    description: Zeigt klickbare Koordinaten-Optionen
    aliases: koordinaten, positionsinfo
    trigger:
        if isFarmWorld(player) is true:
            set {_x} to floor(x-coordinate of player)
            set {_y} to floor(y-coordinate of player)
            set {_z} to floor(z-coordinate of player)
            set {_w} to world of player
            
            send "" to player
            send "&8&m      &r &6&lStandort-Optionen &8&m      " to player
            send "&7Welt: &f%{_w}% &8| &7Biom: &f%biome at player%" to player
            send "" to player
            
            # Klick-Optionen
            send "&b[➜ Im Chat teilen]" to player
            send "" to player
            send "&e[🏠 Home setzen]" to player
            
            send "" to pla