You are not logged in.

  • Login

[Bukkit] AutoUpdater

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

MarcSenpai

User / Kunde

  • "MarcSenpai" is male
  • "MarcSenpai" started this thread

Posts: 138

Location: Clover

Occupation: Schüler

  • Send private message

1

Tuesday, June 26th 2018, 8:55pm

AutoUpdater

AutoUpdater
Dieses Thema ist ein kompletter Edit zum AutoUpdater(Autoupdater 1/2 Release).
Inhasangabe:
1. Installation
2. Nötige änderungen
3. Erstellen der korrekten Webspaces
4. Wie es funktioniert
1. Erstellt eine extra klasse, diese könnt ihr nennen wie ihr wollt, dieses Code kopiert ihr dort hinein:

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
package me.marc.senpai.autoupdater.main;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import org.apache.commons.io.IOUtils;
import org.bukkit.Bukkit;





public class Utils {
	
	public static String version = "Eure-Version";
	public static String versionlink = "Euer-Version-Link";
	public static String downloadlink = "Euer-Download-Link";
	public static String newversion;
	
	public static void startautoupdater() {
		if(versionlink == null) {
			Bukkit.getConsoleSender().sendMessage("§cFailed by checking version...");
		}else
			Bukkit.getConsoleSender().sendMessage("§aChecking the version...");
		
		try {
			Utils.checkversion(new URL(versionlink));
		} catch (MalformedURLException e) {	
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}
		
		if(newversion.contains(version)) {
			
			Bukkit.getConsoleSender().sendMessage("§5No Updates found");
			return;
		}else {
			Bukkit.getConsoleSender().sendMessage("§6Downloading the new version");
File file = new File("plugins/name-eueres-plugins-mit-Groß-und-Kleinschreibung.jar");
		
		if(downloadlink ==  null) {
			Bukkit.getConsoleSender().sendMessage("§cFailed by downloading new version");
		}else
		if (!file.exists()) {
			Bukkit.getConsoleSender().sendMessage("§cPls rename the Autoupdater again in autoupdater");
			Bukkit.shutdown();
		}else
			
		Utils.downloadFile(file, downloadlink);
		}
	}
	
	
	
	
	
	public static void downloadFile(File destination, String url)
	  {
		try
		{
	  	HttpURLConnection connection = (HttpURLConnection)new URL(url).openConnection();
	  	connection.connect();
	  	
	  	FileOutputStream outputStream = new FileOutputStream(destination);
	  	InputStream inputStream = connection.getInputStream();
	  	byte[] buffer = new byte['E'];
	  	int readBytes = 0;
	  	while ((readBytes = inputStream.read(buffer)) > 0) {
	    	outputStream.write(buffer, 0, readBytes);
	  	}
	  	outputStream.close();
	  	inputStream.close();
	  	connection.disconnect();
		}
		catch (Exception localException) {}
	  }
	
	public static void checkversion(URL url) throws IOException {
		BufferedReader reader = null;
		StringBuilder builder = new StringBuilder(128000);
		
		try {
			reader = new BufferedReader(new InputStreamReader(url.openStream(), "UTF-8"));
			int zahl;
			char[]data = new char[1024];
			while((zahl = reader.read(data)) != -1) {
				builder.append(data, 0, zahl);
			}
		}finally {
			IOUtils.closeQuietly(reader);
		}
		newversion = builder.toString();
	}
}
Dann schreibt ihr in der Main im onEnable() teil hinein: "Eure-Klasse.startautoupdater();
2. Änderungen müsst ihr überall dortvornehmen wo irgendeine Stütze steht, also zumsammengezählt 4 mal, und alle Msgs die ihr verändert haben wollt.
3. Wenn ihr noch kein Webspace habt kann ich euch https://www.000webhost.com/ empfehlen.
Ihr erstellt eine neue seiten mit dem index.html dort schreibt ihr irgendwas hinein:
!!!Kein Hmtl gerüst, nur einen Wert!!!
4. Nun gut wie funktioniert das Ganze?
Dort wo version steht also der String schreibt ihr irgendwas hinein das ist aber egal.
Auf euerem Webspace den wir gerade erstellt haben, habt ihr eure index.html wo ein wert drine steht.
Der Code vergleicht beide "Strings", wenn sie gleich sind passiert nichts, wenn sie sich auch nur minimal unterscheiden
downloadet er die neue Version vom Plugin. Dazu müsst ihr IMMER das neue Plugin auf den Webspace hochladen. der Link muss irgendwie so aussehen:

Source code

1
https://eure-URL/Eure-Plugin-name.jar
Wenn ihr den Link bestätigt und es öffnet sich nichts außer ein PopUp fenster wo ihr es downloaden könnt seit ihr richtig.
Diesen gebt ihr als Download link ein. Dabei müsst ihr noch beachten das ihr den String version immer verändert.
Ich hoffe ich konnte ihn gut erklären.
MfG Marc :thumbsup:
MarcSenpai has attached the following file:
  • version.PNG (11.48 kB - 6 times downloaded - latest: Jul 8th 2018, 9:40pm)
In der kürze liegt die Würze
- Shakespeares | Unitygaming-FastFelix

This post has been edited 2 times, last edit by "MarcSenpai" (Jun 30th 2018, 1:38pm)


xtrumb

User / Kunde

  • "xtrumb" is male

Posts: 2,295

Location: hier

Occupation: Fachinformatiker für Systemintegration

Thanks: 16

  • Send private message

2

Wednesday, June 27th 2018, 8:07am

An sich war es mir persönlich hilfreich, da ich mich noch nie damit beschäftigen wollte.

Allerdings hätte ich noch eine Verbesserungsmöglichkeit:

Du könntest nämlich mit einer Forschleife den Plugins-Ordner durchgehen und mit .toLowerCase und .contains den Dateinamen bekommen.
So bist du unabhängiger, wie die Datei heißt und somit unabhängiger vom Serverbetreiber, falls er die Version zum Pluginnamen schreiben möchte.
Mit freundlichen Grüßen
TrueMB

Dienstleistungs Service
Unser Csgo Team

MarcSenpai

User / Kunde

  • "MarcSenpai" is male
  • "MarcSenpai" started this thread

Posts: 138

Location: Clover

Occupation: Schüler

  • Send private message

3

Wednesday, June 27th 2018, 8:04pm

Unrecht hast du damit ja nicht...
In der kürze liegt die Würze
- Shakespeares | Unitygaming-FastFelix

EuroCent

User / Kunde

  • "EuroCent" is male

Posts: 376

Location: Thüringen

Occupation: Vodafone Mitarbeiter

  • Send private message

4

Thursday, July 5th 2018, 11:45am

Dazu sollte man aber auch bedenken, dass Ihr auh einer Weißen Webseite einen Impressum hinterlegen solltet.
Sonst habt Ihr ganz schnell einen Abmahn-Anwalt an der Backe ^^

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