• Es freut uns dass du in unser Minecraft Forum gefunden hast. Hier kannst du mit über 130.000 Minecraft Fans über Minecraft diskutieren, Fragen stellen und anderen helfen. In diesem Minecraft Forum kannst du auch nach Teammitgliedern, Administratoren, Moderatoren , Supporter oder Sponsoren suchen. Gerne kannst du im Offtopic Bereich unseres Minecraft Forums auch über nicht Minecraft spezifische Themen reden. Wir hoffen dir gefällt es in unserem Minecraft Forum!

Plugin Problem bei editierbaren SG Kisten Plugin

KingCopyHD

Minecrafter
Registriert
8 September 2019
Beiträge
29
Diamanten
300
Hey Leute ich habe ein Problem mit einem Plugin ich programmiere noch nicht so lange und schaue deshalb viele Tutorials und schreibe sie eigentlich nur ab und bei einem Plugin hab ich ein Problem. Es ist ein Sg Kisten plugin mit random Inhalt und mann kann ihn über die config ändern mit chance , Items und wieviel davon hier der SourceCode:

1567930063605.png



1567930092275.png



1567930113543.png



Hier meine Main:


1567930136575.png




1567930147731.png



Hier die Fehlermeldung wenn ich versuche denn Redstoneblock anzuklicken:

1567930223882.png



und hier die Config:

1567930254467.png



Ich weiss es ist sehr viel aber bitte bitte ich brauche dabei echt Hilfe!
 

KingCopyHD

Minecrafter
Registriert
8 September 2019
Beiträge
29
Diamanten
300
jetzt bekomme ich bei dem size!= ein Fehler
warte hier nochmal die fertigen Codes:
ChestListener:

Javascript:
package de.Jason.Skywars.listener;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

import de.Jason.Skywars.main.Main;


public class ChestListener implements Listener {
        
    private Main plugin;

    public ChestListener (Main plugin) {
        this.plugin = plugin;
    }
    
    //RESSOURCES
    public HashMap<Location, Inventory> sgchests = new HashMap<>();
    
    @EventHandler   
    public void onInteract(PlayerInteractEvent e) {
        Player p = e.getPlayer();
        
        if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {
            if(e.getClickedBlock().getType() == Material.REDSTONE_BLOCK) {
                Location loc = e.getClickedBlock().getLocation();
                
                if(sgchests.containsKey(loc)) {
                    p.openInventory(sgchests.get(loc));
                    return;
                } else {
                    
                    Random r = new Random();
                    int l = r.nextInt(15);
                    
                    Inventory inv = Bukkit.createInventory(null, InventoryType.CHEST);
                    List<ItemStack> items = new ArrayList<>();
                    
                    for(String all : plugin.getConfig().getStringList("values")) {
                        int ID     = 0;
                        int subID  = 0;
                        int amount = 0;
                        int chance = 0;
                        
                        
                        if(all.contains(",")) {
                            String[]array= all.split(";");
                            if(array.size!=4)
                            {
                                return;
                            }
                             ID = Integer.valueOf(array[0]);
                                String a = array[1];
                                subID = Integer.valueOf(a);
                                amount = Integer.valueOf(array[2]);
                                chance = Integer.valueOf(array[3]);
                        }
                        
                        
                        for(int i = 0; i < chance; i++) {
                            items.add(new ItemStack(ID, amount, (short) subID));
                        }
                        
                    }
                    
                    while(l != 0) {
                        l--;
                        
                        Random r2 = new Random();
                        
                        Random r3 = new Random();
                        
                        int n2 = r2.nextInt(27);
                        
                        int n3 = r3.nextInt(items.size());
                        
                        inv.setItem(n2, items.get(n3));
                    }
                    
                    sgchests.put(loc, inv);
                    p.openInventory(sgchests.get(loc));
                    return;
                    
                }
                
            }
        }
    }
 }

Main:

Javascript:
package de.Jason.Skywars.main;

import java.util.ArrayList;
import java.util.List;

import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
import org.bukkit.plugin.PluginManager;
import org.bukkit.plugin.java.JavaPlugin;

