Anhang C
Materialien

In diesem Kapitel findest du eine Liste aller Materialien in Minecraft und der dazu gehörigen Bezeichner, die du benötigst, um sie in einem Plugin verwenden zu können. Die Liste der Materialien umfasst sowohl alle Blöcke als auch alle Gegenstände. Unter Blöcken versteht man dabei im Gegensatz zu Gegenständen nur solche Dinge, die man auch in der Welt platzieren kann. Ein Schwert oder ein Schneeball gehört also zum Beispiel nicht dazu. Die meisten Materialien existieren sowohl als Gegenstand als auch als Block, wie zum Beispiel Treppen oder Holzblöcke. Bei einigen wenigen Materialien gibt es unterschiedliche Einträge für Gegenstände und Blöcke, so zum Beispiel bei allen Gegenständen, die in der Welt aus zwei Blöcken bestehen, im Inventar aber nur ein Gegenstand sind, wie zum Beispiel Türen und Betten.

Bezeichner

Material

Ackerboden

SOIL

Aktivierungsschiene

ACTIVATOR_RAIL

Amboss

ANVIL

Angel

FISHING_ROD

Antriebsschiene

POWERED_RAIL

Apfel

APPLE

Apfel (Gold)

GOLDEN_APPLE

Axt (Diamant)

DIAMOND_AXE

Axt (Eisen)

IRON_AXE

Axt (Gold)

GOLD_AXE

Axt (Holz)

WOOD_AXE

Axt (Stein)

STONE_AXE

Banner

BANNER

Banner (stehend)

STANDING_BANNER

Banner (Wand)

WALL_BANNER

Barriere

BARRIER

Befehlsblock

COMMAND

Befehlsblock (ketten)

COMMAND_CHAIN

Befehlsblock (wiederholen)

COMMAND_REPEATING

Befehlsblocklore

COMMAND_MINECART

Beinschutz (Diamant)

DIAMOND_LEGGINGS

Beinschutz (Eisen)

IRON_LEGGINGS

Beinschutz (Gold)

GOLD_LEGGINGS

Beinschutz (Ketten)

CHAINMAIL_LEGGINGS

Beinschutz (Leder)

LEATHER_LEGGINGS

Bett

BED

Bettblock

BED_BLOCK

Blätter

LEAVES

Blätter

LEAVES_2

Blume (gelb)

YELLOW_FLOWER

Blumentopf

FLOWER_POT

Blumentopf (Gegenstand)

FLOWER_POT_ITEM

Bogen

BOW

Boot

BOAT

Boot (Akazienholz)

BOAT_ACACIA

Boot (Birkenholz)

BOAT_BIRCH

Boot (Fichtenholz)

BOAT_SPRUCE

Boot (Schwarzeichenholz)

BOAT_DARK_OAK

Boot (Tropenholz)

BOAT_JUNGLE

Braustand

BREWING_STAND

Braustand (Gegenstand)

BREWING_STAND_ITEM

Brot

BREAD

Bruchstein

COBBLESTONE

Bruchstein (bemoost)

MOSSY_COBBLESTONE

Brustpanzer (Diamant)

DIAMOND_CHESTPLATE

Brustpanzer (Eisen)

IRON_CHESTPLATE

Brustpanzer (Gold)

GOLD_CHESTPLATE

Brustpanzer (Ketten)

CHAINMAIL_CHESTPLATE

Brustpanzer (Leder)

LEATHER_CHESTPLATE

Buch

BOOK

Buch (geschrieben)

WRITTEN_BOOK

Buch (verzaubert)

ENCHANTED_BOOK

Buch und Feder

BOOK_AND_QUILL

Bücherregal

BOOKSHELF

Bruchsteinmauer

COBBLE_WALL

Busch

DEAD_BUSH

Chorusblüte

CHORUS_FLOWER

Chorusfrucht

CHORUS_FRUIT

Chorusfrucht (geplatzt)

CHORUS_FRUIT_POPPED

Choruspflanze

CHORUS_PLANT

Diamant

DIAMOND

Diamantblock

DIAMOND_BLOCK

Diamanterz

DIAMOND_ORE

Drachenatem

DRAGONS_BREATH

Drachenei

DRAGON_EGG

Druckplatte (Holz)

WOOD_PLATE

Druckplatte (Stein)

STONE_PLATE

Ei

EGG

Eimer

BUCKET

Eis

ICE

Eis (brüchig)

FROSTED_ICE

Eisenbarren

IRON_INGOT

Eisenblock

IRON_BLOCK

Eisenerz

IRON_ORE

Eisentür

IRON_DOOR

Eisentür (Gegenstand)

IRON_DOOR_BLOCK

Elytren

ELYTRA

Enderauge

EYE_OF_ENDER

Enderperle

ENDER_PEARL

Enderportal

ENDER_PORTAL

Enderportalrahmen

ENDER_PORTAL_FRAME

Enderstein

ENDER_STONE

Endertruhe

ENDER_CHEST

Endkristall

END_CRYSTAL

Endstab

END_ROD

Endstein

END_BRICKS

Endtransitportal

END_GATEWAY

Erde

DIRT

Erfahrungstrank

EXP_BOTTLE

Fackel

TORCH

Faden

STRING

Falltür

TRAP_DOOR

Falltür (Eisen)

IRON_TRAPDOOR

Feder

FEATHER

Feuer

FIRE

Feuerkugel

FIREBALL

Feuerstein

FLINT

Feuerwerk

FIREWORK

Feuerwerksstern

FIREWORK_CHARGE

Feuerzeug

FLINT_AND_STEEL

Fisch (roh)

RAW_FISH

Fleisch (verrottet)

ROTTEN_FLESH

Gebratener Fisch

COOKED_FISH

Gebratener Hase

COOKED_RABBIT

Gebratenes Hammelfleisch

COOKED_MUTTON

Gebratenes Hühnchen

COOKED_CHICKEN

Gebratenes Schweinefleisch

GRILLED_PORK

Gemälde

PAINTING

Ghastträne

GHAST_TEAR

Glas

GLASS

Glas (dünn)

THIN_GLASS

Glas (gefärbt)

STAINED_GLASS

Glasflasche

GLASS_BOTTLE

Glasscheibe (gefärbt)

STAINED_GLASS_PANE

Glowstone

GLOWSTONE

Glowstonestaub

GLOWSTONE_DUST

Goldbarren

GOLD_INGOT

Goldblock

GOLD_BLOCK

Golderz

GOLD_ORE

Goldnugget

GOLD_NUGGET

Gras

GRASS

Gras (lang)

LONG_GRASS

Grundgestein

BEDROCK

Güterlore

STORAGE_MINECART

Hacke (Diamant)

DIAMOND_HOE

Hacke (Eisen)

IRON_HOE

Hacke (Gold)

GOLD_HOE

Hacke (Holz)

WOOD_HOE

Hacke (Stein)

STONE_HOE

Haken

