Skocz do zawartości
  • 0

Czemu nie daje mi case?


kerpson

Pytanie

Mam taki kod, nie pokazuje mi bledow w konsoli ale jednak pewnie czegos zapomnialem.

package pl.vixitube.app1.listeners;

import java.util.concurrent.ThreadLocalRandom;

import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import pl.vixitube.app1.Main;
import pl.vixitube.app1.builder.ItemBuilder;

public class CaseListener implements Listener{
	
	@EventHandler(priority=EventPriority.HIGHEST)
	public void onCasePlace(BlockPlaceEvent e){
		Block b = e.getBlock();
		
		if(e.isCancelled()){
			return;
		}
		if(b.getType() == Material.ENDER_CHEST){
			ItemMeta im = e.getPlayer().getItemInHand().getItemMeta();
			for(String s : Main.getPlugin(Main.class).getConfig().getStringList("case.name")){
				s = s.replace("&", "§");
				if(im.getDisplayName() == s){
					e.setCancelled(true);
			        ThreadLocalRandom random = ThreadLocalRandom.current();
			        int i = random.nextInt(1, 5);
			        if(i == 1){
			        	for(String zestaw1 : Main.getPlugin(Main.class).getConfig().getStringList("case.drop.zestawI.name")){
			        		zestaw1 = zestaw1.replace("&", "§");
			        		ItemStack is = new ItemBuilder(Material.ENDER_CHEST, i).setName(zestaw1).addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 10).toItemStack();
			        		e.getPlayer().getInventory().addItem(is);
			        	}
			        }
					
				}
				
			}
		}
		
	}

}
package pl.vixitube.app1.commands;

import org.bukkit.Bukkit;
import org.bukkit.Material;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.CommandSender;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;

import pl.vixitube.app1.Main;
import pl.vixitube.app1.builder.ItemBuilder;

public class CaseCommand implements CommandExecutor{

	@Override
	public boolean onCommand(CommandSender sender, Command cmd, String label, String[] args) {
		if(args.length >= 1){
			if(args[0].equalsIgnoreCase("all")){
				int i = Integer.parseInt(args[1]);
				if(i > 0){
					for(String zestawI : Main.getPlugin(Main.class).getConfig().getStringList("case.name")){
						zestawI = zestawI.replace("&", "§");
						ItemStack is = new ItemBuilder(Material.ENDER_CHEST, i).setName(zestawI).addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 10).toItemStack();
						for(Player p : Bukkit.getOnlinePlayers()){
							p.getInventory().addItem(is);
						}
					}
				}
			}
		}
		return false;
	}
	
	

}

Main:

package pl.vixitube.app1;

import org.bukkit.Bukkit;
import org.bukkit.plugin.java.JavaPlugin;

import pl.vixitube.app1.commands.CaseCommand;
import pl.vixitube.app1.commands.Pomoc;
import pl.vixitube.app1.commands.Vip;
import pl.vixitube.app1.commands.Yt;
import pl.vixitube.app1.listeners.CaseListener;
import pl.vixitube.app1.listeners.DisableMessage;

public class Main extends JavaPlugin{
	
	@Override
	public void onEnable(){
		Bukkit.getServer().getPluginManager().registerEvents(new DisableMessage(), this);
		Bukkit.getServer().getPluginManager().registerEvents(new CaseListener(), this);
		getCommand("pomoc").setExecutor(new Pomoc());
		getCommand("vip").setExecutor(new Vip());
		getCommand("yt").setExecutor(new Yt());
		getCommand("case").setExecutor(new CaseCommand());
		saveDefaultConfig();
	}
	@Override
	public void onDisable(){
	}
}

 

Edytowane przez HotAngel2K17
Odnośnik do komentarza
https://skript.pl/temat/26919-czemu-nie-daje-mi-case/
Udostępnij na innych stronach

9 odpowiedzi na to pytanie

Rekomendowane odpowiedzi

  • 0
Teraz, HotAngel2K17 napisał:

A powiecie mi co dac zamiast string list? Popatrzcie na te configi:

Do string list:


config:
  - 'Wow ale fajny !'

A jak dac cos takiego?


config: 'Wow ale fajny !'

 

Pobierasz getString, no i YAML ma też robienie wielu linijek w zwykłym stringu.

Odnośnik do komentarza
https://skript.pl/temat/26919-czemu-nie-daje-mi-case/#findComment-177245
Udostępnij na innych stronach

  • 0
2 godziny temu, HotAngel2K17 napisał:

Nie dziala mi jeszcze jak postawie blok :/

daj kod, wytlumacz co chcesz zrobic, a co ci nie dziala dokladniej.

 

2 godziny temu, HotAngel2K17 napisał:

A powiecie mi co dac zamiast string list? Popatrzcie na te configi:

Do string list:


config:
  - 'Wow ale fajny !'

A jak dac cos takiego?


config: 'Wow ale fajny !'

 

bo nic z tego nie rozumiem, zamiast listy mozesz uzywac \n lub od razu inaczej, ale ja widze ze chcesz tu zrobic cos innego :thinking: 