import de.Jason.Skywars.commands.ReportCommand;
import de.Jason.Skywars.commands.SetupCommand;
import de.Jason.Skywars.commands.StartCommand;
import de.Jason.Skywars.commands.SupportCommand;
import de.Jason.Skywars.gamestates.GameState;
import de.Jason.Skywars.gamestates.GameStateManager;
import de.Jason.Skywars.listener.ChestListener;
import de.Jason.Skywars.listener.PlayerLobbyConnectionListener;

public class Main extends JavaPlugin {
    
    public static final String PREFIX = "§b§lSky§d§lWars §f| §r",
                               NO_PERMISSION = PREFIX + "§cDazu fehlen dir die Permissions";
    
    private GameStateManager gameStateManager;
    private ArrayList<Player> players;
    
    @Override
    public void onEnable() {
        gameStateManager = new GameStateManager(this);
        players = new ArrayList<>();
        
        gameStateManager.setGameState(GameState.LOBBY_STATE);
                
        init(Bukkit.getPluginManager());
        System.out.println("[SkyWars]: Das Plugin wurde gestartet!");
        
        loadConfig();
    }
    
    private void init(PluginManager pluginManager) {
        getCommand("setup").setExecutor(new SetupCommand(this));
        getCommand("start").setExecutor(new StartCommand(this));
        getCommand("support").setExecutor(new SupportCommand(this));
        getCommand("report").setExecutor(new ReportCommand(this));
        
        pluginManager.registerEvents(new PlayerLobbyConnectionListener(this), this);
        this.getServer().getPluginManager().registerEvents(new ChestListener(this), this);
    }
    
    @Override
    public void onDisable() {
        System.out.println("[SkyWars]: Das Plugin wurde beendet!");
    }
    
    public GameStateManager getGameStateManager() {
        return gameStateManager;
    }
    
    public ArrayList<Player> getPlayers() {
        return players;
    }
    
    private void loadConfig() {
        getConfig().options().copyDefaults(true);
        
        List<String> values = getConfig().getStringList("values");
        
        //ID;subID;amount;chance
        
        values.add("264;0;1;1");
        values.add("261;0;1;1");
        values.add("267;0;1;1");
        getConfig().set("values", values);
        
        saveConfig();
    }

}
 

KingCopyHD

Minecrafter
Registriert
8 September 2019
Beiträge
29
Diamanten
300
ich habe mal versucht es zu length zu ändern weil das mir vorgeschlagen wurde und habe es getestet. Bekomme jetzt keine Fehlermeldung mehr aber ein Inventar öffnet sich auch nicht wenn ich denn Redstoneblock anklicke
---
aber es geht denke ich mal in die richtige Richtung ich bin dir sehr dankbar
 
Zuletzt bearbeitet von einem Moderator:

Avankziar

Schafhirte
Registriert
12 Februar 2018
Beiträge
135
Alter
33
Diamanten
324
Minecraft
Avankziar
Biddö... am Anfang hatte ich auch immer sowas, man lernt halt nie aus ^^

Aber Ok, schauen wir auch danach, weil bisher war nur der ArrayFehler im Fokus...
Also erstmal, wurde die Location korrekt abgespeichert?
Dann, das hier kommt mir irgendwie nicht ganz korrekt vor:
Code:
public HashMap<Location, Inventory> sgchests = new HashMap<>();

sollte dass nicht besser

public HashMap<Location, Inventory> sgchests = new HashMap<Location, Inventory>();

sein? oder irre ich mich da?

Dann dass hier ist nicht korrekt:
int n2 = r2.nextInt(27);
denn ein Chest Inventar hat zwar 27 Slots, aber die fangen mit 0 an, also ist der höchste Slot 26...

anstatt
p.openInventory(sgchests.get(loc));
würde ich
p.openInventory(inv);
machen

Falls das alles net Hilft, try and Error mit System.out.println("Dein Debugging Text hier");
Die packst du einfach vor und nach if Abfragen um zu schauen, ob der Code überhaupt soweit kommt^^
 
Registriert
10 Dezember 2017
Beiträge
161
Alter
26
Diamanten
322
Minecraft
DerFrZocker
[Code: ]
public HashMap<Location, Inventory> sgchests = new HashMap<>();