TRIPWIRE_HOOK

Hammelfleisch

MUTTON

Hebel

LEVER

Helm (Diamant)

DIAMOND_HELMET

Helm (Eisen)

IRON_HELMET

Helm (Gold)

GOLD_HELMET

Helm (Ketten)

CHAINMAIL_HELMET

Helm (Leder)

LEATHER_HELMET

Hohes Gras

DOUBLE_PLANT

Holz

LOG

Holz

LOG_2

Holz

WOOD

Holzknopf

WOOD_BUTTON

Hühnchen (roh)

RAW_CHICKEN

Kakao

COCOA

Kaktus

CACTUS

Kaninchen

RABBIT

Kaninchenfell

RABBIT_HIDE

Kaninchenfleisch

RABBIT_FOOT

Kaninchenragout

RABBIT_STEW

Karotte

CARROT

Karotte (Gegenstand)

CARROT_ITEM

Karotte (Gold)

GOLDEN_CARROT

Karottenrute

CARROT_STICK

Karte

MAP

Karte (leer)

EMPTY_MAP

Kartoffel

POTATO

Kartoffel (Gegenstand)

POTATO_ITEM

Kartoffel (giftig)

POISONOUS_POTATO

Keks

COOKIE

Kessel

CAULDRON

Kessel (Gegenstand)

CAULDRON_ITEM

Kies

GRAVEL

Knochen

BONE

Kohle

COAL

Kohleblock

COAL_BLOCK

Kolben (klebrige Platte)

PISTON_STICKY_BASE

Kolben (Platte)

PISTON_BASE

Kompass

COMPASS

Konstruktionsblock

STRUCTURE_BLOCK

Kuchen

CAKE

Kuchenblock

CAKE_BLOCK

Kürbis

PUMPKIN

Kürbiskerne

PUMPKIN_SEEDS

Kürbiskuchen

PUMPKIN_PIE

Kürbislaterne

JACK_O_LANTERN

Kürbisstamm

PUMPKIN_STEM

Lapislazuliblock

LAPIS_BLOCK

Lapislazulierz

LAPIS_ORE

Lava

LAVA

Lava (stehend)

STATIONARY_LAVA

Lavaeimer

LAVA_BUCKET

Leder

LEATHER

Leine

LEASH

Leiter

LADDER

Leuchtfeuer

BEACON

Lohenrute

BLAZE_ROD

Lohenstaub

BLAZE_POWDER

Lore

MINECART

Lore (angetrieben)

POWERED_MINECART

Luft

AIR

Magmacreme

MAGMA_CREAM

Melone

MELON

Melone (Block)

MELON_BLOCK

Melone (glitzernd)

SPECKLED_MELON

Melonenkerne

MELON_SEEDS

Melonenstrunk

MELON_STEM

Milcheimer

MILK_BUCKET

Mob-Spawner

MOB_SPAWNER

Monsterei

MONSTER_EGG

Myzel

MYCEL

Nachtlichtsensor

DAYLIGHT_DETECTOR_INVERTED

Namensschild

NAME_TAG

Netherquarz

QUARTZ_ORE

Netherrack

NETHERRACK

Netherstern

NETHER_STAR

Netherwarze

NETHER_STALK

Netherwarze

NETHER_WARTS

Netherziegel

NETHER_BRICK

Netherziegel (Gegenstand)

NETHER_BRICK_ITEM

Notenblock

NOTE_BLOCK

Obsidian

OBSIDIAN

Ofen

FURNACE

Ofen (brennend)

BURNING_FURNACE

Ofenkartoffel

BAKED_POTATO

Packeis

PACKED_ICE

Papier

PAPER

Pfeil

ARROW

Pfeil (getränkt)

TIPPED_ARROW

Pferderüstung (Diamant)

DIAMOND_BARDING

Pferderüstung (Eisen)

IRON_BARDING

Pferderüstung (Gold)

GOLD_BARDING

Pilz (braun)

BROWN_MUSHROOM

Pilz (groß)

HUGE_MUSHROOM_1

Pilz (groß)

HUGE_MUSHROOM_2

Pilz (rot)

RED_MUSHROOM

Pilzsuppe

MUSHROOM_SOUP

Plattenspieler

JUKEBOX

Portal

PORTAL

Prismarin

PRISMARINE

Prismarinkristall

PRISMARINE_CRYSTALS

Prismarinscherbe

PRISMARINE_SHARD

Purpurblock

PURPUR_BLOCK

Purpursäule

PURPUR_PILLAR

Quarz

QUARTZ

Quarzblock

QUARTZ_BLOCK

Rahmen

ITEM_FRAME

Ranken

VINE

Redstone

REDSTONE

Redstone-Fackel (an)

REDSTONE_TORCH_ON

Redstone-Fackel (aus)

REDSTONE_TORCH_OFF

Redstone-Kabel

REDSTONE_WIRE

Redstone-Komparator (Block, an)

REDSTONE_COMPARATOR_ON

Redstone-Komparator (Block, aus)

REDSTONE_COMPARATOR_OFF

Redstone-Komparator (Gegenstand)

REDSTONE_COMPARATOR

Redstone-Lampe (an)

REDSTONE_LAMP_ON

Redstone-Lampe (aus)

REDSTONE_LAMP_OFF

Redstone-Verstärker (Block, an)

DIODE_BLOCK_ON

Redstone-Verstärker (Block, aus)

DIODE_BLOCK_OFF

Redstone-Verstärker (Gegenstand)

DIODE

Redstoneblock

REDSTONE_BLOCK

Redstoneerz

REDSTONE_ORE

Redstoneerz (leuchtend)

GLOWING_REDSTONE_ORE

Redstonetruhe

TRAPPED_CHEST

Rindfleisch (roh)

RAW_BEEF

Rose (rot)

RED_ROSE

Rote Bete

BEETROOT

Rote Bete Pflanze

BEETROOT_BLOCK

Rote Bete Samen

BEETROOT_SEEDS

Rote Bete Suppe

BEETROOT_SOUP

Rüstungsständer

ARMOR_STAND

Sand

SAND

Sandstein

SANDSTONE

Sandstein (rot)

RED_SANDSTONE

Sattel

SADDLE

Schädel

SKULL

Schädel (Gegenstand)

SKULL_ITEM

Schallplatte

RECORD_10

Schallplatte

RECORD_11

Schallplatte

RECORD_12

Schallplatte

RECORD_3

Schallplatte

RECORD_4

Schallplatte

RECORD_5

Schallplatte

RECORD_6

Schallplatte

RECORD_7

Schallplatte

RECORD_8

Schallplatte

RECORD_9

Schallplatte (Gold)

GOLD_RECORD

Schallplatte (Grün)

GREEN_RECORD

Schaufel (Diamant)

DIAMOND_SPADE

Schaufel (Eisen)

IRON_SPADE

Schaufel (Gold)

GOLD_SPADE

Schaufel (Holz)

