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

Dear visitor, welcome to Nitrado.net Prepaid Gameserver Community-Support - Archiv. If this is your first visit here, please read the Help. It explains in detail how this page works. To use all features of this page, you should consider registering. Please use the registration form, to register here or read more information about the registration process. If you are already registered, please login here.

ciaxx

User / Kunde

  • "ciaxx" is male
  • "ciaxx" started this thread

Posts: 346

Occupation: Schüler

  • Send private message

1

Wednesday, February 4th 2015, 10:20pm

Feld automatisch auswählen und Weizen pflanzen

Guten Abend,
ich suche momentan nach einer möglichkeit wie ich in meinem Plugin automatisch Locations angeben kann ohne diese alle manuell eintragen zu müssen. Also es geht darum das ich ein Weizenfeld habe das ungefähr ~30*20 Blöcke ist. Ich habe wenig Lust 600 Zeilen zu schreiben für jede einzelne Location die ich dann einer Liste hinzufüge. Zudem möchte ich an diesen Location dann Weizen "pflanzen" und direkt wachsen lassen. Ich habe das in meinen Test Versuchen so probiert doch das funktioniert nicht:

Java source code

1
2
3
4
						for(Location loc : plugin.locFeld1){
							loc.getBlock().setType(Material.CROPS);
							loc.getBlock().setData(CropState.RIPE.getData());
						}

Hat vielleicht jemand eine Idee?
(Die WorldGuard/WorldEdit API habe ich schon getestet doch hatte dort einige probleme weshalb ich den Codeteil rausgeworfen habe und suche nun eine alternative möglichkeit)

Vielen Dank

Gebauer_01

User / Kunde

Posts: 2,304

  • Send private message

2

Wednesday, February 4th 2015, 11:00pm

2 For-Schleifen für x und y

ciaxx

User / Kunde

  • "ciaxx" is male
  • "ciaxx" started this thread

Posts: 346

Occupation: Schüler

  • Send private message

3

Thursday, February 5th 2015, 6:05am

Wie genau muss das denn dann aussehen? Also ich glaube du meinst eine die x immer einen höher rechnet und eine die y immer einen höher rechnet doch wie komme ich an die Locations dazwischen und sag ihm wann er aufhören soll?

frickx

User / Kunde

  • "frickx" is male

Posts: 448

Location: Braunschweig <3

  • Send private message

4

Thursday, February 5th 2015, 10:59am

X und Z musst du dir angucken

Y ist nur die Höhe :)

ciaxx

User / Kunde

  • "ciaxx" is male
  • "ciaxx" started this thread

Posts: 346

Occupation: Schüler

  • Send private message

5

Thursday, February 5th 2015, 1:41pm

Okay doch wie müssen da die for-Schleifen aussehen? Also wie müsste man die aufbauen? (Habe bis jetzt nur mit for-Schleifen gearbeitet die mit einer Liste arbeiten, habe aber in Google gefunden das man dort auch eine Integer verwenden kann und den bei jedem durchlauf einen hochrechnet (also i++))

frickx

User / Kunde

  • "frickx" is male

Posts: 448

Location: Braunschweig <3

  • Send private message

6

Thursday, February 5th 2015, 2:27pm

Okay doch wie müssen da die for-Schleifen aussehen? Also wie müsste man die aufbauen? (Habe bis jetzt nur mit for-Schleifen gearbeitet die mit einer Liste arbeiten, habe aber in Google gefunden das man dort auch eine Integer verwenden kann und den bei jedem durchlauf einen hochrechnet (also i++))
for (int x = 0; x < maxX; x++)

natürlich musste 0 und maxX noch mitgeben / verändern

und in der schleife machste das für Z auch nochmal

ciaxx

User / Kunde

  • "ciaxx" is male
  • "ciaxx" started this thread

Posts: 346

Occupation: Schüler

  • Send private message

7

Thursday, February 5th 2015, 3:00pm

Okay ich wollte das jetzt probieren doch ich stehe vor einem problem. Ich habe das ganze jetzt erstmal so:

Java source code

1
2
3
4
5
6
Location loc = new Location(p.getWorld(), 150, 4, -147);					
int maxX = 37;
					
for (int x = 0; x < maxX; x++){
							
}

Wenn ich das richtig verstanden habe steht maxX für die länge des Feldes also wieweit er hochzählen soll doch wie zähle ich jetzt die Location hoch? (Ich glaube ich habe das falsch verstanden ...)

