Naja die eine Sache währe da YouTube. Aber ich empfehle trotzdem sich mit programmieren der Sprache Java auseinanderzusetzen, um kompliziertere Programme schreiben zu können!
Der Client:
Client:
public class Client {
private InetSocketAddress address;
public boolean isListen = false;
public static String name = "";
public Socket client;
public PrintWriter writer;
private Scanner scanner;
public Client(String hostname, int port) {
address = new InetSocketAddress(hostname, port);
}
public Client(String message) {
sendMessageToServer(message);
}
public Client() {}
public boolean connectToServer() {
try {
client = new Socket();
client.connect(address, 10000);
//Streams
scanner = new Scanner(new BufferedReader(new InputStreamReader(client.getInputStream())));
writer = new PrintWriter(client.getOutputStream());
//-------
System.out.println("Verbindung hergestellt");
System.out.println("Netzwerkverbindung hergestellt\n");
isListen = true;
return true;
} catch (Exception e) {
isListen = false;
e.printStackTrace();
System.out.println("Es ist ein Fehler aufgetreten! ["+ address.getHostName() +"/"+ address.getPort() +"]");
return false;
}
}
public void disconnect() {
if(isConnected()) {
try {
isListen = false;
client.close();
writer.close();
if(scanner != null) {
scanner.close();
}
} catch (IOException e1) {}
}
}
public void start() {
connectToServer();
Thread t = new Thread(new MessagesFromServerListener());
t.start();
}
public void sendMessageToServer(String message) {
writer.println(message);
writer.flush();
}
public boolean isConnected() {
if(client == null || client.isClosed()) {
return false;
}else
return true;
}
public class MessagesFromServerListener implements Runnable{
@Override
public void run() {
while(isListen) {
try {
if(scanner.hasNextLine()) {
String msg = scanner.nextLine();
System.out.println(msg);
}
} catch (Exception e) {
System.out.println("Nachicht konnte nicht empfangen werden!");
e.printStackTrace();
}
}
}
}
}
Als was denn
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import java.net.Socket;
import java.util.Scanner;
import de.chat.v0_0_1.gui.ChatGui;
public class Client {
private InetSocketAddress address;
private Socket client;
private static PrintWriter writer;
Scanner scanner;
public Client(String hostname, int port) {
address = new InetSocketAddress(hostname, port);
}
public void start() {
connectToServer();
Thread t = new Thread(new MessagesFromServerListener());
t.start();
}
public boolean connectToServer() {
try {
client = new Socket();
client.connect(address, 10000);
//Streams
scanner = new Scanner(new BufferedReader(new InputStreamReader(client.getInputStream())));
writer = new PrintWriter(client.getOutputStream());
//-------
ChatGui.incomingMessages.append("Netzwerkverbindung hergestellt\n");
return true;
} catch (Exception e) {
ChatGui.incomingMessages.append("Netzwerk Verbindung konnte nicht hergestellt werden\n");
return false;
}
}
public static void sendMessageToServer(String message) {
getWriter().println(message);
getWriter().flush();
}
public static PrintWriter getWriter() {
return writer;
}
public class MessagesFromServerListener implements Runnable{
@Override
public void run() {
try {
if(scanner.hasNext()) {
ChatGui.incomingMessages.append(scanner.nextLine() +"\n");
}
} catch (Exception e) {
ChatGui.incomingMessages.append("Nachicht konnte nicht empfangen werden!");
}
}
}
}
das ganze habe in einer Gui wenn ich auf ein Connect Button klieke rufe ich folgendes auf:
Client client = new Client("192.168.178.22", 5555);
client.start();
und wenn ich einen Sende Button anklicke:
Client.sendMessageToServer("Meine Nachicht");
Hir ist noch mal der Code ;)
import "alleImports"
public class DefaultGui {
private JPanel mainPanel;
private JPanel defaultPanel;
private JPanel loginPanel;
private JButton loginButton;
private JButton settingsButton;
private JButton registButton;
private JButton back;
public static void main(String[] args) {
JFrame jf = new JFrame();
jf.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
DefaultGui test = new DefaultGui();
test.addComponentToPane(jf.getContentPane());
jf.pack();
jf.setVisible(true);
}
public void addComponentToPane(Container pane) {
GridBagLayout gbl = new GridBagLayout();
GridBagConstraints gbc = new GridBagConstraints();
gbc.fill = GridBagConstraints.HORIZONTAL;
gbc.insets = new Insets(15, 5, 5, 5);
Dimension preferredSize = new Dimension(200, 50);
defaultPanel = new JPanel();
defaultPanel.setLayout(gbl);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight = 1;
loginButton = new JButton();
loginButton.setFont(new Font("Arial", Font.BOLD, 20));
loginButton.setText("Login");
loginButton.setPreferredSize(preferredSize);
loginButton.addActionListener(new ButtonHandler());
gbl.setConstraints(loginButton, gbc);
defaultPanel.add(loginButton);
gbc.gridx = 0;
gbc.gridy = 1;
gbc.gridwidth = 1;
gbc.gridheight = 1;
registButton = new JButton();
registButton.setFont(new Font("Arial", Font.BOLD, 20));
registButton.setText("Regestrieren");
registButton.setPreferredSize(preferredSize);
registButton.addActionListener(new ButtonHandler());
gbl.setConstraints(registButton, gbc);
defaultPanel.add(registButton);
gbc.gridx = 0;
gbc.gridy = 2;
gbc.gridwidth = 1;
gbc.gridheight = 1;
settingsButton = new JButton();
settingsButton.setFont(new Font("Arial", Font.BOLD, 20));
settingsButton.setText("Einstellungen");
settingsButton.setPreferredSize(preferredSize);
settingsButton.addActionListener(new ButtonHandler());
gbl.setConstraints(settingsButton, gbc);
defaultPanel.add(settingsButton);
loginPanel = new JPanel(gbl);
gbc.gridx = 0;
gbc.gridy = 0;
gbc.gridwidth = 1;
gbc.gridheight = 1;
back = new JButton();
back.setText("Zurück");
back.addActionListener(new ButtonHandler());
gbl.setConstraints(back, gbc);
loginPanel.add(back);
mainPanel = new JPanel(new CardLayout());
mainPanel.add(defaultPanel);
mainPanel.add(loginButton);
pane.add(mainPanel, BorderLayout.CENTER);
}
Weiß jemand warum mir wenn ich zum "mainPanel" nur das "defaultPanel" hinzufüge alles korrekt anzeigt und wenn ich zwei Panels zu dem "mainPanel" hinzufüge nur ein Teil?
Versuch ihn mal zu löschen und neu einzustellen
Hier ist das Bild zu dem Kommentar
Das?
oder das?
Gimp benutze ich selber auch und bin damit auch sehr zufrieden, da Gimp eine gute Oberfläche hat und einfach zu bedienen ist, Paint.net zwar auch aber Gimp hat da noch mehr Funktionen.
Ich hab das Problem gefunden ich habe in der Plugin.yml einfach api-version: 1.13 hinzugefügt
ah versuch es mal mit @e[type=minecraft:player, distance=2]
Versuch es mal statt @p mit dem richtigen Minecraft-name
Und hier die zwei Screenshots
Hi so solte das Funktionieren ;)
@EventHandler
public void onPlayerMove(PlayerMoveEvent e) {
Player p = e.getPlayer();
Material m = p.getLocation().getBlock().getType();
if(m == Material.WATER) {
p.setHealth(0);
}
}
oder du machst den Schaden kram so wie bei dir
Soll man den Namen eingeben können wenn ja dann so...
package Dein.Package;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.entity.Villager;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import Deine.Main.Class; //Wen nicht in der Main Class geschrieben
public class test {
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(sender instanceof Player) {
Player p = (Player)sender;
if(args.length == 1) {
if(p.isOp()) {
final Villager s = (Villager) p.getWorld().spawnEntity(p.getLocation(), EntityType.VILLAGER);
s.setCustomName("§5"+ args[0]);
s.setCustomNameVisible(true);
final Location loc = s.getLocation();
Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getPlugin(), new Runnable() {
@Override
public void run() {
s.teleport(loc);
s.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 35600, 35600, true, false));
}
}, 1L, 1L);
}
}else
p.sendMessage("§4Syntax: /DeinBefehl <VillagerName>");
}
return false;
}
}
wenn nicht sondern wirklich vom Programm aus random dann so...
package Dein.Package;
import java.util.Random;
import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.entity.Villager;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import Deine.Main.Class; //Wen nicht in der Main Class geschrieben
public class test {
public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
if(sender instanceof Player) {
Player p = (Player)sender;
if(args.length == 0) {
if(p.isOp()) {
final Villager s = (Villager) p.getWorld().spawnEntity(p.getLocation(), EntityType.VILLAGER);
String[] VillagerNames = {"name1", "name2", "name3", "name4", "name5"};
s.setCustomName("§5"+ new Random().nextInt(VillagerNames.length));
s.setCustomNameVisible(true);
final Location loc = s.getLocation();
Bukkit.getScheduler().scheduleSyncRepeatingTask(Main.getPlugin(), new Runnable() {
@Override
public void run() {
s.teleport(loc);
s.addPotionEffect(new PotionEffect(PotionEffectType.SLOW, 35600, 35600, true, false));
}
}, 1L, 1L);
}
}else
p.sendMessage("§4Syntax: /DeinBefehl");
}
return false;
}
}
Ich hoffe ich konnte dir Helfen wenn nich dann schreib es noch mal
Es könnte an der region liegen
setze einfach die region mit /bw setregion <game> loc1 und dann mit /bw setregion <game> loc2 aber du musst die region so setzen das du das spiel/Map in der region hast und die regionspunkte müssen gegenüber liegen einer rechts/links oben/unten und der andere links/rechts unten/oben muss halt wenn du es recht unten gemacht hast muss der andere lings oben sein.
Hallo soll sich das TNT sofort nach dem setzen zünden??
Wenn ja könnte ich dir weiter helfen wenn nein dan müste ich mal gucken
Ich habe nen fehler gefunden und zwarist es igend was mit dem Game-block wenn ich mich aufs bett stelle um das bett zu setzen beckomme ich die meldung das ich mich auf ein Game-block stellen oder ihn fixieren muss da habe ich den Game-block mit
/bw setgameblock <game> 1
geändert (auf stein) danach habe ich mich auf ihn gestellt da dieser vor dem bett ist und ich schaute das bett an und setzte das Bett
/bw setbed <game> <team>
danach tetse ich dies b es geht aber das Bett konnte man immer noch nicht abbauen dann versuchte ich es zufällig mit dem Stein vor dem Bett und da kamm die Nachicht das ich mein eigenes Bett nicht abbauen kann.
PS: Soll ich das, das nächste mal eine neue Frage auf machen?; hab erst wieder angefangen
Bitte nochmals um Hilfe!
danke!
Ok habe das Plugin aber funktioniert nicht habe der Spielergruppe die Permission "modifyworld.*" hinzugefügt
Geht diese Permission mondifyworld.* auch wenn ich nicht modifyworld installiert habe??