Vis innlegg

Denne delen lar deg se alle innlegg laget av dette medlemmet. Merk at du bare kan se innlegg gjort i områder du har tilgang til.


Meldinger - Cybersyn

Sider: 1 2 3 [4] 5 6 ... 35
47
Minecraft / Bukkits død
« på: 03. Mai 2015, 13:14 pm »
Informasjon rundt Bukkits død er ganske vag og preget av personlige meninger. Derfor har jeg bestemt meg for å skrive om det så nøytralt som mulig.

Si gjerne i fra om jeg tar feil eller du er uenig i noe.

Bukkits lisens
CraftBukkit er lisensiert under LGPL. Bukkit er lisensiert under GPL. I teorien vil det si at programmer som linker med Bukkit (altså alle plugins) også må være lisensiert under GPL. Dette virker litt opp-ned - vanligvis lisensieres kjernen under GPL og APIet under LPGL. Bukkit har imidlertid sagt at de aldri vil bruke lisensen mot plugins, men det har ingen juridisk betydning.
http://bukkit.org/threads/what-license-is-the-bukkit-project-under.154/

Minecrafts EULA
Minecrafts EULA er ikke noe nytt, men juni 2014 bestemte Mojang seg plutselig for å bruke den mot servere som tar betalt (ekte penger) for fordeler i spillet. Dette gjorde mange servereiere sure.
Senere gjorde Mojang slik at man eksplisitt må godta EULAen for å kjøre Minecraft serveren.
https://account.mojang.com/documents/minecraft_eula
https://mojang.com/2014/06/lets-talk-server-monetisation/
https://mojang.com/2014/06/lets-talk-server-monetisation-the-follow-up-qa/
http://notch.net/2014/06/literally-worse-than-ea/

Nedleggelsen av Bukkit
21. august 2014 kunngjorde EvilSeph (grunnlegger av Bukkit, ansatt i Mojang) nedleggelsen av prosjektet.
http://bukkit.org/threads/bukkit-its-time-to-say.305106/

Mojang eier Bukkit
Som svar på EvilSephs kunngjøring, innrømmet _jeb (utvikler av Minecraft) at Mojang hadde kjøpt Bukkit når de ansatte Bukkit-teamet i 2012, og at EvilSeph dermed ikke hadde rett til å legge det ned. Dinnerbone (grunnlegger av Bukkit, ansatt i Mojang) tar på seg oppgaven å fortsette prosjektet.
http://bukkit.org/threads/bukkit-its-time-to-say.305106/
https://storify.com/lukegb/the-tale-of-bukkit-for-minecraft-1-8

DMCA
5. september 2014 sendte Wolverness (utvikler av CraftBukkit, ansatt i Multiplay) inn en DMCA takedown av CraftBukkit og Spigot-Server som han begrunner med at de linker med Minecraft Server som er proprietær programvare.
https://github.com/github/dmca/blob/master/2014-09-05-CraftBukkit.md
http://bukkit.org/threads/mojang-and-the-bukkit-project.309715/

48
Jeg sliter med å forhåndsvise innlegg her i forumet. Når jeg trykker "Forhåndsvisning" nedenfor, ved siden av "Legg til innlegg", sier forumet bare "Henter forhåndsvisning..." uten noe resultat.

Jeg bruker Firefox 37.0.2. Det ser ut til å virke i Chrome.

Kanskje http://www.simplemachines.org/community/index.php?topic=528614 er relevant?

49
Minecraft / Sv: IRC var en fiasko, men hva med SSH?
« på: 01. Mai 2015, 00:03 am »
Da er det jo ikke rart du ikke forstår. Player er et interface, ser du. Alle metodene er abstrakte - tomme og ubrukelige. Klasser som arver fra et interface må implementere alle metodene. Det eneste Player selv inneholder, er regler for hvordan subklasser ser ut og oppfører seg.

Player er en del av Bukkit, et API som er designet for å representere forskjellige implementeringer av Minecraft serveren (først og fremst, men ikke kun CraftBukkit). Bukkit har også regler for hvordan implementeringer skal se ut og oppføre seg. For eksempel bestemmer Bukkit at implementeringen må sørge for at Bukkit.getPlayer(UUID) returnerer et objekt som følger reglene til Player.