sollte dass nicht besser

public HashMap<Location, Inventory> sgchests = new HashMap<Location, Inventory>();

sein? oder irre ich mich da?[/Code: ]

Das passt so, ist eine funktion die in java 7 oder 8 eingeführt wurde, nennt sich diamond operator. Und soll das schreiben solcher Sachen vereinfachen.
 

KingCopyHD

Minecrafter
Registriert
8 September 2019
Beiträge
29
Diamanten
300
So:

Javascript:
package de.Jason.Skywars.listener;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

import de.Jason.Skywars.main.Main;


public class ChestListener implements Listener {
        
    private Main plugin;

    public ChestListener (Main plugin) {
        this.plugin = plugin;
    }
    
    //RESSOURCES
    public HashMap<Location, Inventory> sgchests = new HashMap<Location, Inventory>();
    
    @EventHandler   
    public void onInteract(PlayerInteractEvent e) {
        Player p = e.getPlayer();
        
        if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {
            if(e.getClickedBlock().getType() == Material.REDSTONE_BLOCK) {
                Location loc = e.getClickedBlock().getLocation();
                
                if(sgchests.containsKey(loc)) {
                    p.openInventory(sgchests.get(loc));
                    return;
                } else {
                    
                    Random r = new Random();
                    int l = r.nextInt(15);
                    
                    Inventory inv = Bukkit.createInventory(null, InventoryType.CHEST);
                    List<ItemStack> items = new ArrayList<>();
                    
                    for(String all : plugin.getConfig().getStringList("values")) {
                        int ID     = 0;
                        int subID  = 0;
                        int amount = 0;
                        int chance = 0;
                        
                        
                        if(all.contains(",")) {
                            String[]array= all.split(";");
                            if(array.length!=4)
                            {
                                return;
                            }
                             ID = Integer.valueOf(array[0]);
                                String a = array[1];
                                subID = Integer.valueOf(a);
                                amount = Integer.valueOf(array[2]);
                                chance = Integer.valueOf(array[3]);
                        }
                        
                        
                        for(int i = 0; i < chance; i++) {
                            items.add(new ItemStack(ID, amount, (short) subID));
                        }
                        
                    }
                    
                    while(l != 0) {
                        l--;
                        
                        Random r2 = new Random();
                        
                        Random r3 = new Random();
                        
                        int n2 = r2.nextInt(26);
                        
                        int n3 = r3.nextInt(items.size());
                        
                        inv.setItem(n2, items.get(n3));
                    }
                    
                    sgchests.put(loc, inv);
                    p.openInventory(inv);
                    return;
                    
                }
                
            }
        }
    }
 }

ich habs getestet jetzt bekomme ich wieder eine Fehlermeldung :

Code:
        at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:226) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PlayerInteractManager.interact(PlayerInteractManager.java:463) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:724) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:50) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:80) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_221]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_221]
        at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:696) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:634) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:537) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
Caused by: java.lang.IllegalArgumentException: bound must be positive
        at java.util.Random.nextInt(Unknown Source) ~[?:1.8.0_221]
        at de.Jason.Skywars.listener.ChestListener.onInteract(ChestListener.java:89) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_221]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_221]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_221]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_221]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        ... 16 more
 

Avankziar

Schafhirte
Registriert
12 Februar 2018
Beiträge
135
Alter
33
Diamanten
324
Minecraft
Avankziar
Jo, an der Fehlermeldung lesen wir:
int n3 = r3.nextInt(items.size());
bzw. spezifischer item.size() ist kein positiver Wert, er sollte aber einer sein...
also Schreib mal davor:
System.out.println("item Size ="+item.size());

Und schreib uns, was in der Console ausgegeben wird^^
 

KingCopyHD

Minecrafter
Registriert
8 September 2019
Beiträge
29
Diamanten
300
Ich hab jetzt mal was probiert ich habe ganz am Ende bei dem int n3 anstatt: int n3 = r3.nextInt(items.size()); das gemacht: int n3 = r3.nextInt(1);
jetzt öffnet sich ein Inventar aber ohne Inhalt

ja warte mache ich

bei item.size wird item rot makiert

it cannot be resolved
 

Avankziar