WOOD_SPADE

Schaufel (Stein)

STONE_SPADE

Schere

SHEARS

Schiene

RAILS

Schild

SIGN

Schild (Kampf)

SHIELD

Schild (Pfosten)

SIGN_POST

Schild (Wand)

WALL_SIGN

Schleimball

SLIME_BALL

Schleimblock

SLIME_BLOCK

Schnee

SNOW

Schneeball

SNOW_BALL

Schneeblock

SNOW_BLOCK

Schuhe (Eisen)

IRON_BOOTS

Schüssel

BOWL

Schwamm

SPONGE

Schwarzpulver

SULPHUR

Schweinefleisch

PORK

Schwert (Diamant)

DIAMOND_SWORD

Schwert (Eisen)

IRON_SWORD

Schwert (Gold)

GOLD_SWORD

Schwert (Holz)

WOOD_SWORD

Schwert (Stein)

STONE_SWORD

Seelaterne

SEA_LANTERN

Seelensand

SOUL_SAND

Seerose

WATER_LILY

Sensorschiene

DETECTOR_RAIL

Setzling

SAPLING

Smaragd

EMERALD

Smaragdblock

EMERALD_BLOCK

Smaragderz

EMERALD_ORE

Spektralpfeil

SPECTRAL_ARROW

Spender

DROPPER

Spinnenauge

SPIDER_EYE

Spinnenaugen (fermentiert)

FERMENTED_SPIDER_EYE

Spinnennetz

WEB

Spitzhacke (Diamant)

DIAMOND_PICKAXE

Spitzhacke (Eisen)

IRON_PICKAXE

Spitzhacke (Gold)

GOLD_PICKAXE

Spitzhacke (Holz)

WOOD_PICKAXE

Spitzhacke (Stein)

STONE_PICKAXE

Steak

COOKED_BEEF

Stein

STONE

Steinknopf

STONE_BUTTON

Steinkohle

COAL_ORE

Steinziegel (gemeißelt)

SMOOTH_BRICK

Stiefel (Diamant)

DIAMOND_BOOTS

Stiefel (Gold)

GOLD_BOOTS

Stiefel (Ketten)

CHAINMAIL_BOOTS

Stiefel (Leder)

LEATHER_BOOTS

Stock

STICK

Stolperdraht

TRIPWIRE

Strohballen

HAY_BLOCK

Stufe

STEP

Stufe (doppelt)

DOUBLE_STEP

Stufe (Holz, doppelt)

WOOD_DOUBLE_STEP

Stufe (Holz)

WOOD_STEP

Stufe (Purpur, doppelt)

PURPUR_DOUBLE_SLAB

Stufe (Purpur)

PURPUR_SLAB

Stufe (Stein, doppelt)

DOUBLE_STONE_SLAB2

Stufe (Stein)

STONE_SLAB2

Tageslichtsensor

DAYLIGHT_DETECTOR

Teppich

CARPET

Tintenbeutel

INK_SACK

TNT

TNT

TNT-Lore

EXPLOSIVE_MINECART

Ton

CLAY

Ton (gebrannt)

HARD_CLAY

Ton (gefärbt)

STAINED_CLAY

Tonklumpen

CLAY_BALL

Trampelpfad

GRASS_PATH

Trank

POTION

Trank (werfbar)

SPLASH_POTION

Treppe (Akazienholz)

ACACIA_STAIRS

Treppe (Birkenholz)

BIRCH_WOOD_STAIRS

Treppe (Bruchstein)

COBBLESTONE_STAIRS

Treppe (Fichtenholz)

SPRUCE_WOOD_STAIRS

Treppe (Holz)

WOOD_STAIRS

Treppe (Netherziegel)

NETHER_BRICK_STAIRS

Treppe (Purpur)

PURPUR_STAIRS

Treppe (Quarz)

QUARTZ_STAIRS

Treppe (Sandstein, rot)

RED_SANDSTONE_STAIRS

Treppe (Sandstein)

SANDSTONE_STAIRS

Treppe (Schwarzeichenholz)

DARK_OAK_STAIRS

Treppe (Steinziegel, gemeißelt)

SMOOTH_STAIRS

Treppe (Tropenholz)

JUNGLE_WOOD_STAIRS

Treppe (Ziegelsteine)

BRICK_STAIRS

Trichter

HOPPER

Trichterlore

HOPPER_MINECART

Truhe

CHEST

Tür (Akazienholz, Gegenstand)

ACACIA_DOOR_ITEM

Tür (Akazienholz)

ACACIA_DOOR

Tür (Birkenholz, Gegenstand)

BIRCH_DOOR_ITEM

Tür (Birkenholz)

BIRCH_DOOR

Tür (Fichtenholz)

SPRUCE_DOOR

Tür (Gegenstand, Fichtenholz)

SPRUCE_DOOR_ITEM

Tür (Holz)

WOOD_DOOR

Tür (Holz)

WOODEN_DOOR

Tür (Schwarzeichenholz, Gegenstand)

DARK_OAK_DOOR_ITEM

Tür (Schwarzeichenholz)

DARK_OAK_DOOR

Tür (Tropenholz, Gegenstand)

JUNGLE_DOOR_ITEM

Tür (Tropenholz)

JUNGLE_DOOR

Uhr

WATCH

Verweiltrank

LINGERING_POTION

Verzauberungstisch

ENCHANTMENT_TABLE

Wägeplatte (Eisen)

IRON_PLATE

Wägeplatte (Gold)

GOLD_PLATE

Wasser

WATER

Wasser (stehend)

STATIONARY_WATER

Wassereimer

WATER_BUCKET

Weizen

CROPS

Weizen

WHEAT

Weizenkörner

SEEDS

Werfer

DISPENSER

Werkbank

WORKBENCH

Wolle

WOOL

Zaun

FENCE

Zaun (Akazienholz)

ACACIA_FENCE

Zaun (Birkenholz)

BIRCH_FENCE

Zaun (Eisen)

IRON_FENCE

Zaun (Fichtenholz)

SPRUCE_FENCE

Zaun (Netherziegel)

NETHER_FENCE

Zaun (Schwarzeichenholz)

DARK_OAK_FENCE

Zaun (Tropenholz)

JUNGLE_FENCE

Zauntor

FENCE_GATE

Zauntor (Akazienholz)

ACACIA_FENCE_GATE

Zauntor (Birkenholz)

BIRCH_FENCE_GATE

Zauntor (Fichtenholz)

SPRUCE_FENCE_GATE

Zauntor (Schwarzeichenholz)

DARK_OAK_FENCE_GATE

Zauntor (Tropenholz)

JUNGLE_FENCE_GATE

Ziegel

CLAY_BRICK

Ziegelsteine

BRICK

Zucker

SUGAR

Zuckerrohr (Block)

SUGAR_CANE_BLOCK

Zuckerrohr (Gegenstand)

SUGAR_CANE

Anhang B
Befehlsreferenz

