Java 4

[마인크래프트 모딩]#18 오늘 산재해있던, 문제들에 대해서

1. AI 문제: 내 맘대로 안 움직이는 똑똑한(?) 몹들가장 많은 시간을 쏟아부은 파트. AI는 정말 미묘해서 하나를 고치면 다른 게 터짐.탱커 주민, 스킬을 한 번만 씀현상: 도발 스킬을 딱 한 번만 쓰고 그 뒤로 감감무소식.원인: 스킬 쿨타임을 숫자로 저장만 해놓고, 시간이 지나도 이 숫자를 줄여주는 코드가 없었음. 쿨타임이 영원히 0이 되지 않으니 다시는 스킬을 못 씀.해결: 엔티티의 tick() 메소드(매 틱마다 실행되는 곳)에 "쿨타임이 0보다 크면 1씩 감소시켜라"라는 로직을 한 줄 추가해서 해결함.소환사, 소환수가 다 죽어도 멀뚱멀뚱현상: 전투가 끝나고 소환수가 다 죽었는데도, 소환사가 다시 소환할 생각을 안 하고 그냥 돌아다니기만 함.원인: 소환 AI가 발동될 '계기(Trigger)'가 ..

[마인크래프트 모딩]#17 나만의 소환사 주민 만들기

1. 기본 컨셉: 레벨업하는 소환사기반: 그냥 몹이 아니라, '레벨'과 '경험치'라는 개념을 가진 커스텀 주민을 기반으로 함.경험치 획득: 소환사가 직접 때리는 게 아니라, 자기가 소환한 소환수들이 적에게 데미지를 입힐 때마다 그 데미지만큼 경험치를 얻는 구조임. 소환수는 주인을 위해 싸우고, 주인은 그 덕에 성장하는 선순환 구조.레벨업 보상: 레벨업을 하면 소환사 자신의 최대 체력이 5씩 증가함. 그리고 더 중요하게는, 소환할 수 있는 소환수의 종류와 수가 늘어남.2. 소환수: 눈사람과 철골렘눈사람 골렘: 원거리 딜러. 기본적으로 항상 소환되어 있으며, 레벨이 오르면 수가 늘어남.철골렘: 근접 탱커. 특정 레벨에 도달해야만 소환할 수 있는 강력한 유닛.3. 핵심 로직 1: 소환 메커니즘문제점: 처음엔 ..

[마인크래프트 모딩]#9 주민 ai수정의 어려움에 대해서

1주민이 빵보면 이동하도록2또한 교배하도록 1번이 되면 2번이 안되고2번이 되면 1번이 안됫음(빵이 화면에 안보였음) 1차 삽질: AI가 일을 안 함코드를 다 짜고 '사랑의 빵'을 던져줌. 주민이 멀뚱멀뚱 쳐다만 봄. 로그를 찍어보니 AI 관련 로그가 단 한 줄도 안 찍힘. 여기서부터 디버깅의 늪이 시작됨."우리만의 쇼핑 리스트를 만들면 되는거 아닌가? private final static 필드를 수정를 고수하면 사용자 주민을 사용하는 이유가 없잖아"처음엔 바닐라 주민이 음식을 인식하는 Villager.FOOD_POINTS라는 static 맵을 건드려볼까 생각했음. 하지만 이건 모든 주민에게 영향을 주는 방식이라, 우리 커스텀 주민만의 고유한 행동을 만들고 싶었음. 그래서 바닐라 시스템을 이용하지 않고,..

[마인크래프트 모딩] #7 침대 없이 강제 번식시키는 마법의 빵 만들기 (Feat. 무한 버그)

마인크래프트 모딩 삽질기: "주민 자동 교배빵" 만들려다 코딩의 신세계를 맛봄 1. 야심찬 시작: "빵 하나로 마을을 인구 100만 도시로!"마인크래프트 모딩에 손을 댐.첫 목표는 거창했음."특수한 빵을 땅에 던지면, 주민 하나가 그걸 보고 눈이 뒤집혀서(?) 짝을 찾아 헤매다 침대 없이도 강제 교배하게 만들자!"단순히 아이템 추가하는 건 시시하잖음? 엔티티의 AI를 건드려보고 싶었음.2. 첫 번째 벽: "그래서... 어떻게...?"일단 바닐라 코드를 뜯어보기로 함."음식을 먹으면 배가 부르다"는 로직은 대체 어디에 있을까?eat, food 같은 단어로 무작정 검색 시작.1차 시도: Items.java에서 BREAD를 찾음.public static final Item BREAD = register("br..