I de fleste tilfeller representerer Bukkit CraftBukkit. Ved å fordøye kildekoden til CraftBukkit kan vi skimte at Bukkit.getPlayer(UUID) som regel er en instans av CraftPlayer, som implementerer Player. Men siden CraftPlayer ikke er en del av APIet har man ikke grunnlag for å vite dette, og det regnes som veldig dårlig idé å bruke funksjoner fra CraftBukkit uten at det foregår gjennom APIet.

En annen ting å tenke på er at man aldri kaller konstruktøren til Player - Player er abstrakt og har ingen konstruktør. Man kaller APIet, som gir deg en instans av en ukjent klasse som implementerer Player. Derfor må man bruke en form for proxy for å omdirigere de interessante metodene fra Player-instansen. Oftest vil man bruke dekoratørmønsteret, men i tilfelle interfacet er stort, noe man trygt kan si at Player er, blir det forferdelig rotete å bruke dekoratørmønsteret.

Javas refleksjon går ut på å bruke eller manipulere klasser på en måte som bestemmes ved runtime. Refleksjon er ikke mulig i programmeringsspråk som C og C++.

Klokka er mye nå...

Dokumentasjon på Player
Kildekoden til Player
Kildekoden til CraftPlayer

50
Minecraft / Sv: IRC var en fiasko, men hva med SSH?
« på: 30. April 2015, 16:25 pm »
Dekoratørmønsteret:
Kode: [Velg]
Player proxy = new MyPlayer(getServer().getPlayer("eksempel"));

class MyPlayer implements Player {
  Player inner;
  MyPlayer(Player inner) {
    this.inner = inner;
  }
  // interessant funksjon
  @Override
  void sendMessage(String msg) {
    // skriv til SSH-strøm
  }
  // uinteressant funksjon
  @Override
  boolean hasPermission(String perm) {
    return this.inner.hasPermission(perm);
  }
  // uinteressant funksjon ganger 100; 500 stygge linjer
}

Refleksjon:
Kode: [Velg]
import java.lang.reflect.InvocationHandler;
import java.lang.reflect.Method;
import java.lang.reflect.Proxy;

Player proxy = (Player) Proxy.newProxyInstance(Player.class.getClassLoader(), new Class[] { Player.class }, new MyInvocationHandler(getServer().getPlayer("eksempel")));

class MyInvocationHandler implements InvocationHandler {
  Player inner;
  MyInvocationHandler(Player inner) {
    this.inner = inner;
  }
  @Override
  Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
    if (method.getName().equals("sendMessage")) {
      // skriv til SSH-strøm
    }
    else {
      return method.invoke(inner, args);
    }
  }
}

51
Minecraft / Sv: IRC var en fiasko, men hva med SSH?
« på: 29. April 2015, 23:18 pm »
Det ser ut som det er en bedre idé å implementere Player. Å bruke dekorasjonsmønsteret her vil medføre 500+ linjer med vedlikeholdsuvennlig kode. Å bruke refleksjon ser ut som en bedre idé, men siden jeg kommer fra C er jeg nødt til å være skeptisk til det. Tips?

52
If you install JRE 7 alongside JRE 8, you'll probably want to inspect the PATH environment variable to make sure JRE 7 doesn't steal the spotlight.

53
Minecraft / Sv: Bugs - la oss hjelpe!
« på: 19. April 2015, 17:19 pm »
Hva med å fikse TipsPlugin? Egentlig en helt triviell plugin men samtidig den som irriterer meg mest. En ting er at æøå driver meg til vannvidd
Hvorfor bruker den Scanner? Jeg fikk ÆØÅ til å virke med FileReader. https://github.com/Ano-Tech-Computers/TipsPlugin/releases/tag/v2.0

54
Minecraft / Sv: "Jeg vil bli unbannet"-søknader
« på: 12. April 2015, 09:31 am »
Hei, jeg har lest, og jeg skjønner ingenting. Hvis Sanoy23 har griefet, hvorfor mener du iostanes/anne4321 skal bannes og Sanoy23 unbannes? Det gir jo ingen mening. Hvis du faktisk er den du utgir deg for å være så håper jeg du ikke ber om dette fordi noen mobber eller plager deg. Send meg gjerne en PM i så fall.
iostanes ga en mer detaljert forklaring in-game i går. Slik jeg har forstått det er iostanes og Sanoy23 venner. iostanes hadde bygd et hus. For en god stund siden ble Sanoy bannet av deg. I følge iostanes var årsaken at han hadde ødelagt huset. Siden de er venner (og kanskje har tatt opp saken AFK?), mener iostanes at han skal bli unbannet.