In diesem Kapitel findest du eine Übersicht über alle Befehle, die dir im Verlauf dieses Buches begegnet sind. Es kann dir als Nachschlagewerk dienen, selbst wenn du das letzte Kapitel des Buches schon lange abgeschlossen hast. Die Befehle sind nach Themen und in alphabetischer Reihenfolge sortiert.

B.1  Schleifen​

Befehl

Parameter

Rückgabewert

Beschreibung

do{

}while(a)

a: boolean

 

Wiederholt die Befehle im Schleifenrumpf, solange die Laufbedingung erfüllt ist, mindestens aber einmal.

for(int i = x; i < y; i++){

}

x, y: Zahl

 

Wiederholt die Befehle im Schleifenrumpf, solange die Laufbedingung erfüllt ist.

while(a){

}

a: boolean

 

Wiederholt die Befehle im Schleifenrumpf, solange die Laufbedingung erfüllt ist.

B.2  Verzweigungen​

Befehl

Parameter

Rückgabewert

Beschreibung

if(a){

}else if(b){

}else{

}

a, b: boolean

 

Führt den if-Teil aus, falls a erfüllt ist, den else-if-Teil, falls b erfüllt ist und den else-Teil, falls keine der beiden Bedingungen erfüllt ist.

switch(x){
    case A: //Anweisung
             break;
    case B: //Anweisung
             break;
    default: //Anweisung
             break;
}

x: byte, short, int, char, String

 

Führt den A-Teil aus, falls x gleich A ist, den B-Teil, falls x gleich B ist und den default-Teil, falls keine der vorangegangenen Bedingungen erfüllt ist.

try{

}catch(Exception e){

}

   

Fängt Fehler, die im try-Block geworfen werden, ab und führt, falls ein Fehler geworfen wird, dann den catch-Block aus.

B.3  Variablen​

Befehl

Parameter

Rückgabewert

Beschreibung

Byte.valueOf(x)

x: Variable oder konkreter Wert

byte

Wandelt x in einen Byte-Wert um.

Double.valueOf(x)

x: Variable oder konkreter Wert

double

Wandelt x in einen double-Wert um.

final variablentyp name

variablentyp: int, float, String, usw.
name: gültiger Bezeichner

 

Deklaration einer Konstanten.

Float.valueOf(x)

x: Variable oder konkreter Wert

float

Wandelt x in einen float-Wert um.

Integer.valueOf(x)

x: Variable oder konkreter Wert

int

Wandelt x in einen int-Wert um.

Long.valueOf(x)

x: Variable oder konkreter Wert

long

Wandelt x in einen long-Wert um.

private Typ name

Typ: Variablentyp oder Klasse
name: Name der Variablen

 

Deklaration einer privaten Variablen.

protected Typ name

Typ: Variablentyp oder Klasse
name: Name der Variablen

 

Deklaration einer geschützten Variablen.

public Typ name

Typ: Variablentyp oder Klasse
name: Name der Variablen

 

Deklaration einer öffentlichen Variablen.

Short.valueOf(x)

x: Variable oder konkreter Wert

short

Wandelt x in einen short-Wert um.

String.equals(s)

s: String

boolean

Prüft, ob die beiden angegebenen Strings den gleichen Inhalt haben.

String.valueOf(x)

x: Variable oder konkreter Wert

String

Wandelt x in einen String-Wert um.

variablentyp name

variablentyp: int, float, String, usw.
name: gültiger Bezeichner

 

Deklaration einer Variablen.

variablentyp name = y

variablentyp: int, float, String, usw.
name: gültiger Bezeichner
y: Variable oder konkreter Wert

 

Deklaration und Wertzuweisung in einem Schritt.

x = y

x: Variable
y: Variable oder konkreter Wert

 

Wertzuweisung zu einer Variablen.

B.3.1  Arrays​

Befehl

Parameter

Rückgabewert

Beschreibung

array.length

array: Variable des Typs Array

int

Gibt die Länge eines Arrays zurück.

variablentyp[] name = new variablentyp[i]

variablentyp: int, float, String, usw.
name: gültiger Bezeichner
i: int

 

Deklaration eines Arrays mit Längenangabe.

variablentyp[] name

variablentyp: int, float, String, usw.
name: gültiger Bezeichner

 

Deklaration eines Arrays.

x[i]

x: Array
i: int

 

Zugriff auf den i-ten Wert eines Arrays.

B.3.2  Listen​

Um Listen in deinem Plugin einsetzen zu können, benötigst du folgende Importbefehle:

  • import java.util.List

  • import java.util.ArrayList für eine ArrayList

  • import java.util.LinkedList für eine LinkedList

  • import java.util.HashMap für eine HashMapnd

  • import java.util.Set für ein Set

Befehl

Parameter

Rückgabewert

Beschreibung

HashMap<Object, Object> map = new HashMap< Object, Object>()

   

Deklaration einer neuen HashMap-Variablen.

List<Typ> liste = new ArrayList<Typ>()

typ: Beliebiger Variablentyp

 

Erzeugt eine neue ArrayList des angegebenen Typs.

List<Typ> liste = new LinkedList<Typ>()

typ: Beliebiger Variablentyp

 

Erzeugt eine neue LinkedList des angegebenen Typs.

liste.add(index, wert)

liste: List, index: Integer, wert: Vom selben Typ wie die Liste

 

Fügt der Liste den angegebenen Wert an der angegebenen Stelle hinzu.

liste.add(wert)

liste: List, wert: Vom selben Typ wie die Liste

 

Fügt der Liste den angegebenen Wert hinzu.

liste.clear()

liste: List

 

Leert die Liste komplett.

liste.contains(wert)

liste: List, wert: Vom selben Typ wie die Liste

Boolean

Prüft, ob der angegebene Wert in der Liste enthalten ist.

liste.get(index)

liste: List, index: Integer

Vom selben Typ wie die Liste

Gibt das Element an der angegebenen Stelle zurück.

liste.indexOf(wert)

liste: List, wert: Vom selben Typ wie die Liste

 

Gibt den Index des ersten Auftretens des angegebenen Elements zurück.

liste.remove(index)

liste: List, index: Integer

Boolean

Entfernt das Element an der angegebenen Stelle aus der Liste.

liste.remove(wert)

liste: List, wert: Vom selben Typ wie die Liste

Boolean

Entfernt das erste Auftreten des angegebenen Werts aus der Liste.

liste.set(index, wert)

liste: List, index: Integer, wert: Vom selben Typ wie die Liste

 

Setzt das Element an der angegebenen Stelle auf den angegebenen Wert.

map.containsKey(index)

map: Map<Typ1, Typ2>, index: Typ1

Boolean

Überprüft, ob die Map einen Eintrag mit dem angegebenen Index enthält.

map.get(index)

map: Map<Typ1, Typ2>, index: Typ1

Typ2

Gibt das zum Index gehörende Objekt zurück.

