You are not logged in.

  • Login
Bitte besucht unser neues Forum unter https://forum.nitrado.net | Please visit our new Forum at https://forum.nitrado.net

Nono77

User / Kunde

  • "Nono77" is male
  • "Nono77" started this thread

Posts: 68

Thanks: 4

  • Send private message

1

Friday, August 5th 2016, 6:42pm

Hilfe beim programmieren!

Hallo
ich fange gerade an Plugins zu programmieren, dabei funktioniert etwas nicht un dich hoffe ihr könnt dabei mir helfen:
Ich möchte, das man mit /heal das Leben was in der config eingetragen hat bekommt, nur sterbe ich jedesmal!
Spigot 1.8.6
Mein Plugin: es geht nur um die herzen, dass andere nicht beachten :)

Spoiler Spoiler

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
package me.nono.info;

import java.util.HashMap;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerJoinEvent;
import org.bukkit.event.player.PlayerKickEvent;
import org.bukkit.event.player.PlayerQuitEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.plugin.java.JavaPlugin;

import net.md_5.bungee.api.ChatColor;

public class Info extends JavaPlugin implements Listener{
	
	HashMap<String, ItemStack[]> armor = new HashMap<>();
	HashMap<String, ItemStack[]> inventory = new HashMap<>();
	HashMap<String, Integer> exp = new HashMap<>();
	int high = 11;
	int countdown;

	@Override
	public void onEnable() {
		loadConfig();
		this.getServer().getPluginManager().registerEvents(this,  this);
		System.out.println("[Info] Plugin erfolgreich aktiviert!");
	}
	
	@Override
	public void onDisable() {
		System.out.println("[Info] Plugin erfolgreich deaktiviert");
		
	}
	public boolean onCommand(CommandSender sender, Command cmd, String cmdlabel, String[] args) {
		Player p = (Player) sender;
		
		if(cmd.getName().equalsIgnoreCase("info")) {
			p.sendMessage("§2[Info] §bDer Server gehört Nono");
			p.setHealth(10);
			p.setFoodLevel(20);
			p.sendMessage("§2[Info] §cDu hast nun 5 Herzen, bist aber nicht mehr hungrig!!!");
			return true;
			
		}
		if(cmd.getName().equalsIgnoreCase("clear")) {
			if(p.hasPermission("Info.clear")) {
				p.getInventory().clear();
				p.sendMessage("§2[Info] §bDein Inventar wurde geleert!");
				return true;
			}
			
		}
		if(cmd.getName().equalsIgnoreCase("Daten")) {
			if(args.length == 0) {
				p.sendMessage("§cBenutze /Daten <Youtube|Server>");
				return true;
			}
			if(args.length == 1) {
			if(args[0].equalsIgnoreCase("YouTube")) {
				p.sendMessage("§cDas ist mein YouTube Channel");
				return true;
				
			}
			if(args[0].equalsIgnoreCase("Server")) {
				p.sendMessage("§aHier sind Daten zu mein Server"); 
					return true;
			} else {
				p.sendMessage("§cBenutze /Daten <Youtube|Server>");
				return true;
			}
		} else {
			p.sendMessage("§cBenutze /Daten <Youtube|Server>");
			return true;
		}
	}
		if (cmd.getName().equalsIgnoreCase("Inventory")) {
			if (args.length == 0) {
				p.sendMessage("§cSchreibe: /Inventory save|get");
				return true;
			}
			if (args[0].equalsIgnoreCase("save")) {
				p.sendMessage("§2Dein Inventar wurde verstaut!");
				inventory.put(p.getName(), p.getInventory().getContents());
				armor.put(p.getName(), p.getInventory().getArmorContents());
				exp.put(p.getName(), p.getLevel());
				p.getInventory().clear();
				p.getInventory().setArmorContents(null);
				p.setLevel(0);
				return true;
			}
			if (args[0].equalsIgnoreCase("get")) {
				p.sendMessage("§2Du hast nun dein Inventar wiederbekommen!");
				ItemStack[] contents = inventory.get(p.getName());
				ItemStack[] armorcontents = armor.get(p.getName());
				Integer Level = exp.get(p.getName());
				p.getInventory().setContents(contents);
				p.getInventory().setArmorContents(armorcontents);
				p.setLevel(Level);
				
				return true;
			}
		}
		if(cmd.getName().equalsIgnoreCase("Back")) {
			Location loc = p.getLocation();
			p.sendMessage("§5Du wirst in 5 Sekunden zurück geportet!");
			Bukkit.getScheduler().scheduleSyncDelayedTask(this, new Runnable(){

				@Override
				public void run() {
					p.teleport(loc);
					p.sendMessage("§6Du wurdest zurück geportet!");
				}
				
			}, 20*5);
			return true;
		}
		if(cmd.getName().equalsIgnoreCase("Countdown")) {
			p.sendMessage("Der Countdown hat gestartet!");
			countdown = Bukkit.getScheduler().scheduleSyncRepeatingTask(this, new Runnable() {

				@Override
				public void run() {
					if(high != 1) {
						high --;
						Bukkit.broadcastMessage("§6Noch §c" + high + " §6Sekunde/n!" );
					} else {
						Bukkit.broadcastMessage("§cDer Wettkampf beginnt jetzt!");
						Bukkit.getScheduler().cancelTask(countdown);
						
					}
				}
			}, 0, 20);
			
			return true;	
		}
		if(cmd.getName().equalsIgnoreCase("Heal")) {
			String msg = getConfig().getString("Config.message");
			msg = msg.replace("[Player]", p.getName());
			p.sendMessage(ChatColor.translateAlternateColorCodes('&', msg));
			
			int herzen = getConfig().getInt("Config.lives");
			p.setHealth(herzen);
			
			return true;
		}

		return false;
	}