Schafhirte
Registriert
12 Februar 2018
Beiträge
135
Alter
33
Diamanten
324
Minecraft
Avankziar
Dann ist höchstwahrscheinlich das Item == null.
jetzt bleibt dann die Frage, wie wird das Item erstellt?

Aka mach mal aus:
Code:
for(int i = 0; i < chance; i++)
{
    items.add(new ItemStack(ID, amount, (short) subID));
}

das hier

for(int i = 0; i < chance; i++)
{
    ItemStack is = new ItemStack(ID, amount, (short) subID);
    items.add(is);
    System.out.println(is.toString);
}

und schreib und den Consolen Output
 

KingCopyHD

Minecrafter
Registriert
8 September 2019
Beiträge
29
Diamanten
300
jetzt wird toString rot makiert
----
toString cannot be resolved or is not a field
und das was ich geändert habe geht auch nd mehr:

Code:
       at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:305) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:226) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PlayerInteractManager.interact(PlayerInteractManager.java:463) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:724) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:50) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:80) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_221]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_221]
        at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:696) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:634) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:537) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
Caused by: java.lang.IndexOutOfBound***ception: Index: 0, Size: 0
        at java.util.ArrayList.rangeCheck(Unknown Source) ~[?:1.8.0_221]
        at java.util.ArrayList.get(Unknown Source) ~[?:1.8.0_221]
        at de.Jason.Skywars.listener.ChestListener.onInteract(ChestListener.java:91) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_221]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_221]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_221]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_221]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        ... 16 more
 
Zuletzt bearbeitet von einem Moderator:

Avankziar

Schafhirte
Registriert
12 Februar 2018
Beiträge
135
Alter
33
Diamanten
324
Minecraft
Avankziar
Das hört sich alles danach an, dass überhaupt kein Item generiert wird und in die HashMap gelegt wird...
Das bedeutet, du muss dir ne andere Methode für
for(int i = 0; i < chance; i++)
{
items.add(new ItemStack(ID, amount, (short) subID));
}
ausdenken, da anscheinend das nicht geht...
 

KingCopyHD

Minecrafter
Registriert
8 September 2019
Beiträge
29
Diamanten
300
hab ich ja gemacht irgendwie ist das voll komisch weil sich jetzt die Fehlermeldung ergibt:

Code:
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:305) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:62) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.SimplePluginManager.fireEvent(SimplePluginManager.java:502) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:487) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at org.bukkit.craftbukkit.v1_8_R1.event.CraftEventFactory.callPlayerInteractEvent(CraftEventFactory.java:226) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PlayerInteractManager.interact(PlayerInteractManager.java:463) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PlayerConnection.a(PlayerConnection.java:724) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:50) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PacketPlayInBlockPlace.a(PacketPlayInBlockPlace.java:80) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.PacketHandleTask.run(SourceFile:13) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source) [?:1.8.0_221]
        at java.util.concurrent.FutureTask.run(Unknown Source) [?:1.8.0_221]
        at net.minecraft.server.v1_8_R1.MinecraftServer.z(MinecraftServer.java:696) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.DedicatedServer.z(DedicatedServer.java:316) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.y(MinecraftServer.java:634) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at net.minecraft.server.v1_8_R1.MinecraftServer.run(MinecraftServer.java:537) [spigot.jar:git-Spigot-c3c767f-33d5de3]
        at java.lang.Thread.run(Unknown Source) [?:1.8.0_221]
Caused by: java.lang.IndexOutOfBound***ception: Index: 0, Size: 0
        at java.util.ArrayList.rangeCheck(Unknown Source) ~[?:1.8.0_221]
        at java.util.ArrayList.get(Unknown Source) ~[?:1.8.0_221]
        at de.Jason.Skywars.listener.ChestListener.onInteract(ChestListener.java:92) ~[?:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_221]
        at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_221]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) ~[?:1.8.0_221]
        at java.lang.reflect.Method.invoke(Unknown Source) ~[?:1.8.0_221]
        at org.bukkit.plugin.java.JavaPluginLoader$1.execute(JavaPluginLoader.java:301) ~[spigot.jar:git-Spigot-c3c767f-33d5de3]
        ... 16 more
 