Anno35

User / Kunde

Posts: 1,223

Thanks: 3

  • Send private message

8

Thursday, February 5th 2015, 3:12pm

Java source code

1
2
3
for(int x = loc.getBlockX(); x < loc.getBlockX() + maxX; x++) {
//Das selbe für z
}

frickx

User / Kunde

  • "frickx" is male

Posts: 448

Location: Braunschweig <3

  • Send private message

9

Thursday, February 5th 2015, 3:27pm

Java source code

1
2
3
for(int x = loc.getBlockX(); x < loc.getBlockX() + maxX; x++) {
//Das selbe für z
}
Theoritischweise bräuchte er sich nur beide Punkte abspeichern (Anfangsblock und Endblock) und bräuchte nur darüber iterieren

ciaxx

User / Kunde

  • "ciaxx" is male
  • "ciaxx" started this thread

Posts: 346

Occupation: Schüler

  • Send private message

10

Thursday, February 5th 2015, 3:59pm

Okay ich habe das ganze jetzt so:

Java source code

1
2
3
4
5
6
7
8
9
10
11
12
for(int x = loc.getBlockX(); x < loc.getBlockX() + maxX; x++) {
							
	Location loc1 = new Location(p.getWorld(), x, loc.getBlockY(), loc.getBlockZ());
	loc1.getBlock().setType(Material.WOOD);
							
	for(int z = loc.getBlockZ(); z < loc.getBlockZ() + maxZ; z++) {
								
		Location loc2 = new Location(p.getWorld(), x, loc.getBlockY(), z);
		loc2.getBlock().setType(Material.WOOD);
								
	}
}

Da es aber nicht funktioniert habe ich es wohl wieder nicht richtig verstanden ...
(Tut mir leid wenn ich mich etwas dumm anstelle)

ciaxx

User / Kunde

  • "ciaxx" is male
  • "ciaxx" started this thread

Posts: 346

Occupation: Schüler

  • Send private message

11

Friday, February 6th 2015, 4:22pm

Push pls ;(

frickx

User / Kunde

  • "frickx" is male

Posts: 448

Location: Braunschweig <3

  • Send private message

12

Friday, February 6th 2015, 4:54pm

Anno und ich haben dir doch alles schon geasgt...

Zwei for-Schleifen und dann hast du dein Ergebnis

ciaxx

User / Kunde

  • "ciaxx" is male
  • "ciaxx" started this thread

Posts: 346

Occupation: Schüler

  • Send private message

13

Friday, February 6th 2015, 5:05pm

Ich habe das ganze ja oben probiert so wie ich es verstanden habe doch es funktioniert nicht ...

frickx

User / Kunde

  • "frickx" is male

Posts: 448

Location: Braunschweig <3

  • Send private message

14

Friday, February 6th 2015, 5:11pm

Ich habe das ganze ja oben probiert so wie ich es verstanden habe doch es funktioniert nicht ...
pack die location unter die z-Schleife

also mach loc1 weg

ciaxx

User / Kunde

  • "ciaxx" is male
  • "ciaxx" started this thread

Posts: 346

Occupation: Schüler

  • Send private message

15

Friday, February 6th 2015, 5:21pm

Es funktioniert vielen dank es funktioniert alles. Mein fertiger Code mit Weizen pflanzen sieht nun so aus:

Java 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
p.getServer().getScheduler().scheduleSyncDelayedTask(plugin, new Runnable() {
					
					@SuppressWarnings("deprecation")
					@Override
					public void run() {
						
						Location loc = new Location(p.getWorld(), 250, 4, -147);
						
						int maxX = 37;
						int maxZ = 22;
						
						for(int x = loc.getBlockX(); x < loc.getBlockX() + maxX; x++) {
							
							for(int z = loc.getBlockZ(); z < loc.getBlockZ() + maxZ; z++) {
								
								Location loco = new Location(p.getWorld(), x, loc.getBlockY(), z);
								Location locu = new Location(p.getWorld(), x, loc.getBlockY() - 1, z);
								
								locu.getBlock().setType(Material.SOIL);
								loco.getBlock().setType(Material.CROPS);
								
								loco.getBlock().setData(CropState.RIPE.getData());
								
							}
						}
					}
				}, 10*20);

This post has been edited 2 times, last edit by "ciaxx" (Feb 6th 2015, 5:50pm)


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