# Minecraft Coding



## Cookienation (30. Dez 2016)

```
if (cfg.getString("config." + "Notch Apples") == null) {
           cfg.set("config." + "Notch Apples", "false");
       }
       
        if (cfg.getString("config." + "Notch Apples") == "false") {
            if(e.getInventory().getResult().getType() == Material.GOLDEN_APPLE) {
                  e.setCancelled(true);
                }
          }
```

Ich möchte aber nur, dass man die verzauberten goldenen Äpfle nicht mehr Craften kann.... Wie kann ich das verwirklichen? Und außerdem erstellt sich irgenwie keine Config.yml.
Danke im Voraus


----------



## Robat (30. Dez 2016)

Und was ist jetzt deine Frage?

Lies dir das hier noch mal durch..

Gruß
Robert


----------



## Cookienation (30. Dez 2016)

Cookienation hat gesagt.:


> ```
> if (cfg.getString("config." + "Notch Apples") == null) {
> cfg.set("config." + "Notch Apples", "false");
> }
> ...



"Wie kann ich das verwirklichen?"
Also wie frage ich denn ab, ob es ein normaler Gold Apfel oder ein OP Apfel ist


----------



## Robat (30. Dez 2016)

Was benutzt du denn? Die bukkit API?

Wenn ja, dann versuchs mal damit:

*~quick'n'dirty~
*

```
public class CraftNoApples extends JavaPlugin implements Listener
{
    public void onEnable()
    {
        getServer().getPluginManager().registerEvents(this, this);
    }

    @EventHandler
    public void craftItem(PrepareItemCraftEvent e)
    {
        Material itemType = e.getRecipe().getResult().getType();
        Byte itemData = e.getRecipe().getResult().getData();
  
         if((itemType==Material.GOLDEN_APPLE&&itemData==1))
         {
            e.getInventory().setResult(new ItemStack(Material.AIR));
            for(HumanEntity he:e.getViewers()) {
                if(he instanceof Player) {
                    ((Player)he).sendMessage(ChatColor.RED+"Das Item kann man nicht craften!");
                }
            } 
          }
    }

}
```


----------



## Cookienation (30. Dez 2016)

```
if((e.getInventory().getResult().getType() ==Material.GOLDEN_APPLE && e.getInventory().getResult().getData() == 1))
            {
               e.setCancelled(true);
               e.getWhoClicked().sendMessage(utils.prefix + "§cDas darfst  du nicht craften!");
             }
```

Jetzt ist "e.getInventory().getResult().getData() == 1))" Rot unterstrichen. Fehlermeldung: "Incompatible operand types MaterialData and int"


----------



## Robat (30. Dez 2016)

Warum genau willst du das über das Inventory machen? Wenn du verhindern willst dass jemand etwas crafted solltest du es schon über `getRecipe()` machen oder nicht?


----------



## Cookienation (30. Dez 2016)

Wie benutze ich denn 
	
	
	
	





```
getRecipe()
```
 ?


----------



## Henne079 (30. Dez 2016)

Die Zeile:

```
e.getInventory().getResult().getData()
```
Gibt ein "MaterialData" zurück, um aber an die Data (Metadata) zu kommen ist es notwendig nochmal getData() aufzurufen.

Also:

```
e.getInventory().getResult().getData().getData()
```

Am Anfang, aber auch jetzt noch hilft mir immer wieder diese Seite:
https://hub.spigotmc.org/javadocs/spigot/index.html?org/bukkit/inventory/Recipe.html


----------



## Cookienation (30. Dez 2016)

Ok, Danke an Henne079 und Robat


----------