map.keySet()

map: Map<Typ1, Typ2>

Typ1[]

Gibt die Indizes der Map als Array zurück.

map.put(obj1, obj2)

map: Map, obj1: Object, obj2: Object

 

Fügt der Map einen neuen Eintrag hinzu.

set.toArray(new Typ1[set.size()])

set: Set<Typ1>

Typ1[]

Wandelt eine Menge (Set) in ein Array um.

B.4  Klassen und Objekte​​

Befehl

Parameter

Rückgabewert

Beschreibung

A a = new A()

   

Erzeugen eines neuen Objekts der Klasse A.

abstract class C{

}

   

Definition einer Abstrakten Klasse C.

class A{

}

   

Definition einer Klasse mit Namen A.

class B extends A{

}

   

Definition einer Klasse B, die Unterklasse von A ist.

class E implements D{

}

   

Definition einer Klasse E, die das Interface D implementiert.

import packetname

packetname: Der Name eines Java-Pakets, zum Beispiel net.canarymod.plugin.Plugin

 

Fügt dem Plugin das angegebene Paket hinzu.

interface D{

}

   

Definition eines Interface D.

public A(){

}

 

A

Deklaration eines Konstruktors für die Klasse A.

var instanceof Class

var: beliebige Variable

boolean

Prüft, ob die angegebene Variable vom angegebenen Typ ist.

B.5  Funktionen​

Befehl

Parameter

Rückgabewert

Beschreibung

@Override
Typ funktion(){

}

Typ: Variablentyp oder Klasse
funktion: Name der Funktion

 

Überschreiben einer Funktion aus der Oberklasse innerhalb der Unterklasse.

abstract Typ funktion(){

}

Typ: Variablentyp oder Klasse
funktion: Name der Funktion

 

Definition einer abstrakten Funktion.

abstract Typ funktion(){

}

Typ: Variablentyp oder Klasse
funktion: Name der Funktion

 

Definition einer abstrakten Funktion.

public typ name(parameterTyp parameterName){

}

typ, parameterTyp: beliebiger Variablentyp

Für void kein Rückgabewert, ansonsten Rückgabewert vom Typ typ, also zum Beispiel int oder String

Deklaration einer Funktion.

return x

x: Wert vom selben Typ wie der Rückgabewert der Funktion

 

Beendet die Ausführung der Funktion und gibt x als Rückgabewert aus.

B.6  Logische Operatoren​

Befehl

Parameter

Rückgabewert

Beschreibung

!a

a: boolean
b: boolean

boolean

Negierung eines Wahrheitswerts

a && b

a: boolean
b: boolean

boolean

Und-Verknüpfung zweier Wahrheitswerte

a ˆ b

a: boolean
b: boolean

boolean

Entweder-Oder-Verknüpfung zweier Wahrheitswerte

a || b

a: boolean
b: boolean

boolean

Oder-Verknüpfung zweier Wahrheitswerte

B.7  Spieler​

Um Spieler-Objekte in deinem Plugin einsetzen zu können, benötigst du den Importbefehl

Befehl

Parameter

Rückgabewert

Beschreibung

Player.getInventory()

 

PlayerInventory

Ruft das Inventar eines Spielers ab.

Player.getInventory().getItemInMainHand()

 

ItemStack

Gibt den Gegenstand zurück, den der Spieler in der Hand hält.

Player.getLineOfSight(materialien, entfernung)

materialien: Set<Material>, entfernung: Integer

List<Block>

Wie getTargetBlock, allerdings werden auch alle Blöcke zwischen dem Spieler und dem Endblock als Liste zurückgegeben.

Player.getLocation()

 

Location

Gibt die Position des Spielers zurück.

Player.getTargetBlock(materialien, entfernung)

materialien: Set<Material>, entfernung: Integer

Block

Gibt den Block zurück, den der Spieler anschaut, solange er sich innerhalb der angegebenen Entfernung befindet. Alle übergebenen Materialien werden dabei wie Luft behandelt.

Player.getUUID()

 

UUID

Gibt die UUID des Spielers zurück.

Player.getWorld()

 

World

Gibt die Welt zurück, in der sich der Spieler befindet.

Player.teleport(position)

position: Location

 

Teleportiert den Spieler an die angegebene Position.

B.8  Positionen​

Für Positionsvariablen benötigst du den Importbefehl

Befehl

Parameter

Rückgabewert

Beschreibung

Location(welt, x, y, z)

welt: World, x, y, z: Double

Location

Erzeugt ein neues Location-Objekt.

Location.getX()

 

double

Gibt den X-Wert einer Location-Variablen zurück.

Location.getY()

 

double

Gibt den Y-Wert einer Location-Variablen zurück.

Location.getZ()

 

double

Gibt den Z-Wert einer Location-Variablen zurück.

Location.setX(x)

x: double

 

Ändert den X-Wert einer Location-Variablen auf den angegebenen Wert.

Location.setY(y)

y: double

 

Ändert den Y-Wert einer Location-Variablen auf den angegebenen Wert.

Location.setZ(z)

z: double

 

Ändert den Z-Wert einer Location-Variablen auf den angegebenen Wert.

B.9  Welt​

Zugriff auf die Welt erhältst du mit dem Importbefehl

Befehl

Parameter

Rückgabewert

Beschreibung

World.getBlockAt(position)

position: Location

 

Gibt den Block an der angegebenen Position zurück.

B.10  Blöcke​

Für Blöcke benötigst du folgende Importe:

Befehl

Parameter

Rückgabewert

Beschreibung

Bed.setPart(teil)

teil: Bed.Part

 

Legt fest, ob es sich um das Kopfteil (Bed.Part.HEAD) oder Fußteil (Bed.Part.FOOT) eines Bettes handelt.

Block.getBlockData()

 

BlockData

Liefert die Daten eines Blocks zurück.

Block.setType(material)

material: Material

 

Ändert den Typ des Blocks in das angegebene Material.

Block.setBlockData(data)

data: BlockData

 

Setzt die Daten eines Blocks auf den übergebenen Wert.

Door.setFacing (richtung)

richtung: BlockFace

 

Legt die Ausrichtung einer Tür fest.

Door.setHalf (haelfte)

haelfte: Door.Half

 

Legt fest, ob es sich um die obere (Door.Half.TOP) oder untere (Door.Half.BOTTOM) Hälfte einer Tür handelt.

Sign.setLine(zeile, text)

zeile: Integer, text: String

 

Legt den Text eines Schildes in der angegebenen Zeile fest.

B.11  Inventar​ und Gegenstände​

Der Zugriff auf das Inventar eines Spieler setzt die folgenden Import-Befehle voraus:

Befehl

Parameter

Rückgabewert

Beschreibung

ItemMeta.getDisplayName()

 

String

Gibt den Anzeigenamen des Gegenstands aus.

ItemMeta.setDisplayName(name)

name: String

 

Legt den Anzeigenamen eines Gegenstands fest.

