Sol Reklam
Sağ Reklam

Rehber JAVA Minecraft Hologram Oluşturma, Uygulamalı Küçük Bir Eklenti | Minecraft Eklenti Rehberi

Durum
Mesaj gönderimine kapalı.

HaktanOzkan

Demir Cevheri Gibiyim
Premium

Discord:

hktanozkan

Katılım
22 Temmuz 2014
Mesajlar
187
Elmaslar
100
Puanlar
13.775
Minecraft
HaktanOzkan
Hologram Oluşturma
Hologramları bir entity'nin ismi olarak belirleyip entity'i gizleriz ve her entity için kullanabilirsiniz. Bu konuda armor stand kullanacağız ki çoğu eklentide bunu kullanır çünkü sabit yani hareket etmeyen bir entity'dir. Önce bir armor stand oluşturacağız ve onu gizleyeceğizki sadece vereceğimiz isim gözüksün, buda hologram olarak nitelendirdiğimiz şeyi yapmamızı sağlasın. Daha sonra vereceğimizin ismin belirgin olmasını sağlayacağız. En son olarak bir isim belirleyeceğiz vereceğimiz isim bizim hologramımız olacak. Bu işlemleri sade bir şekilde yapmayacağız. Onun yerine oyuncumuz bir sandık koyduğunda üst tarafında sandık sahibinin adının yazmasını sağlayacağız. Bu şekilde konu içerisinde bir kaç event görme imkanınada sahip olacaksınız.

Paket oluşturmak, class dosyası oluşturmak gibi en temel şeyleri göstermeden direkt olarak kod kısmına geçeceğim. Evet yavaştan konumuza geçelim.


Kullandığım IDE : Eclipse IDE for Java Developers
Java Sürümü : JavaSE-1.8
Minecraft Sürümü : 1.8



İlk olarak ana class dosyamızda onEnable metodu içinde eventlerimizi yazacağımız başka bir class dosyamızı tanıtacağız.

Java:
public class Main extends JavaPlugin{
   
    public void onEnable() {
        getServer().getPluginManager().registerEvents(new HologramEventleri(), this);
    }

}




HologramEventleri isimde bir dosya oluşturduk ve içerisine BlockPlaceEvent'ini koyacağız. Bu event herhangi bir blok koyulduğunda çağırılan bir eventtir.

Java:
public class HologramEventleri implements Listener {
   
    @EventHandler
    public void onPlace(BlockPlaceEvent e) {
       
    }

}




Şimdi event içinde oyuncumuzu ve bloğumuzu tanıttıktan sonra koyacağımız blok eğer chest ise neler yapması gerektiğini söylemeliyiz. Bunun için if else kullanacağız.

Java:
@EventHandler
    public void onPlace(BlockPlaceEvent e) {
        Player p = e.getPlayer();
        Block block = e.getBlock();
        if(block.getType().equals(Material.CHEST)) {
           
        }
    }




Koyulan blok chest ise değerini döndürdükten sonra koyulan chest'in bulunduğu lokasyonda bir armor stand oluşturalım. Bunun için önce koyulan chest'in lokasyonunu tanıtmamız gerekiyor. Bunuda bu şekilde yapıyoruz.

Java:
@EventHandler
    public void onPlace(BlockPlaceEvent e) {
        Player p = e.getPlayer();
        Block block = e.getBlock();
        if(block.getType().equals(Material.CHEST)) {
            Location chestloc = block.getLocation();
            ArmorStand hologram = (ArmorStand) p.getWorld().spawnEntity(chestloc, EntityType.ARMOR_STAND);
        }
    }

Oyuncunun bulunduğu dünya içinde bir entity doğurmasını istedik. Doğan entity'nin koyulan chest bloğunun lokasyonunda doğmasını ve ARMOR_STAND olarak doğmasını istedik. Doğan entity'yi hologram ismi ile ArmorStand olarak atadık. Bundan sonra eklenti hologram isimli atamayı Armor Stand olarak tanıyacaktır ve üzerinde oynamamıza izin verecektir.



Buraya kadar gelinen noktada çıktı şu şekilde olacaktır.

armorstand.png


Şimdi armor stand'imiz üzerinde değişimler yapalım ve biraz daha şekillendirelim.


Java:
@EventHandler
    public void onPlace(BlockPlaceEvent e) {
        Player p = e.getPlayer();
        Block block = e.getBlock();
        if(block.getType().equals(Material.CHEST)) {
            Location chestloc = block.getLocation();
            ArmorStand hologram = (ArmorStand) p.getWorld().spawnEntity(chestloc, EntityType.ARMOR_STAND);
            hologram.setCustomNameVisible(true);
            hologram.setCustomName(ChatColor.RED + "Bu Sandık " + p.getName() + " Isimli Oyuncunun");
        }
    }