Odnośnik do komentarza
https://skript.pl/temat/26919-czemu-nie-daje-mi-case/#findComment-177274
Udostępnij na innych stronach

  • 0

@yooniks wiec tak kolego. 

1. Co mi nie dziala?

package pl.vixitube.app1.listeners;

import java.util.concurrent.ThreadLocalRandom;

import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import pl.vixitube.app1.Main;
import pl.vixitube.app1.builder.ItemBuilder;

public class CaseListener implements Listener{
	
	@EventHandler(priority=EventPriority.HIGHEST)
	public void onCasePlace(BlockPlaceEvent e){
		Block b = e.getBlock();
		
		if(e.isCancelled()){
			return;
		}
		if(b.getType() == Material.ENDER_CHEST){
			ItemMeta im = e.getPlayer().getItemInHand().getItemMeta();
			for(String s : Main.getPlugin(Main.class).getConfig().getStringList("case.name")){
				s = s.replace("&", "§");
				if(im.getDisplayName() == s){
					e.setCancelled(true);
			        ThreadLocalRandom random = ThreadLocalRandom.current();
			        int i = random.nextInt(1, 5);
			        if(i == 1){
			        	for(String zestaw1 : Main.getPlugin(Main.class).getConfig().getStringList("case.drop.zestawI.name")){
			        		zestaw1 = zestaw1.replace("&", "§");
			        		ItemStack is = new ItemBuilder(Material.ENDER_CHEST, i).setName(zestaw1).addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 10).toItemStack();
			        		e.getPlayer().getInventory().addItem(is);
			        	}
			        }
					
				}
				
			}
		}
		
	}

}

 

To jest kod.

Chce cos takiego, ze jezeli ktos polozy blok, to losuje mu liczbe od 1 do 5. Jezeli liczba wynosi 1 gracz dostaje zwykla skrzynie nazwana Zestaw I.

Nie dziala mi to wgl, jezeli postawie blok nic sie nie dzieje.

 

2. Popatrz sie:

Jezeli tworze config ze StringList to wyglada on tak:

config:
  - "Wow ale fajny"

A co trzeba dac zeby config wygladal tak? ZAmiast string list co?

config: 'Wow, ale fajny !'

 

Odnośnik do komentarza
https://skript.pl/temat/26919-czemu-nie-daje-mi-case/#findComment-177314
Udostępnij na innych stronach

  • 0
45 minut temu, HotAngel2K17 napisał:

@yooniks wiec tak kolego. 

1. Co mi nie dziala?


package pl.vixitube.app1.listeners;

import java.util.concurrent.ThreadLocalRandom;

import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.enchantments.Enchantment;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;
import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta;

import pl.vixitube.app1.Main;
import pl.vixitube.app1.builder.ItemBuilder;

public class CaseListener implements Listener{
	
	@EventHandler(priority=EventPriority.HIGHEST)
	public void onCasePlace(BlockPlaceEvent e){
		Block b = e.getBlock();
		
		if(e.isCancelled()){
			return;
		}
		if(b.getType() == Material.ENDER_CHEST){
			ItemMeta im = e.getPlayer().getItemInHand().getItemMeta();
			for(String s : Main.getPlugin(Main.class).getConfig().getStringList("case.name")){
				s = s.replace("&", "§");
				if(im.getDisplayName() == s){
					e.setCancelled(true);
			        ThreadLocalRandom random = ThreadLocalRandom.current();
			        int i = random.nextInt(1, 5);
			        if(i == 1){
			        	for(String zestaw1 : Main.getPlugin(Main.class).getConfig().getStringList("case.drop.zestawI.name")){
			        		zestaw1 = zestaw1.replace("&", "§");
			        		ItemStack is = new ItemBuilder(Material.ENDER_CHEST, i).setName(zestaw1).addEnchant(Enchantment.PROTECTION_ENVIRONMENTAL, 10).toItemStack();
			        		e.getPlayer().getInventory().addItem(is);
			        	}
			        }
					
				}
				
			}
		}
		
	}

}

 

To jest kod.

Chce cos takiego, ze jezeli ktos polozy blok, to losuje mu liczbe od 1 do 5. Jezeli liczba wynosi 1 gracz dostaje zwykla skrzynie nazwana Zestaw I.

Nie dziala mi to wgl, jezeli postawie blok nic sie nie dzieje.

 

2. Popatrz sie:

Jezeli tworze config ze StringList to wyglada on tak:


config:
  - "Wow ale fajny"

A co trzeba dac zeby config wygladal tak? ZAmiast string list co?


config: 'Wow, ale fajny !'

 

1. po prostu po warunku rob 

System.out.println("sraka");

jezeli sie wykona to znaczy ze dziala, a ze reszte kodu masz po prostu zle zrobiona.

czyli np:

			        	for(String zestaw1 : Main.getPlugin(Main.class).getConfig().getStringList("case.drop.zestawI.name")){

config nie istnieje, lub lista jest pusta

2.zamiast stringlist zwykly string, lol

Odnośnik do komentarza
https://skript.pl/temat/26919-czemu-nie-daje-mi-case/#findComment-177321
Udostępnij na innych stronach

Nieaktywny
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...