2017-09-05 3 views
1

Dies ist mein Suchcode:Spigot Änderung gefärbte Ton Farbe

for(int x = -100; x < 100; x ++) 
{ 
    for(int z = -100; z < 100; z ++) 
    { 
     for(int y = 0; y < 50; y ++) 
     { 
      Location loc = new Location(Bukkit.getWorld(map_name), x, y, z); 
      Block block = loc.getBlock(); 
      if(block.getType() 
       .equals(ConstantsManager.ground_material)) 
      { 
       if(block.getType().getData() 
        .equals(ConstantsManager.ground_redId)) 
        orig_redClay.add(block); 
       if(block.getType().getData() 
        .equals(ConstantsManager.ground_blueId)) 
        orig_blueClay.add(block); 
      } 
     } 
    } 
} 

In der statischen Klasse ConstantsManager

public static final Material ground_material = Material.STAINED_CLAY; 

public static final int ground_blueId = 3; 
public static final int ground_redId = 14; 

Es sollte durch die 100 * 50 * 100 Volumen für rot oder blau suchen gefärbter Ton, Aufruf von ConstantsManager für die Material- und Farbwerte. Der Code kann erkennen, ob der Block Ton ist oder nicht, kann jedoch nicht erkennen, ob er rot oder blau ist. Was kann ich in meinem Code ändern, um die Tonfarben zu erkennen?

+0

was macht getData() geben? –

Antwort

2

Du bist Problem ist, dass Sie block.getType().getData() verwenden. Sie wollen

block.getData()

block.getType().getData() zu zurückkehren Class<? extends MaterialData> scheint zu verwenden, die die meisten ist definitiv entspricht nicht dem int, dass Sie versuchen, es zu vergleichen. (Nicht sicher, was diese Methode selbst zurückgibt)

Zusammenfassend sollte eine Ihrer if-Anweisungen wie folgt aussehen.

if (block.getData() == ConstantsManager.ground_redId)

Hinweis: Sie können nicht .equals auf primitive Typen Java-Daten verwenden, damit die ==

0

Nach einer schnellen Suche sollte die Block class eine öffentliche int-Variable namens blockID enthalten. Daher sollten Sie in der Lage sein, es zu nennen und gehen Sie wie folgt

if(block.getType().equals(ConstantsManager.ground_material)) 
{ 
    if(block.blockID == ConstantsManager.ground_blueId) 
    { 
     orig_blueClay.add(block); 
    } 
    else if(block.blockID == ConstantsManager.ground_redId) 
    { 
     orig_redClay.add(block); 
    } 
} 
Verwandte Themen