Hızlı bir giriş yaptık ve armor stand'imizin ismini belirgin hale getirdik (setCustomNameVisible) ve daha sonra isminin rengini kırmızı yaprak (ChatColor.RED) ' "Bu Sandık " + p.getName() + " Isimli Oyuncunun" ' ismini yazdırdık. (p.getName() oyuncunun ismini belirtir.)



armorstand2.png




Şimdi ise armor standimizi chest'e ortalayalım. Bunun için x y z kordinatlarıyla oynamamız gerekiyor. X ve Z kordinatlarına 0.5 lik bir ekleme yaparsak eğer bloğa göre ortalamış oluyoruz.




Java:
ArmorStand hologram = (ArmorStand) p.getWorld().spawnEntity(chestloc.add(0.5, 0, 0.5), EntityType.ARMOR_STAND);



Entity doğurmasını istediğimiz kodun lokasyon kısmına (add) etiketi açıyoruz ve içerisine x y z kodrinatlarını giriyoruz. chestloc.add(x, y, z).



Artık armor standimizi görünmez hale getirmenin vakti geldi. Bunun için setVisible(); etiketini kullanmamız gerekiyor. True değeri armor stand'i görünür hale false değeri armor stand'i görünmez hale getirir.



Son olarak kodumuz bu şekilde görünüyor.



Java:
@EventHandler
    public void onPlace(BlockPlaceEvent e) {
        Player p = e.getPlayer();
        Block block = e.getBlock();
        if(block.getType().equals(Material.CHEST)) {
            Location chestloc = block.getLocation();
            ArmorStand hologram = (ArmorStand) p.getWorld().spawnEntity(chestloc.add(0.5, 0, 0.5), EntityType.ARMOR_STAND);
            hologram.setCustomNameVisible(true);
            hologram.setCustomName(ChatColor.RED + "Bu Sandık " + p.getName() + " Isimli Oyuncunun");
            hologram.setVisible(false);
        }
    }


Çıktı



armorstand3.png




Geriye tek bir şey kaldı oda armor standimizin yer çekiminden etkilenmesini kapatmak. Bu olay sizin isteğinize bağlıdır olmazsa olmaz değildir. Ama blok altı boş bir yere koyulur ise armor stand doğal olarak yere düşecektir. Buda hologramın istenilen bölüme koyulmasına engel olacaktır.



Bunun için setGravity(); kullanacağız.




Java:
hologram.setGravity(false);



False değeri yer çekimini kapatır True değeri ise yer çekimini açar.




Umuyorumki gerekli bilgileri temin edebilmiş, öğrenebilmişsinizdir. Herkese iyi forumlar dilerim...




Tüm Kodlar


Main isimli ana dosya :


Java:
package me.hologram;

import org.bukkit.plugin.java.JavaPlugin;

public class Main extends JavaPlugin{
    
    public void onEnable() {
        getServer().getPluginManager().registerEvents(new HologramEventleri(), this);
    }

}

HologramEventleri isimli event dosyası :


Java:
package me.hologram;

import org.bukkit.Location;
import org.bukkit.Material;
import org.bukkit.block.Block;
import org.bukkit.entity.ArmorStand;
import org.bukkit.entity.EntityType;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
import org.bukkit.event.block.BlockPlaceEvent;

import net.md_5.bungee.api.ChatColor;

public class HologramEventleri implements Listener {
    
    @EventHandler
    public void onPlace(BlockPlaceEvent e) {
        Player p = e.getPlayer();
        Block block = e.getBlock();
        if(block.getType().equals(Material.CHEST)) {
            Location chestloc = block.getLocation();
            ArmorStand hologram = (ArmorStand) p.getWorld().spawnEntity(chestloc.add(0.5, 0, 0.5), EntityType.ARMOR_STAND);
            hologram.setCustomNameVisible(true);
            hologram.setCustomName(ChatColor.RED + "Bu Sandık " + p.getName() + " Isimli Oyuncunun");
            hologram.setVisible(false);
            hologram.setGravity(false);
        }
    }

}
 

Alfredo'

aynen kardeşim aras kargo, aç kapıyı

Discord:

berqtcann

Katılım
21 Ocak 2021
Mesajlar
329
Elmaslar
142
Puanlar
4.535
Yer
Bursa
Yazılıma merak saran arkadaşlar için güzel bir konu olmuş. Şu sıralar bende öğrenmeye çalışıyorum, kesinlikle benim için de yararlı bir konu oldu. Teşekkürler!​
 

MustafaBingul

Creeper Evimi Patlattı