ItemStack.addUnsafeEnchantment(verzauberung, stufe)

verzauberung: Enchantment, stufe: int

 

Verzaubert einen Gegenstand.

ItemStack.getItemMeta()

 

ItemMeta

Ruft die Meta-Daten eines Gegenstands ab.

ItemStack.setAmount(x)

x: int

 

Setzt die Anzahl der gestapelten Gegenstände auf die angegebene Zahl.

new ItemStack(material)

material: Material

ItemStack

Erzeugt einen neuen Gegenstand.

PlayerInventory.addItem(gegenstand)

gegenstand: ItemStack

 

Fügt dem Inventar den übergebenen Gegenstand hinzu.

PlayerInventory.firstEmpty()

 

ItemStack

Gibt den ersten freien Inventar-Slot zurück.

PlayerInventory.getItem(position)

position: Integer

ItemStack

Gibt den Item-Stack zurück, der sich an der übergebenen Position befindet.

PlayerInventory.getItem(typ)

typ: Material

ItemStack

Gibt den Item-Stack zurück, in dem sich ein Gegenstand vom angegebenen Typ befindet.

PlayerInventory.remove(gegenstand)

gegenstand: ItemStack

ItemStack

Entfernt den übergebenen Gegenstand aus dem Inventar.

B.12  Crafting-Rezepte​​

Die Importbefehle für Crafting-Rezepte lauten:

Befehl

Parameter

Rückgabewert

Beschreibung

JavaPlugin.getServer().addRecipe(rezept)

rezept: ShapedRecipe, ShapelessRecipe

 

Fügt dem Server das übergebene Rezept hinzu.

new ShapedRecipe(gegenstand)

gegenstand: ItemStack

ShapedRecipe

Erzeugt ein neues Rezept für den übergebenen Gegenstand, mit fester Anordnung.

new ShapelessRecipe(gegenstand)

gegenstand: ItemStack

ShapelessRecipse

Erzeugt ein neues Rezept für den übergebenen Gegenstand, ohne feste Anordnung.

ShapedRecipe.setIngredient(buchstabe, material)

buchstabe: char, material: Material

 

Legt fest, für welchen Gegenstand ein Zeichen in einem Rezept steht.

ShapedRecipe.shape(reihe1, reihe2, reihe3)

reihe1, reihe2, reihe3: String

 

Legt die Anordnung eines Rezepts fest.

ShapelessRecipe.addIngredient(material)

material: Material

 

Fügt dem Rezept die übergebene Zutat hinzu.

B.13  Rechnen​

Befehl

Parameter

Rückgabewert

Beschreibung

i--

i: Zahl

Zahl

Kurzschreibweise für x = x -1

Math.ceil(x)

x: double oder float

Double

Rundet x auf.

Math.floor(x)

x: double oder float

Double

Rundet x ab.

Math.pow(a, b)

a, b: Zahl

Double

Berechnet die Potenz ab.

Math.rint(x)

x: double oder float

Double

Rundet x fair.

Math.round(x)

x: double oder float

Long oder Integer

Rundet x kaufmännisch.

Random zufallsgenerator = new Random()

   

Initialisierung eines Zufallszahlgenerators.

x – y

x, y: Zahlen-Variablen oder konkrete Werte

Zahl

Substraktion zweier Zahlen.

x % y

x, y: Zahlen-Variablen oder konkrete Werte

Zahl

Berechnung des Restwerts.

x %= y

x: Zahlen-Variablen oder konkrete Werte
y: Zahlen-Variable oder konkreter Wert

Zahl

Kurzschreibweise für x = x % y.

x * y

x, y: Zahlen-Variablen oder konkrete Werte

Zahl

Multiplizierung zweier Zahlen.

x *= y

x: Zahlen-Variablen oder konkrete Werte
y: Zahlen-Variable oder konkreter Wert

Zahl

Kurzschreibweise für x = x * y.

x / y

x, y: Zahlen-Variablen oder konkrete Werte

Zahl

Quotienten zweier Zahlen.

x /= y

x: Zahlen-Variablen oder konkrete Werte
y: Zahlen-Variable oder konkreter Wert

Zahl

Kurzschreibweise für x = x / y.

x + y

x, y: Variablen oder konkrete Werte

Zahl

Addition zweier Zahlen oder Konkatenation zweier Strings.

x += y

x: Zahlen-Variablen oder konkrete Werte
y: Zahlen-Variable oder konkreter Wert

Zahl

Kurzschreibweise für x = x + y.

x -= y

x: Zahlen-Variablen oder konkrete Werte
y: Zahlen-Variable oder konkreter Wert

Zahl

Kurzschreibweise für x = x – y.

x++

x: Zahlen-Variable

Zahl

Kurzschreibweise für x += 1.

zufallsgenerator.nextInt(obereGrenze)

zufallsgenerator: Random, obereGrenze: Integer

Integer

Erzeugt eine Zufallszahl zwischen 0 (einschließlich) und der angegebenen oberen Grenze (ausschließlich).

B.14  Chat-Nachrichten​

Befehl

Parameter

Rückgabewert

Beschreibung

Bukkit.broadcastMessage(meldung)

meldung: Text

 

Versendet die angegebene Meldung als Chat-Nachricht an alle Spieler.

Bukkit.getLogger().info(meldung)

meldung: Text

 

Schreibt einen Log-Eintrag mit der angegebenen Meldung.

B.15  Listener​

Eine komplette Übersicht über alle verfügbaren Listener und ihre zugehörigen Funktionen findest du in Kapitel 13, an dieser Stelle sind daher nur die Befehle zusammengefasst, die allgemein für ihren Einsatz benötigt werden.

Befehl

Parameter

Rückgabewert

Beschreibung

@EventHandler

   

Leitet eine Funktion ein, die von einem Listener bei einer festgestellten Veränderung aufgerufen wird.

Event.setCancelled(boolean)

boolean: Boolean

 

Unterbindet (bei true) das Standardverhalten eines Events.

JavaPlugin.getServer().getPluginManager()

 

PluginManager

Gibt den Plugin-Manager zurück.

PluginManager.registerEvents(listener, this)

listener: Listener

 

Registriert einen Listener.

B.16  Konfigurationsdateien​

Befehl

Parameter

Rückgabewert

Beschreibung

FileConfiguration.getBoolean(name)

name: String

boolean

Lädt den Wahrheitswert mit dem angegebenen Namen aus der Konfigurationsdatei.

FileConfiguration.getDouble(name)

name: String

float

Lädt den Float-Wert mit dem angegebenen Namen aus der Konfigurationsdatei.

FileConfiguration.getInt(name)

name: String

int

Lädt den Integer-Wert mit dem angegebenen Namen aus der Konfigurationsdatei.

FileConfiguration.getList(name)

name: String

List<Object>

Lädt die Liste mit dem angegebenen Namen aus der Konfigurationsdatei.