Hvorfor han mener at han selv skal bannes vet jeg ikke...

55
Minecraft / Sv: Bugs - la oss hjelpe!
« på: 07. April 2015, 17:36 pm »
Har du oppdatert Eclipse? IIRC virker Java 8 bare med 4.4 "Luna" eller nyere.

56
Minecraft / Sv: Bugs - la oss hjelpe!
« på: 06. April 2015, 22:14 pm »
Koden trenger JDK 1.7 for å fungere. Seriøst, jeg får det ikke til med 1.8. Vet du hvordan? Skriv i vei. Jeg må bruke 1.7.
Hos meg kompilerer det fint på JDK 8. Hva skjer når du prøver?

57
Minecraft / Sv: IRC var en fiasko, men hva med SSH?
« på: 29. Mars 2015, 20:18 pm »
jo, jeg snublet nemlig over en plugin som er nødt til å gjøre dette:
http://dev.bukkit.org/bukkit-plugins/sudo/

Vet du hvor jeg kan finne kildekoden?



Hva med en klasse som implementerer både OfflinePlayer og CommandSender (og noen spiller-relaterte småklasser)? Den kan "pakke inn" en instans av OfflinePlayer som hentes ved å kalle Bukkit.getServer().getOfflinePlayer(UUID) og omdirigere alle de uinteressante funksjonene til denne.



Hvorfor i all verden implementerer ikke OfflinePlayer Permissible? Jeg må implementere Permissible. Til hvor kan jeg omdirigere Permissible-funksjoner? Har APIet funksjoner som behandler permissions uten et Permissible-objekt? Eller er det en annen måte å få tak i et Permissible-objekt?

EDIT: Det ser ut som om PermissibleBase gjør det jeg ønsker

58
Minecraft / Sv: IRC var en fiasko, men hva med SSH?
« på: 29. Mars 2015, 14:34 pm »
Å implementere Player burde være helt unødvendig, det burde holde å definere en ny instans med innhold nok til å overbevise chat-relatert kode om at meldingen kom fra en spiller som bare tilfeldigvis ikke eksisterer noe sted.
Kode: [Velg]
Player p = new Player()
Man kan jo ikke instansiere en abstrakt klasse? CraftPlayer implementerer jo Player, men den er ikke en del av APIet.

Men... strengt tatt burde det ikke engang være nødvendig å ha en spiller som avsender, jeg har mange plugins som genererer chat-meldinger anonymt og det er trivielt å få slike meldinger til å se ut som de kommer fra en spiller.

Tanken er SSH-brukere også skal kunne utføre kommandoer.

59
Minecraft / Sv: IRC var en fiasko, men hva med SSH?
« på: 29. Mars 2015, 01:19 am »
Ser ut som this.getServer().getPluginManager().callEvent(event); er alt som skal til...
Men vil det få selve CraftBukkit til å tro at den kalles "fra innsiden"? Er det ikke bare plugins som lytter til events?

Hvis det viser seg å virke, vil jeg jo kalle PlayerLoginEvent når en spiller logger inn. Må jeg implementere Player helt fra scratch? For man skal vel helst unngå å kompilere med craftbukkit.jar?



Et annet problem er at SSH-serveren ikke varsler pluginen om inkommende data. Jeg har kommet opp med disse løsningene:
  • Hvert skall (hver tilkobling) spawner en tråd som kontinuerlig sjekker for inkommende data
  • Pluginen spawner én enkel tråd som kontinuerlig sjekker for inkommende data i alle skall
  • Pluginen sjekker for inkommende data i alle skall når den mottar ticks fra Bukkit/Spigot-API
Jeg er ikke så veldig erfaren med flertrådet programmering, så jeg er usikker på hvilken løsning som veier minst.

EDIT: Det er også verdt å nevne at det er Apache SSHD som styrer med SSH. SecureChat er bare et tynt lag som kobler Apache SSHD og Spigot sammen.

60
Minecraft / Sv: Rapportering av feil på serveren
« på: 28. Mars 2015, 17:54 pm »
Også monstre kan spawne på kreativkartet. I hvertfall fra mob spawner.




TelePlugin oppgir WorldGuard som dependency. Burde den ikke være soft-dependency?

Sider: 1 2 3 [4] 5 6 ... 35