Seite 1 von 1

[Closed] Eisentüren öffnen wie holztüren

BeitragVerfasst: Fr 22. Apr 2016, 14:47
von Letsplaybar
hallo ich suche schon den ganze zeit nach dem Code um eine Eisentür mit einen einfachen klick zuöffnen.
das hab ich schon probiert:
Code: Alles auswählen
  1. if(loc.getBlock().getState() instanceof Door){
  2.                         Door d= (Door) loc.getBlock().getState();
  3.                         d.setOpen(!d.isOpen());
  4.                      }


doch leider funktioniert dieser Code nicht mit der Eisentür.
Danke schon mal für die Hilfe.

Edit* der Code Funkt nicht weil man ne Eisentür nicht zu door casten kann steht im Fehler loc.

Re: Eisentüren öffnen wie holztüren

BeitragVerfasst: Sa 23. Apr 2016, 12:18
von CraftAttack
wie hast du es dann gemacht ?

Re: Eisentüren öffnen wie holztüren

BeitragVerfasst: Sa 23. Apr 2016, 12:30
von Letsplaybar
na den Code hab ich doch gepostet und den hab ich im PlayerInteractEvent aufgerufen.

Re: Eisentüren öffnen wie holztüren

BeitragVerfasst: Sa 23. Apr 2016, 13:35
von CraftAttack
Letsplaybar hat geschrieben:na den Code hab ich doch gepostet und den hab ich im PlayerInteractEvent aufgerufen.

zu was castest du dann die Tür ?

Re: Eisentüren öffnen wie holztüren

BeitragVerfasst: Sa 23. Apr 2016, 14:05
von Letsplaybar
Code: Alles auswählen
  1. if(loc.getBlock().getState() instanceof Door){
  2.                         Door d= (Door) loc.getBlock().getState();
  3.                         d.setOpen(!d.isOpen());
  4.                      }


Hier noch mal den Code da wird der Blockstate von den man klickt und Dessen State eine Door ist zur Door gecastet. und von einer Eisentür ist prackticherweise der State normalerweise eine Tür.

Re: Eisentüren öffnen wie holztüren

BeitragVerfasst: Sa 23. Apr 2016, 19:36
von Kampfprofessor
Du kannst es ja mal mit dem folgenden Code ausprobieren.

Code: Alles auswählen
  1. BlockState state = block.getState();
  2. Openable openable = (Openable) state.getData();
  3. openable.setOpen(true);
  4. state.setData((MaterialData) openable);
  5. state.update();

Re: Eisentüren öffnen wie holztüren

BeitragVerfasst: Sa 23. Apr 2016, 20:31
von Letsplaybar
Danke hat Funktioniert. musste den Code zwar noch bisschen umschreiben damit man auch oben klicken kann zum öffnen aber dann hat es Funktioniert

Re: Eisentüren öffnen wie holztüren

BeitragVerfasst: Sa 23. Apr 2016, 20:34
von Letsplaybar
hier nochmal der geänderte Code:
Code: Alles auswählen
  1. if(b.getType().equals(Material.IRON_DOOR_BLOCK)|| b.getType().equals(Material.IRON_TRAPDOOR)){
  2.             Location loc = b.getLocation();
  3.             Location loc2 = loc.clone();
  4.             loc2.subtract(0,1,0);
  5.             if(loc2.getBlock().getType().equals(Material.IRON_DOOR_BLOCK)){
  6.                loc = loc2.clone();
  7.             }
  8.             BlockState state = loc.getBlock().getState();
  9.             Openable openable = (Openable) state.getData();
  10.             openable.setOpen(!openable.isOpen());
  11.             state.setData((MaterialData) openable);
  12.             state.update();
  13.          }