FileConfiguration.getString(name)

name: String

String

Lädt den String-Wert mit dem angegebenen Namen aus der Konfigurationsdatei.

FileConfiguration.save()

   

Speichert Änderungen in der Konfigurationsdatei.

FileConfiguration.set(name, wert)

name: String, wert: Objekt

 

Speichert den Wert unter dem angegebenen Namen in der Konfigurationsdatei.

this.getConfig()

 

FileConfiguration

Lädt die zum Plugin gehörende Konfigurationsdatei.

this.saveResource(dateiname, ueberschreiben)

dateiname: String, ueberschreiben: Boolean

 

Speichert die angegebene Datei aus dem Jar-Paket im Ressourcen-Ordner.

YamlConfiguration.loadConfiguration(datei)

datei: File

FileConfiguration

Lädt die angegebene Konfigurationsdatei.

B.17  Dateisystem

Befehl

Parameter

Rückgabewert

Beschreibung

File(ordner, dateiname)

ordner: File, dateiname: String

File

Lädt die angegebene Datei aus dem angegebenen Ordner.

FileInputStream(datei)

datei: File

FileInputStream

Erzeugt einen neuen FileInputStream.

FileOutputStream(datei)

datei: File

FileOutputStream

Erzeugt einen neuen FileOutputStream.

ObjectInputStream(stream)

stream: FileInputStream

ObjectInputStream

Erzeugt einen neuen ObjectInputStream.

ObjectInputStream.readObject()

 

Object

Liest ein gespeichertes Objekt aus der zugehörigen Datei.

ObjectOutputStream(stream)

stream: FileOutputStream

ObjectOutputStream

Erzeugt einen neuen ObjectOutputStream.

ObjectOutputStream.writeObject(objekt)

objekt: Object

 

Speichert ein Objekt in der zugehörigen Datei.

Anhang A
Rätsel-Lösungen

Hier findest du die Lösungen zu den im Buch gestellten Rätseln, geordnet nach den Kapiteln, zu denen sie gehören.

A.1  Kapitel 1

Keine Rätsel.

A.2  Kapitel 2

Keine Rätsel.

A.3  Kapitel 3

A.3.1  Rätsel 1

In Zeile 5 fehlt am Ende der Zeile das Semikolon. In Zeile 9 fehlen außerdem die Anführungszeichen um den auszugebenden Text. Korrekt müsste die Zeile this.getLogger().info("Auf Wiedersehen!"); heißen.

A.3.2  Rätsel 2

Zeile 5 muss wie in Listing A.1 gezeigt angepasst werden.

 1  import org.bukkit.plugin.java.JavaPlugin;
 2  
 3  public class HalloWeltPlugin extends JavaPlugin {
 4      public void onEnable() {
 5          this.getLogger().info("Der Server wurde gestartet.");
 6      }
 7  
 8      public void onDisable() {
 9      }
10  }

Listing A.1: Lösung zu Rätsel 3.2

A.3.3  Rätsel 3

Die Datei HalloWeltPlugin.java muss umbenannt werden in ServerStartPlugin.java und wie in Listing A.2 gezeigt abgeändert werden. Außerdem muss die plugin.yml abgeändert werden.

 1  import org.bukkit.plugin.java.JavaPlugin;
 2  
 3  public class ServerStartPlugin extends JavaPlugin {
 4      public void onEnable() {
 5          this.getLogger().info("Der Server wurde gestartet.");
 6      }
 7  
 8      public void onDisable() {
 9      }
10  }

Listing A.2: ServerStartPlugin.java

A.3.4  Rätsel 4

Die für ein funktionierendes Plugin benötigte Datei plugin.yml wird mit diesem Befehl nicht zum Jar-Archiv hinzugefügt.

A.4  Kapitel 4

A.4.1  Rätsel 1

Es muss nur der Name des Befehls in der plugin.yml geändert werden.

