Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[Pytanie] !Chodzi o plugin.


Rekomendowane odpowiedzi

Opublikowano

Witam.

 

Chciałbym napisać plugin który liczy mi ile kawałków drzewa ściąłem.

Wiem jak zacząć i w ogóle jednak nie mam pojęcia jak napisać równania(linijki) wykonujące liczenie rozwalonych kawałków drewna i jak napisać linijki które wiedzą ,że drzewo jest ścinane.

 

Proszę o pomoc

Opublikowano

Użyj eventu, BlockBreakEvent

@EventHandlerpublic void onGetTreeBlock(BlockBreakEvent event)
{
    if(event.getBlock().getType()==Material.WOOD) {
       //tutaj zliczaj
    }
}

Nie testowałem, pisałem z palca.

Opublikowano

"==" w javie jest zawodne, zrób program, który miliard razy porówna dwie zmienne, a przekonasz się, że paręnaście razy będzie źle porównane.

 

Znacznie lepiej stosować "equals()", czyli zamiast

event.getBlock().getType()==Material.WOOD

lepiej dać

event.getBlock().getType().equals(Material.WOOD)

To może dam cały kod od razu :)

 

Klasa TestEvent

package <paczka>;

import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockBreakEvent;
import org.bukkit.event.player.PlayerCommandPreprocessEvent;

public class TestEvent implements Listener{
	
	@EventHandler
	public void onBreakTreeBlock(BlockBreakEvent event){
		if(!event.isCancelled()){
			Block block = event.getBlock();
			if(block.getType().equals(Material.LOG)){
				Values.add(event.getPlayer(), 1);
			}
		}
	}
	
	@EventHandler
	public void onCommand(PlayerCommandPreprocessEvent event){
		if(event.getMessage().equals("/drewno")){
			Player player = event.getPlayer();
			player.sendMessage("Ścięte drewno: " + Values.get(player));
			event.setCancelled(true);
		}
	}
}

Klasa Values

package <paczka>;

import java.util.HashMap;
import java.util.Map;

import org.bukkit.entity.Player;

public class Values {

	private static Map<String, Integer> break_wood= new HashMap<String, Integer>();
	
	public static void add(Player player , int amount){
		String name = player.getName().toLowerCase();
		break_wood.put(name, get(player) + amount);
	}
	
	public static int get(Player player){
		String name = player.getName().toLowerCase();
		if(break_wood.containsKey(name)){
			return break_wood.get(name);
		}
		return 0;
	}
	
	//Tutaj możesz dać metody zapisujące tą hash mapę
}

Oraz w głównej klasie, w onEnable() dodaj

getServer().getPluginManager().registerEvents(new TestEvent(), this);

1390684250-U762298.png

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...