	@EventHandler
	public void onJoin(PlayerJoinEvent e) {
		Player p = e.getPlayer();
		if(p.isOp()) {
			e.setJoinMessage("§4[O]" + p.getName() + " §bist dem Spiel beigetreten!");
		} else {
			e.setJoinMessage("§a[S]" + p.getName() + " §bist dem Spiel beigetreten!");
		}
	} 
	@EventHandler
	public void onQuit(PlayerQuitEvent e) {
		e.setQuitMessage("§c" + e.getPlayer().getName() + " §bhat das Spiel verlassen");
	}
	@EventHandler
	public void onKick(PlayerKickEvent e) {
		e.setLeaveMessage("§2" + e.getPlayer().getName() + "§bwurde gekickt!");
		
	}
	public void loadConfig() {
		getConfig().options().copyDefaults(true);
		saveConfig();
	}
}


Die Plugin.yml

Spoiler Spoiler

Source code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
name: Info
version: 1.0
author: Nono
main: me.nono.info.Info
commands:
 	info:
      	description: Zeigt Server Info an
      	usage: </command>
 	clear:
      	description: Leert dein Inventar
      	usage: </command>
      	permission: Info.clear
      	aliases: [cl]
 	Daten:
      	description: Infos und Daten
      	usage: </command>
 	Inventory:
      	description: Inventar verstauen und wiederbekommen
      	usage: </command>
      	aliases: [inv]
 	Back:
      	description: portet dich zurueck
      	usage: cmd
 	Countdown:
      	description: Startet ein Countdown
      	usage: cmd
 	Heal:
      	description: Heilt dein Leben
      	usage: cmd

Die Config.yml

Spoiler Spoiler

Source code

1
2
3
Config:
  message: '&bDas Leben von &2[Player] &bwurde geheilt!' 
  lives: '20'


Ich hoffe ihr könnt mir helfen
MfG
Nono :)
MfG
Nono

Bei weiteren Nachfragen am besten Zitieren

Mein Minecraft Server: Nono.noip.me , CityBuild und Minigames lohnt sich vorbei zuschauen!

This post has been edited 2 times, last edit by "Nono77" (Aug 10th 2016, 10:24pm)


Obi_Maus

User / Kunde

  • "Obi_Maus" is male

Posts: 196

Location: NRW

Occupation: Vermessungstechniker

  • Send private message

2

Friday, August 5th 2016, 7:13pm

Versuch mal in der Config bei lives die ' ' zu entfernen, dass da steht lives: 20. Es kann sein, dass er die int nicht richtig lesen kann und deswegen deine Herzen auf null setzt, dich also tötet.

BlvckBytes

User / Kunde

  • "BlvckBytes" is male

Posts: 797

Location: (*blvckbytes).home

Occupation: Schüler -> HTL für Informationstechnologie und Netzwerktechnik

  • Send private message

3

Friday, August 5th 2016, 7:45pm

'text' oder "text" = String. Du möchtest aber eine Zahl bekommen, also mach die '' mal weg. Wie erstellst du die config, per #saveResource oder #saveConfig?

LG BlvckBytes

Nono77

User / Kunde

  • "Nono77" is male
  • "Nono77" started this thread

Posts: 68

Thanks: 4

  • Send private message

4

Friday, August 5th 2016, 10:13pm

OK vielen Dank, das man immer so etwas einfaches übersieht, über 45 minuten Frust xD
Ich benutze saveConfig, ist das wichtig welches man benutzt oder bringt es mehr?
MfG
Nono
MfG
Nono

Bei weiteren Nachfragen am besten Zitieren

Mein Minecraft Server: Nono.noip.me , CityBuild und Minigames lohnt sich vorbei zuschauen!

BlvckBytes

User / Kunde

  • "BlvckBytes" is male

Posts: 797

Location: (*blvckbytes).home

Occupation: Schüler -> HTL für Informationstechnologie und Netzwerktechnik

  • Send private message

5

Friday, August 5th 2016, 10:19pm

Naja saveResource bedeutet das du die config 1:1 aus dem src Ordner kopieren kannst, und du könntest sie mit meiner UTF8YamlConfiguration Class laden sodass Umlaute und Sonderzeichen möglich sind. Wenn du dich mit deiner aktuellen config auch zufriedengibst kannst du ja alles so lassen.

LG BlvckBytes

KingDome24

Moderator im Ruhestand

  • "KingDome24" is male

Posts: 7,437

Location: Österreich

Occupation: Schüler

Thanks: 237

  • Send private message

6

Sunday, August 7th 2016, 2:06pm

Wenn ich geholfen hab, freu ich mich über eine Danksagung.

Bitte besucht unser neues Forum unter https://forum.nitrado.net| Please visit our new Forum at https://forum.nitrado.net