A.4.2  Rätsel 2

 1  import org.bukkit.Bukkit;
 2  import org.bukkit.plugin.java.JavaPlugin;
 3  import org.bukkit.command.Command;
 4  import org.bukkit.command.CommandSender;
 5  
 6  public class HalloServerPlugin extends JavaPlugin {
 7      public void onEnable() {
 8      }
 9  
10      public void onDisable() {
11      }
12  
13      public boolean onCommand(CommandSender sender, Command befehl, String befehlsname, String[] args){
14          Bukkit.broadcastMessage("Willkommen Spieler");
15          return true;
16      }

Listing A.3: Lösung zu Rätsel 4.2

A.5  Kapitel 5

Keine Rätsel

A.6  Kapitel 6

A.6.1  Rätsel 1

Weil der Compiler die Zahl 3.471 als double-Wert behandelt, wenn dahinter kein f steht. Korrekt müsste die Zeile float f = 3.471f; lauten.

A.6.2  Rätsel 2

1  double d = 7.31;
2  long r1 = Math.round(d); //Ergebnis: 7
3  double r2 = Math.ceil(d); //Ergebnis: 8.0
4  double r3 = Math.floor(d); //Ergebnis 7.0
5  double r4 = Math.rint(d); //Ergebnis 7.0

A.6.3  Rätsel 3

Dazu muss die Zahl zuerst mit 1000 multipliziert, dann gerundet und danach wieder durch 1000 geteilt werden:

1  double d = 2.7481;
2  d = d * 1000; //2748.1
3  d = Math.rint(d); //2748.0
4  d = d / 1000; //2.748

A.6.4  Rätsel 4

Das Ergebnis des Ausdrucks ist der String »101«. Da die Eins als String angegeben wurde, interpretiert der Compiler das Pluszeichen automatisch als Konkatenationsoperator und die erste Zahl ebenfalls als String.

A.6.5  Rätsel 5

Wie bereits als Tipp erwähnt, benötigst du eine zusätzliche Variable, die als Zwischenspeicher dient. In der speicherst du zunächst einen Namen, zum Beispiel »Max«, dann setzt du »Lea« an die Stelle von »Max« und an die alte Position von »Lea« den Wert des Zwischenspeichers, also »Max«.

Wie das als Code aussieht, kannst du in Listing A.4 sehen.

1  String[] namen = {"Kai", "Max", "Kim", "Lea", "Pia"};
2  String zwischenspeicher;
3  
4  zwischenspeicher = namen[1]; //Max
5  namen[1] = namen[3]; //ersetze Max durch Lea
6  namen[3] = zwischenspeicher; //ersetze Lea durch Max

Listing A.4: Lösung zu Rätsel 6.5

A.7  Kapitel 7

A.7.1  Rätsel 1

1  a = true && false = false
2  b = false || true = true
3  c = false
4  d = (true || false) && true = true && true = true
5  e = true ˆ true = false

A.7.2  Rätsel 2

Da die Laufbedingung der Schleife i < 5 ist, wird die Schleife abgebrochen, sobald i den Wert 5 erreicht. Der Schleifenrumpf wird also nie mit diesem Wert ausgeführt und b bleibt daher false.

A.7.3  Rätsel 3

Die while-Schleife ist kopfgesteuert, das heißt, es wird vor Ausführung der Schleife die Laufbedingung geprüft. Da i = 0 und die Laufbedingung i < 0 ist, wird der Schleifenrumpf also überhaupt nicht ausgeführt und i bleibt 0.

Die do-while-Schleife dagegen ist fußgesteuert, das heißt, sie wird mindestens einmal ausgeführt und erst dann wird die Laufbedingung geprüft. Daher wird j auf den Wert 1 gesetzt.

A.7.4  Rätsel 4

Die Anweisung x++ befindet sich nur innerhalb der äußeren Schleife. Da die Schleife genau zehn Mal durchlaufen wird und somit zehnmal eins zu x addiert wird, ergibt sich für x beim Startwert 0 das Ergebnis 10.

Die Anweisung y++ befindet sich in der inneren Schleife. Die innere Schleife wird in einem Durchlauf 20 Mal wiederholt. Da sie sich aber innerhalb der äußeren Schleife befindet, wird sie insgesamt 10 Mal komplett durchlaufen. Zehn mal zwanzig Wiederholungen ergeben also insgesamt zweihundert Wiederholungen und dementsprechend auch einen y-Wert von 200.

A.8  Kapitel 8

A.8.1  Rätsel 1

Mithilfe einer kopfgesteuerten Schleife kann das Verhalten einer Verzweigung auf verschiedene Weisen nachgebaut werden, zum Beispiel so:

1  boolean b = true;
2  
3  while(a && b){
4      //Befehle
5      b = false;
6  }

Diese Schleife wird zum Beispiel nur genau dann ausgeführt, wenn a wahr ist und nur ein Mal. Sie verhält sich also wie die Verzweigung if(a).

A.8.2  Rätsel 2

Da der Startwert von a false ist, wird die while-Schleife in Zeile 8 nicht ausgeführt und i bleibt 0. Da es sich bei der nächsten Schleife um eine fußgesteuerte Schleife handelt, wird diese einmal ausgeführt, obwohl a weiterhin false ist. Der Wert von j wird also auf 1 erhöht. Aus diesem Grund sind i und j in Zeile 16 nicht mehr gleich, 0 == 1, daher wird der else-Teil der Verzweigung ausgeführt und die Variable ausgabe erhält den Wert »ungleich«.

A.9  Kapitel 9

A.9.1  Rätsel 1

In der ersten Zeile wird der Typ des Rückgabewerts der Funktion als int angegeben, die Funktion gibt aber tatsächlich Strings zurück. Korrekt müsste die Funktion deshalb wie in Listing A.5 aussehen.

1  public String testFunktion(boolean b){
2      if(b){
3          return "wahr";
4      }
5      else{
6          return "falsch";
7      }
8  }

Listing A.5: Lösung zu Rätsel 9.1

A.9.2  Rätsel 2

Es gibt viele verschiedene Möglichkeiten, eine solche Funktion zu programmieren. Am einfachsten kannst du das Problem mit einer Schleife lösen, welche du dabei verwendest, ist Geschmackssache. Eine mögliche Lösung, die eine for-Schleife verwendet, findest du in Listing A.6.

 1  public int potenz(int a, int b){
 2      if(b == 0){
 3          return 1;
 4      }
 5      else{
 6          int ergebnis = 1;
 7          for(int i = 0; i < b; i++){
 8              ergebnis = ergebnis * a;
 9          }
10          return ergebnis;
11      }
12  }

Listing A.6: Lösung zu Rätsel 9.2

A.10  Kapitel 10

A.10.1  Rätsel 1

Eine Mauer ist ein Quader mit der Tiefe 1. Statt Mauer(hoehe, breite, material) könnte man also auch einfach Quader(hoehe, breite, 1, material) nutzen.

A.10.2  Rätsel 2

Dazu kann die Mauer-Klasse einfach zu einer Unterklasse der Quader-Klasse gemacht werden. Damit übernimmt die Mauer-Klasse automatisch die Bau-Funktion aus der Quader-Klasse und im Konstruktor der Mauer-Klasse muss nur noch, wie in Listing A.7 gezeigt, der Aufruf des Konstruktors der Oberklasse geändert werden.

1  class Mauer extends Quader{
2      public Mauer(int hoehe, int breite, Material material){
3          super(hoehe, breite, 1, material);
4      }
5  }

Listing A.7: Lösung zu Rätsel 10.2

A.11  Kapitel 11

Kein Rätsel.

A.12  Kapitel 12

A.12.1  Rätsel 1

Das Vorgehen ist hier im Prinzip identisch mit dem Vertauschen von Elementen in einem Array. Auch hier benötigst du wieder eine zusätzliche Variable als Zwischenspeicher, wie du in Listing A.8 sehen kannst.

 1  List<String> liste = new ArrayList<String>();
 2  liste.add("eins");
 3  liste.add("zwei");
 4  liste.add("drei");
 5  liste.add("vier");
 6  liste.add("fünf");
 7  //liste: eins, zwei, drei, vier, fünf
 8  
 9  //vertausche zwei und vier
10  String zwischenspeicher = liste.get(1); //zwei
11  liste.set(1, liste.get(3)); //ersetze zwei durch vier
12  liste.set(3, zwischenspeicher); //ersetze vier durch zwei
13  //liste: eins, vier, drei, zwei, fünf

Listing A.8: Lösung zu Rätsel 12.1

A.13  Kapitel 13

Kein Rätsel.

A.14  Kapitel 14

A.14.1  Rätsel 1

In Listing A.9 kannst du sehen, wie das Rezept für ein Bett als Code ausgedrückt aussieht.

1  ShapedRecipe bettRezept = new ShapedRecipe(enderbogen);
2  bettRezept.shape("", "WWW", "BBB");
3  bettRezept.setIngredient('"', Material.WOOL);
4  bettRezept.setIngredient('B', Material.LOG); 
5  this.getServer().addRecipe(bettRezept);

Listing A.9: Lösung zu Rätsel 14.1

A.15  Kapitel 15

Kein Rätsel.

A.16  Kapitel 16

A.16.1  Rätsel 1

Im Kreativmodus wird ein Schneeball beim Werfen nicht aus dem Inventar entfernt, das Schneeballschlacht-Plugin fügt aber trotzdem bei jedem Wurf einen Schneeball zum Inventar des Spielers hinzu. Somit können sich im Inventar-Slot des Spielers mehr als die eigentlich möglichen 16 Schneebälle befinden. Um das zu vermeiden, musst du im WurfListener die Zeile gegenstand.setAmount(gegenstand.getAmount() + 1) anpassen. Entweder so, dass die Anzahl immer fest auf 16 gesetzt wird, oder eine Prüfung hinzufügen und nur dann die Anzahl erhöhen, wenn der Wert kleiner als 16 ist.