java - Copying one string from one place to another on a sign -
how copy entered in line 1 of sign? should either open or closed want move line 3. lines start 0 , go 3. if entered open on second line show open on last line
package me.mcmatt.shops; import java.util.arrays; import org.bukkit.chatcolor; import org.bukkit.material; import org.bukkit.sound; import org.bukkit.block.block; import org.bukkit.block.sign; import org.bukkit.entity.player; import org.bukkit.event.eventhandler; import org.bukkit.event.listener; import org.bukkit.event.block.action; import org.bukkit.event.block.signchangeevent; import org.bukkit.event.player.playerinteractevent; public class signs implements listener { @ eventhandler public void onsignchange(signchangeevent e) { if (e.getline(0).equalsignorecase("[shop]")) { block attached = e.getblock().getrelative(0, -1, 0); string name = e.getplayer().getdisplayname(); if (!(attached.gettype() == material.chest)) e.getplayer().sendmessage(chatcolor.red + "please place shop on chest!"); else { if (!e.getplayer().haspermission("shops.create")) e.getplayer().sendmessage(chatcolor.red + "you don't have permission create shop! (shops.create)"); else { if (!arrays.aslist("open", "closed").contains(e.getline(1).tolowercase())) { e.getplayer().sendmessage(chatcolor.red + "you must specify if shop open or closed on second line!"); } else { sign o = (sign) e.getblock().getstate(); e.setline(0, "§9[shop]"); e.setline(1, "§4" + name + "'s"); e.setline(2, "§4shop"); e.setline(3, o.getline(1)); e.getplayer().sendmessage(chatcolor.green + "shop created!"); e.getplayer().playsound(e.getplayer().getlocation(), sound.level_up, 10, 10); } } } } } @ eventhandler public void onplayerinteract(playerinteractevent e) { if (e.getaction().equals(action.right_click_block)) { player p = e.getplayer(); block b = e.getclickedblock(); material m = b.gettype(); if (!(m == material.sign_post)) { return; } else { sign sign = (sign) e.getclickedblock().getstate(); if ((sign.getline(0).equalsignorecase("§9[shop]"))) { p.sendmessage("i right clicked sign!"); } } } } }
just check lines being set, , set line 3 appropriate value:
//on signchangeevent 'event' event.setline(3, event.getline(1));
as you've done in question, check logic of rest of code make sure execute correctly.
personally wouldn't try set someone's input output directly, rather take have given me , use accordingly:
boolean closed = true; if ("open".equalsignorecase(event.getline(1)) { closed = false; } string linethree = closed ? "closed" : "open";
Comments
Post a Comment