(내용은 private)
각 프로젝트의 최신버전은 각 레포에 들어가서 메인페이지에 tags 를 눌러서 최신이 무엇인지 확인
https://github.com/entrypointkr/upgrade-item-yundo/blob/main/README.md
(내용은 private)
각 프로젝트의 최신버전은 각 레포에 들어가서 메인페이지에 tags 를 눌러서 최신이 무엇인지 확인
https://github.com/entrypointkr/upgrade-item-yundo/blob/main/README.md
| import org.bukkit.Bukkit | |
| import org.bukkit.boss.BarColor | |
| import org.bukkit.boss.BarStyle | |
| import org.bukkit.boss.BossBar | |
| import org.bukkit.entity.Player | |
| import org.bukkit.event.EventHandler | |
| import org.bukkit.event.Listener | |
| import org.bukkit.event.player.PlayerQuitEvent | |
| import org.bukkit.plugin.Plugin | |
| import org.bukkit.scheduler.BukkitRunnable |
| // https://github.com/sbt/sbt-assembly#excluding-scala-library-jars | |
| assembly / assemblyExcludedJars := { | |
| val cp = (assembly / fullClasspath).value | |
| cp filter { attr => | |
| val name = attr.data.getName | |
| name.startsWith("scala-") || name.startsWith("scala3-") | |
| } | |
| } |
| import org.bytedeco.javacv.FFmpegFrameGrabber; | |
| import org.bytedeco.javacv.Frame; | |
| import org.bytedeco.javacv.FrameGrabber; | |
| import org.lwjgl.opengl.GL11; | |
| import org.lwjgl.opengl.GL12; | |
| import org.lwjgl.opengl.GL30; | |
| import javax.sound.sampled.*; | |
| import java.awt.image.*; | |
| import java.io.File; |
| package kr.rvs.instrumentation; | |
| import java.io.ByteArrayOutputStream; | |
| import java.io.InputStream; | |
| import java.lang.instrument.ClassDefinition; | |
| import java.lang.instrument.Instrumentation; | |
| /** | |
| * Created by Junhyeong Lim on 2017-02-02. | |
| */ |
| /* 아이템 배열 비교 */ | |
| @parent = array('type': 32, 'meta': array( | |
| 'lore': array('a', 'b', 'c'), | |
| 'display': 'Test' | |
| )) | |
| @item = array('data': 0, 'type': 32, 'qty': 10, 'flags': array(), 'meta': array( | |
| 'lore': array('a', 'b', 'c'), | |
| 'display': 'Test' | |
| )) | |
| if (_subset_of(@parent, @item)) { |
| @key = 'registered_aliases'; | |
| @prevAliases = get_value(@key); | |
| # Ensure | |
| if (!@prevAliases) { | |
| @prevAliases = array(); | |
| } | |
| set_timeout(0, closure() { | |
| @completes = array(); | |
| foreach (@alias in get_aliases()) { | |
| @name = substr( |
| proc _subset_of(@arrayA, @arrayB) { | |
| if (!is_array(@arrayA) || !is_array(@arrayB) || | |
| is_associative(@arrayA) != is_associative(@arrayB)) { | |
| return(false) | |
| } | |
| foreach (@key : @valueA in @arrayA) { | |
| @valueB = array_get(@arrayB, @key, null) | |
| if (@valueB == null | |
| || typeof(@valueB) != typeof(@valueA)) { | |
| return(false) |
| /* _take_item() 예제: | |
| # if (_take_item(player(), 아이템)) { | |
| # msg('아이템 1개를 뺐었습니다.') | |
| # } else { | |
| # msg('아이템 1개가 부족합니다.') | |
| # } | |
| # if (_take_item(player(), 아이템, 100)) { | |
| # msg('아이템 100 개를 뺐었습니다.') | |
| # } else { |