KingCopyHD

Minecrafter
Registriert
8 September 2019
Beiträge
29
Diamanten
300
Stimmt:

Javascript:
package de.Jason.Skywars.listener;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Random;

import org.bukkit.Bukkit;
import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.Action;
import org.bukkit.event.inventory.InventoryType;
import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.ItemStack;

import de.Jason.Skywars.main.Main;


public class ChestListener implements Listener {
        
    private Main plugin;

    public ChestListener (Main plugin) {
        this.plugin = plugin;
    }
    
    //RESSOURCES
    public HashMap<Location, Inventory> sgchests = new HashMap<Location, Inventory>();
    
    @EventHandler   
    public void onInteract(PlayerInteractEvent e) {
        Player p = e.getPlayer();
        
        if(e.getAction() == Action.RIGHT_CLICK_BLOCK) {
            if(e.getClickedBlock().getType() == Material.REDSTONE_BLOCK) {
                Location loc = e.getClickedBlock().getLocation();
                
                if(sgchests.containsKey(loc)) {
                    p.openInventory(sgchests.get(loc));
                    return;
                } else {
                    
                    Random r = new Random();
                    int l = r.nextInt(15);
                    
                    Inventory inv = Bukkit.createInventory(null, InventoryType.CHEST);
                    List<ItemStack> items = new ArrayList<>();
                    
                    for(String all : plugin.getConfig().getStringList("values")) {
                        int ID     = 0;
                        int subID  = 0;
                        int amount = 0;
                        int chance = 0;
                        
                        
                        if(all.contains(",")) {
                            String[]array= all.split(";");
                            if(array.length!=4)
                            {
                                return;
                            }
                             ID = Integer.valueOf(array[0]);
                                String a = array[1];
                                subID = Integer.valueOf(a);
                                amount = Integer.valueOf(array[2]);
                                chance = Integer.valueOf(array[3]);
                        }
                        
                        for(int i = 0; i < chance; i++)
                        {
                            items.add(new ItemStack(ID, amount, (short) subID));                                           
                        
                        }
                        
                    }
                    
                    while(l != 0) {
                        l--;                       
                        
                        Random r2 = new Random();
                        
                        Random r3 = new Random();
                        
                        int n2 = r2.nextInt(26);
                                                
                        int n3 = r3.nextInt(1);                       
                        
                        inv.setItem(n2, items.get(n3));
                    }
                    
                    sgchests.put(loc, inv);
                    p.openInventory(inv);
                    return;
                    
                }
                
            }
        }
    }
 }
-----
Ich weiss halt nicht was ich machen soll ich muss jetzt auch gleich gehen Morgen Schule. Ich weiss ja nicht ob du es nicht mal selber testen möchtest du hast ja denn code mach damit was du möchtest aber ich bewundere es wie du mir immernoch hilfst obwohl ich der komplette 0 cheker bin ich kann dir garnicht sagen wieviel ich dir Danke
 
Zuletzt bearbeitet von einem Moderator:

Avankziar

Schafhirte
Registriert
12 Februar 2018
Beiträge
135
Alter
33
Diamanten
324
Minecraft
Avankziar
Kein Ding. Ich hab mir auch alles autodidaktisch beigebracht, und ich behaupte heute noch ich relativ schlecht xD Deshalb jeder fängt mal an, da kann man keinem was vorwerfen es nicht zu verstehen^^

Dein fehler ist, du hast dich verschrieben beim verbessern :D

Code:
if(all.contains(",")) {  <=== Kein komma , sondern ein Simikolon ;  :D
                            String[]array= all.split(";");
                            if(array.length!=4)
                            {
                                return;
                            }
                             ID = Integer.valueOf(array[0]);
                                String a = array[1];
                                subID = Integer.valueOf(a);
                                amount = Integer.valueOf(array[2]);
                                chance = Integer.valueOf(array[3]);
                        }

Weil dadurch geht der nicht in die Abfrage rein, und somit kann die folgende Schleife das Item nicht bilden und auch nicht in die HashMap packen.
Aka als ob du aus einem leeren Geldbeutel deine nicht vorhanden Münzen zählen würdest^^
 
Oben