본문 바로가기

Java BCI(Byte Code Instrumentation) 간단 예제와 설명 Bytecode Instrumentation & Agent 가끔 프로그래밍을 하다 이미 정의된 클래스를 재정의 할 순 없을까? 라는 생각을 하곤 했습니다. 이유는 자바 클래스라면 뭐든지 내 입맛대로 수정해버릴 수 있으니까요. 프로젝트를 진행하다 보면 리플렉션으로 불가능한 일이 필요할 때가 있습니다. 예로 내가 수정할 수 없는 공개 라이브러리의 객체 생성을 추적하는 일이 있습니다. 외에도 클래스 파일을 재정의가 가능하다면 Exception 클래스의 생성자를 변조해 모든 예외를 모니터링 할 수도 있습니다. 그렇다면 정말 클래스 재정의가 가능할까요? 비슷한 일로 변조할 클래스보다 변조된 클래스를 먼저 로드시켜버리면 같은 효과가 있으나 Exception 과 같은 자바 기본 클래스는 먼저 로드할 수 없습니다(자바.. 더보기
마인크래프트 봇 테러 방지 플러그인 오픈소스 프로젝트 https://github.com/EntryPointKR/K-SPAM K-SPAM봇 테러나 악성 유저를 사전에 차단할 수 있는 블랙리스트 플러그인입니다.비동기 처리, 자체 캐싱으로 매우 가벼우며 사용에 부담이 없습니다. (이벤트 패스 시간 약 0.001 초) 명령어/kspam check 아이피/닉네임해당 닉네임 또는 아이피의 스팸 여부를 확인합니다./kspam force강제 모드를 온/오프합니다. 강제모드가 활성화됐을 경우 그 시점 부터 처음 접속하는 유저들을 즉시 스팸 목록에 추가하며 입장을 거부합니다./kspam remove 아이피/닉네임해당 아이피나 닉네임을 스팸 목록에서 제거합니다. 닉네임의 경우 접속된 플레이어만 가능하며 오프라인일 경우 IP 를 입력하셔야 합니다./kspam .. 더보기
커맨드헬퍼 subset_of() 하위집합 확인 프로시저 커맨드헬퍼 subset_of() 프로시저 버킷 API 에 있는 isSimilar() 메서드와 같이 두 아이템을 서로 비교할 상황이 커맨드헬퍼를 사용할 때 온다면 기본으로 제공해주는 함수가 없기에 직접 비교하는 프로시저를 작성하거나 array_get() 으로 일일히 가져와 비교해야 할 것이다. 외에도 Location 등의 다른 종류의 배열들도 비교할 때 하나하나 프로시저를 작성하기에는 번거롭다. 그럼 다른 방안이 있을까? 소개 배열 A 가 다른 배열의 하위 집합인지의 여부를 확인할 수 있는 _subset_of() 프로시저를 만들어봤는데 꽤 유용하게 쓰일 것 같아 공유하고자 합니다. 코드 예제 위의 @item 과 @loc 변수는 커맨드헬퍼에서 얻어지는 데이터 기준이며특정 배열이 비교하고자 하는 정보보다 많을.. 더보기
커맨드헬퍼 예제와 커스텀함수 예제와 커스텀 함수 커맨드헬퍼 기본 제공 함수들의 기능도 강력하지만, 특정 기능을 자주 쓸 경우 여러 함수를 장황하게 쓰는 것보다 커스텀 함수로 만들어 쓰면 보다 효율적이고 코드를 작성하기 한결 수월해집니다. 본 글에서는 여러 기능의 예제들과 커맨드헬퍼의 기본 함수가 지원하지 않는 기능이거나 커스텀 함수로 코드 수를 간결히 할 수 있는 경우에 대해 다룹니다. TP 명령어 - 예제 OP 챗 기능 - 예제 아이템 뺏기, 아이템 보유 여부 - 커스텀 함수 TP 명령어와 OP 챗 기능의 예제, 또 아이템을 뺐었을 경우 true 를 반환하는 _take_item() 커스텀 함수와 해당 아이템을 보유하고 있을 시 true 를 반환하는 _has_item() 함수의 코드들입니다. 마치며 커맨드헬퍼를 활용해 만들 수 있는.. 더보기
커맨드헬퍼(CommandHelper) 스터디 그룹 커맨드헬퍼 커맨드헬퍼 이하 커헬을 배우고 싶어도 국내엔 강좌 또는 자료가 없어 그러지 못하는 분들, 코드 작성 중 막혀 질문이 생겼는데 질문할 곳도, 해결할 길도 보이지 않아 중도 포기하시려는 분들을 위해 커헬 스터디 그룹을 소개시켜드리고자 합니다. 커맨드헬퍼 란? 커헬은 자바 지식 없이 빠르고 간편하게 기능을 구현할 수 있도록 고안된 스크립트류 플러그인입니다. 관련 플러그인으로는 트리거(VariableTriggers), 스크립트(Skript) 등이 있는데, 스크립트류 플러그인 중 최고라 해도 과언이 아닐 정도로 매우 강력한 기능을 제공합니다. 2016/10/3 기준으로 함수 개수가 총 640개나 되며, 이벤트는 85개로 타 플러그인과 비교 시 초라할 정도로 차이가 많이 납니다. (Skript 용량의 1.. 더보기