Discord:

BingulHan#4136

Katılım
27 Mayıs 2018
Mesajlar
401
Elmaslar
143
Puanlar
7.085
Yer
Türkiye
Minecraft
BingulHan
Kodlamaya merak saran arkadaşlar için yararlı bir içerik.
 

Deleted User 131734

Nerelerdesin Be Zümrüt?
Katılım
23 Şubat 2021
Mesajlar
559
Elmaslar
422
Puanlar
4.075
Yer
Avusturya
Lag yaparmıki bu?
 

HaktanOzkan

Demir Cevheri Gibiyim
Premium

Discord:

hktanozkan

Katılım
22 Temmuz 2014
Mesajlar
187
Elmaslar
100
Puanlar
13.775
Minecraft
HaktanOzkan
Yazılıma merak saran arkadaşlar için güzel bir konu olmuş. Şu sıralar bende öğrenmeye çalışıyorum, kesinlikle benim için de yararlı bir konu oldu. Teşekkürler!​
Yararlı oldu ise ne mutlu teşekkür ederim.
Kodlamaya merak saran arkadaşlar için yararlı bir içerik.
Teşekkür ederim.
Lag yaparmıki bu?
Eğer her sandık koyulduğunda hologram oluşturacak ise bir süre sonra bir miktar belki yapabilir. Konuda chest koyulduğunda hologram oluşmasını örnek amacı ile verdim yoksa bu tür kullanım uzun sürede bir ihtimal bazı sorunlar doğurabilir.
 

Deleted User 131734

Nerelerdesin Be Zümrüt?
Katılım
23 Şubat 2021
Mesajlar
559
Elmaslar
422
Puanlar
4.075
Yer
Avusturya
Yararlı oldu ise ne mutlu teşekkür ederim.

Teşekkür ederim.

Eğer her sandık koyulduğunda hologram oluşturacak ise bir süre sonra bir miktar belki yapabilir. Konuda chest koyulduğunda hologram oluşmasını örnek amacı ile verdim yoksa bu tür kullanım uzun sürede bir ihtimal bazı sorunlar doğurabilir.
HolographicDisplays eklentisini kodlayabilirmiyim bunla?
 

HaktanOzkan

Demir Cevheri Gibiyim
Premium

Discord:

hktanozkan

Katılım
22 Temmuz 2014
Mesajlar
187
Elmaslar
100
Puanlar
13.775
Minecraft
HaktanOzkan
HolographicDisplays eklentisini kodlayabilirmiyim bunla?
Mantık bu şekilde işliyor. O tür kompleksli bir eklentiyi bu kadar basit bir şekilde kodlayamazsın. Bu konuda anlatılan şeyler hologram konusunun en temel kısmı ama üzerine gidersen tabii ki kodlayabilirsin.
 

Rahmi Can Yılmaz

Koruma 1, Keskinlik 3

Discord:

kashiandwazaki

Katılım
30 Mayıs 2016
Mesajlar
962
Elmaslar
670
Puanlar
15.425
Yer
BURSA
Minecraft
iRahmiCan
Çok başarılı bir konu elinize sağlık bu tarz konuların artması dileğiyle.
 

HaktanOzkan

Demir Cevheri Gibiyim
Premium

Discord:

hktanozkan

Katılım
22 Temmuz 2014
Mesajlar
187
Elmaslar
100
Puanlar
13.775
Minecraft
HaktanOzkan

Geyik

Geik
Onaylı Satıcı

Discord:

Geik#1139

Katılım
30 Ağustos 2018
Mesajlar
365
Elmaslar
283
Puanlar
9.885
Minecraft
Geyik
HolographicDisplays eklentisini kodlayabilirmiyim bunla?
Temelde evet fakat holographicDisplays sunucu kapanıp açıldığında entityleri tekrar loadlayabiliyor. Düzenleyebiliyor ve satır ekleyebiliyor. Onları çözersen neden yapamayasın ^^

Elinize sağlık güzel konu.
 

HaktanOzkan

Demir Cevheri Gibiyim
Premium

Discord:

hktanozkan

Katılım
22 Temmuz 2014
Mesajlar
187
Elmaslar
100
Puanlar
13.775
Minecraft
HaktanOzkan
Temelde evet fakat holographicDisplays sunucu kapanıp açıldığında entityleri tekrar loadlayabiliyor. Düzenleyebiliyor ve satır ekleyebiliyor. Onları çözersen neden yapamayasın ^^

Elinize sağlık güzel konu.
Teşekkür ederim.
 
Durum
Mesaj gönderimine kapalı.
Neden altınlarını Discord sunucumuzda kazmıyorsun? TIKLA VE KATIL!
Yukarı