약 반 년만에 돌아온 북극여우입니다. 연일 폭염에 다들 녹지 않게 조심합시다. 오늘은 스티브의 공장 관리인, 줄여서 스공관....아니 스팩맨을 10분만에 공략해보겠습니다. 오늘은 특별히 마우스 없이 작성됩니다.  SFM 위키는 터졌고, FTB위키들엔 간략한 정보만 있고, 구글링해도 한국어 SFM 공략은 없는 이 현실에 개탄하며 작성합니다.

타이머 재기 전에 버전 정보부터 말씀드리자면, 1.7.10이 유일한 공식 버전입니다. 커스포지에도 그거 하나 올라와있습니다. 대신 스팩맨 리본이라고 1.10버전이 있습니다. 1.12로는 안올라오냐? 라고 질문이 있었는데, 저번주에 답변이 달렸습니다. 곧(ㅋㅋ;)이라네요. 생업에 바쁘다고. 그럼 공략 시작합니다.


--------------------10분 절취선----------------------

시작!

[북극 10분공략] 2. Steve's Factory Manager - 자동화 끝판왕

ㄹㅈㄷㄷㄹ

AE인스크라이버 자동화.

블럭은 분명 6면인데, 아이템인풋 2개, 리퀴드 인풋 1개, 아이템 아웃풋 1개, 리퀴드 아웃풋 1개에다 블럭 앞면은 파이프 붙지도 않는 갓 그렉;

이러다간 진로를 화학공학과로 정해버려....!


날이 갈수록 마크 모드들의 자동화 요구사항은 많아져만 갑니다. 근데 아직도 써멀 덕트 따위로 자동화를 하고 계시나요? 아이템에 전기까지 같이 운송하는 것 가지고 갓 파이프라구요? 7종류의 인풋 아웃풋을 요구하는 미친 기계가 있다구요? 그런 당신에게 필요한 스팩맨! 이라고 인트로 쓰는데 3분 30초..


저기서 왼쪽에 레버 달려있는 기계가 스팩맨의 브레인, 심장이라고 할 수 있는 머신 인벤토리 매니저입니다. 저 블럭으로 플로우차트를 짜서 자동화를 이루는게 스팩맨의 핵심입니다. 네? 문과라구요? 괜찮습니다. 국문공학과인 저도 손쉽게 익힐 수 있었습니다. 걱정말고 따라오세요

이렇게요. 일단 당황하지맙시다.

스팩맨의 플로우차트 기본은 트리거(발동조건) -> 인풋 -> (원하는 작업) -> 아웃풋 순서입니다. 만약 템 옮기기만 원한다면 트리거 -> 인풋 -> 아웃풋만으로 충분하죠. 크래프팅을 하고싶다면 인풋과 아웃풋 사이에 크래프팅을 넣어야 합니다. 물론 플로우차트답게 조건이나 분기, 그룹, 변수 등의 시스템도 충실히 구현되어있습니다. 왼쪽 버튼을 누르면 커맨드가 생기고, 그 커맨드 위의 점(조건)과 아래 점(결과)를 이으면 됩니다. 아직까진 어렵지 않죠?

고급 기능 : 블럭 업데이트 디텍팅, 레드스톤 인풋 아웃풋, 루프 생성, 컨테이너로 변수 생성, 분기점(조건에 따라 결과가 여러개 나오는 것, 여러 조건이 모여 한 결과가 나오는 것 등 다양한 설정 가능), 바닐라 표지판 업데이트 등... 설명하기엔 1분40초남았다.

  • Machine Inventory Manager: Main machine, required in any setup. Manages all blocks along the network. - 위에서 설명한 그것
  • Inventory Cable: Used for to connect blocks to the network. - 케이블 중에 세상에서 제일 존나 못생겼습니다. 다른 블럭으로 카모플라쥬 가능
  • Redstone Emitter: Can add/subtract/change redstone signal on any side of the block. - 레드스톤 신호 뱉는다
  • Redstone Receiver: Reads redstone signal on any side of the block. -레드스톤 신호 먹ㄴ느다
  • Inventory Relay: Interacts with inventories of adjacent entities (such as a moving minecart chest), but not players. -주변 엔티티(타일엔티티가아님)인벤과 상호작용함
  • Advanced Inventory Relay: As the Inventory Relay, except that it can interact with players. Players are required to register their own names on the machine to reduce the chance of griefing. -바라보는방향 플레이어 인벤과 상호작용해야하는데, 악용막기이위해등록해야
  • Item Valve: Picks up item entities from the world. Items falling in pickup range obey the standard delay that a player has when dropping items. Can pickup from a 7x7x7 area in front or a 3 block radius around it. -템줍
  • Rapid Item Valve: As the Item Valve, but does not have the standard delay on picking up items. -빨리템줍 
  • Block Detector: Detects when block updates occur (such as blocks being placed or crop growing to the next state).-BUD
  • Block Gate: Can break and pickup blocks (input mode). Or can place blocks in the world or drop items on the ground (output mode). In output mode items are always placed 2 blocks away if possible, then 1 block away if possible, then dropped on the ground. Can use an item if it has a use action (like a hoe), but it will also drop the item after use. Items can be pumped into the item and they will be immediately placed. - 블럭 부수고 놓는거
  • Sign Updater: Can update vanilla signs. -사인업ㅈㄷㅅ
  • Cable Camouflage: Can alter any block face to mimic another block. -카모플라쥬
  • Double-Sided Cable Camouflage: As the Cable Camouflage except that you also have access to the inside faces of the block (only seen when using transparent faces, like glass). These can also be conditionally set based on viewing side of the block (a real life example would be a one-way mirror).
  • Transforming Cable Camouflage: As the Double-Sided Cable Camouflage, except that you can also alter the block's 3D dimension in the world (similar to a ForgeMultipart block), and it's collision detection.
  • Cable Cluster: Condenses other Steve's Factory Manager blocks into a single block (except for the Machine Inventory Manager and Inventory Cable), and is capable of performing any of the tasks those containing blocks can do. -클러스터..
  • Advanced Cable Cluster: As the Cable Cluster except that it also acts as an Inventory Cable.
  • Creative Supplier: CREATIVE ONLY. Allows an infinite output of any item in the game.

ㅇ끝


써야할것 - 크래프팅, 복벅?, 쉬프트클릭, 고스트아이템없음, 쉬프트눌러옮겨서정렬, 트루폴스, 매시브운송부적합



--------------------10분 절취선----------------------

자 여기서 끝났습니다. 커버할 기능이 네다섯가지정도 더 있긴 한데.... 저기 써야할것에 있으니 알아서 알아봅시다. 사실 제가 쓴 정도면 충분합니다. 아닌 것 같다구요? 그렇게 생각하는 당신, 강좌 쓰면 링크 걸어드리겠습니다.

https://ftb.gamepedia.com/Machine_Inventory_Manager - 주요블럭인 인벤토리매니저 설명(약간의 불친절 포함됨)

https://ftbwiki.org/Steve%27s_Factory_Manager - 블럭들 설명(위에 복붙됨)


반년쯤 후에 봅시다.

CraftTweaker / MineTweaker
(크래프트트위커 / 마인트위커)

원 개발자 : StanHebben, Jaredlll08
마인크래프트 버전 : 1.7.10 ~ 1.12 (1.12 기반)

 

트위커 스크립트도 언어야 언어!

본격적으로 스크립트를 굴려먹기 전에 우리는 트위커 스크립트 내부가 어떻게 돌아가는지 알아야 할 필요가 있습니다. 우리가 트위커한테 스크립트 파일 안에 "이거 추가해!" 라고 써줘도 모드가 알아들을까요? 아닙니다. 모드는 우리가 개떡같이 말해줘도 찰떡같이 알아듣는 그런 똑똑한 놈이 아니죠. 그러기에 우리는 모드가 알아들을 수 있는 언어로 말해줄 필요가 있습니다.

트위커는 기본적으로 ZenScript라는 언어로 돌아갑니다. 이름부터 JS 베낀게 팍팍 티나듯이 문법도 자바스크립트랑 비스무레하죠. 근데 실상 돌아가는 구조는 살짝 다릅니다! 클래스도 없고 타입이 거의 없다시피한 자바스크립트와는 다르게 클래스나 타입이 철두철미한 C++이나 자바같은 특성이 암암리에 섞여있는... 한마디로 짬뽕언어죠. 이런 미묘한 특징때문에 잘 숙지하지 않은 채로 트위커로 고급 기능을 구현 시도하면 에러 폭발하고 피토하는게 한두 차례가 아닐 겁니다. 구에엑

아무튼.. 이번 강좌에서는 간단한 몇가지 문법 요소를 소개해보려합니다. 어차피 기본적인 문법들은 뭔 언어든 비슷비슷하지 않겠어요? ㅋㅎㅎ

 

 

0. 시작하기 전에

 젠스크립트는 종결자로 ;(세미콜론)을 갖고 있습니다. 즉 코드가 끝나면 항상 세미콜론을 붙여줘야 한다는 것이죠! 잊지 말아 줍시다.

 

 

1. 변수와 상수

 변수와 상수! 기초 중의 기초이자 필수적인 요소입니다. 바로 앞으로 써먹을 값들을 좀 더 편리하게 굴려먹기 위해 데이터들을 지시해주는 것이죠.

 트위커에선 이들의 관리가 여러분 스크립트의 질을 좌우하는 중요한 요소로 작용합니다. 관리를 깔끔하게 한 스크립트는 가독성도 좋고 유지보수도 쉽지만, 그렇지 못한 건 바로 휴지통에 넣고 싶어질 정도로 상태가 암담해지죠 (초어둠

 그만큼 변수와 상수의 관리는 아주아주 중요하니, 이 글을 읽고 계신 여러분께선 이게 중요하단 걸 최대한 빨리 깨달아야 합니다 흑흑..

 

 일단 변수를 선언하려면 자신이 변수를 어떤 용도로 쓸 것인가에 따라 키워드를 입력해줘야 합니다. 젠스크립트에선 변수를 선언해줄 수 있는 키워드가 1.12 이전까지는 var val, 이 두 가지밖에 없었는데 1.12부터는 새롭게 global static 키워드가 추가됩니다. 하나씩 알아가보도록 합시다.


 1.1. var 

 var foo;
 var seren = "geungji";
 var iron = <minecraft:iron_ingot>;

 // seren이란 변수가 이미 선언되었으므로, var를 생략할 수 있다.
 seren = "thangorodrim"; 
 iron = 1;

 

 아마도 가장 많이 쓰게 될 키워드 var 입니다. variable에서 따옴에서 짐작할 수 있듯이 이 키워드는 변수를 의미합니다. , 값 변경, 중복 적용이 가능합니다.

위의 스크립트를 예로 들자면, seren이란 변수를 처음에 "긍지"라는 문자열로 선언했는데, 뒤에는 "상고로드림"이라는 문자열로 값을 변경한 것을 볼 수 있습니다. iron이란 변수를 처음엔 마인크래프트 철 주괴 아이템으로 선언했다가, 뒤에는 1이라는 숫자로 다시 적용된 것을 볼 수 있습니다.

 

 이러한 특성을 지닌 var은 스크립트 상에서 주로 일반적인 값을 선언할 때나 값 변경이 잦은 값들을 사용할 때 많이 활용됩니다.

 

 1.2. val  

  val foo; 
# foo = <minecraft:apple>; // 변경 불가능하다.

  그 다음으로 소개드릴 키워드는 val 입니다. 이 변수는 한 번 정의가 되면 그 값을 변경할 수도, 중복 적용도 할 수 없습니다.

그렇습니다! 상수가 된다는 것입니다! 보통 스크립트 상에서 고정시켜두고 써먹을 상수(예를 들어, 오어 딕셔너리)를 정의할 때 많이 쓰입니다.

 

 1.3. global과 static

 1.12부터 추가된 새로운 개념의 변수들입니다. 바로 전역변수. 이 변수를 활용하기 위해선 먼저 Scope(범위)의 개념을 알아야하기 때문에, 고급 트위커 문법에서 다뤄질 예정입니다.

 

 

2. 타입

 타입은 변수에 실질적으로 지시될 값의 종류를 나타냅니다! 젠스크립트 문법의 모체가 되는 자바스크립트는 타입의 종류가 거의 없다시피 해서, var를 쓸 때도 타입의 경계가 굉장히 모호하다는 것이 특징입니다. 그런데 우리가 다룰 젠스크립트는 JS와는 다르게 이러한 타입의 구분이 착착 되어있습니다! 타입 구분이 자바랑 아주 흡사하죠. 아무래도 마인크래프트의 NBT같은 데이터를 다뤄야하고, 무엇보다 자바 위에서 구성된 인터프리터 언어라서 그런 걸까요?

 
이게 아주 큰 차이점이기에 실제로 스크립트 상에서 변수를 다룰 때 타입의 명시 여부가 여러분의 스크립트가 잘 굴러가는가! 아니면 에러의 나락으로 빠져버리는가.. 가 결정되기 때문에 중요하게 눈여겨 볼 필요가 있습니다.

 

 2.1. 타입의 종류 

 아무래도 우리가 변수나 상수를 선언하기 전에, 우리는 쓸 값의 타입을 먼저 결정해야겠죠? 우리가 쓸 수 있는 타입의 종류는 무엇이 있는지 봅시다.

대표적으로 많이 쓰이는 타입들의 종류는 아래와 같습니다. 자바랑 비슷해요!

 

 

 

 

옆의 IData 계열이나 IIngredient 계열같이 분류한 이유는 이 젠스크립트의 타입들이 어떤 식으로 쌓아 올려졌나를 보면 알 수 있습니다.
젠스크립트는 자바 위에서 돌아가서 젠스크립트의 타입마다 대응하는 클래스가 있습니다! bool 타입은 DataBool에 대응하는 식으로요. 이러한 클래스들은 전부 IData IIngredient란 클래스를 상속하는 구조입니다. 쉽게 예를 들어 말하자면 보낌이나 양명같은 분들이 타입이고, 유튜브 크-리에이터나 우가우가 BJ IData IIngredient같은 거라 보면 얼추 비슷합니다. 후후..

 이에 대한 자세한 구조 설명은 고급 트위커 문법에서 ZenClass와 함께 다룰 예정입니다.

 

 2.2. 타입의 선언

  타입의 종류를 살펴봤으니, 본격적으로 타입을 선언하는 방법에 대해서 알아봅시다!

 var foo; 
 foo = <minecraft:iron_nugget>;

 위의 코드에서 변수 foo의 타입은 무엇일까요? 철조각이란 IItemStack을 지시해주는 걸까요? 실제로 foo란 변수로 레시피 제거나 변경을 시도하면 에러 메시지를 구에엑 토해낼 겁니다.

이유는 타입은 변수가 선언될 시점에 결정되기 때문입니다. 즉, 위의 foo IItemStack도 아니고, IIngredient도 아닌 그냥 IAny라는, 타입이 결정되지 않은 상태가 되어버리는 겁니다. 한마디로 못 써먹는다는 소리죠.

 

 그럼 어떻게 해야하느냐! 아래 코드를 봅시다.

// IIngredient 계열 타입들은 import로 해당하는 타입의 클래스를 불러줘야한다.
import crafttweaker.item.IItemStack;

  var foo = <minecraft:iron_ingot>;

  var apple as IItemStack = <minecraft:apple>;
# apple = 1; // apple 변수엔 IItemStack만 올 수 있다.
  apple = foo;

 위에서 설명했듯이, 타입은 변수가 선언될 시점에 결정된다고 했었죠? foo 변수는 선언될 때 <minecraft:iron_nugget>이란 값으로 선언하였으므로, 타입은 IItemStack으로 결정됩니다.

 

그렇다면 특정한 값으로 선언하지 않고, 변수 자체의 타입을 결정할 방법은 없는걸까요? 아닙니다. 바로 as라는 타입을 결정해주는 키워드를 사용하면 됩니다.
 위와 같이 변수명 옆에 as <type>를 붙이시면 apple이란 이름의 변수는 IItemStack으로 타입이 고정되는 것이죠. 게다가 IItemStack 이외의 타입은 올 수 없는 타입 세이프 기능까지 쓸 수 있다는 것도 확인할 수 있습니다. 이런 식으로 변수에 타입을 매겨서 활용하면, 나중에 함수 같은 기능을 사용할 때 굉장히 유용합니다.

 

 2.1. 타입 형변환(캐스팅) 

 만약 어떤 값이 있다면 이 값의 타입을 다른 타입으로 변경할 수는 없을까요? 있습니다! 마찬가지로 as 키워드를 사용하시면 타입 변환이 가능합니다.

 var foo = 15;
 var foo_str = foo as string;

 print(foo_str);

  foo는 15라는 값을 갖고있는 정수형의 int입니다. 하지만 foo_str란 변수는 foo를 string으로 형변환하였으니 “15”라는 문자열 형태의 값을 갖게 됩니다. 따라서 print(foo_str)는 15를 출력하게 됩니다.

다만 상호 변환이 되는 것이 있고 안 되는 것도 있습니다. 예를 들면 0.5라는 실수형 타입의 값을 다른 실수형으로 바꿀 수 있지만, 배열이나 Map을 정수형으로 바꿀 수 없죠. 아래는 그걸 정리한 표입니다.

 

 

 

 

( 출처 : https://crafttweaker.readthedocs.io/en/latest/#Vanilla/Data/IData/#overview )


float, double같은 실수형 같은 타입이 int같은 정수형으로 형변한이 된다는 것이 조금 의아하신 분들도 계실 겁니다. 0.5 3.14같은 게 정수형으로 형변환된다고? 됩니다! 물론 소수점 자릿수가 전부 상실된 채로 형변환될 뿐이죠.

 

 젠스크립트 상의 형변환은 자바의 형변환을 따르게 되어있습니다. 실수형이 정수형으로 형변환될 때도 소수점을 잃는다던가, long이나 int같은 바이트 수가 큰 타입이 byte short같은 작은 타입으로 다운캐스팅되는 것도 자바랑 동일하게 이뤄집니다.

 

CraftTweaker / MineTweaker
(크래프트트위커 / 마인트위커)

원 개발자 : StanHebben, Jaredlll08
마인크래프트 버전 : 1.7.10 ~ 1.12 (1.12 기반)

 

트위커!
모드팩 깎는 장인들에게 있어서는 금싸라기가 아닐 수 없는 모드입니다. 그도 그럴 것이 이 모드를 잘 활용하면 마인크래프트의 레시피를 입맛대로 뜯어고칠 수 있을 뿐만 아니라, 애드온만 덕지덕지 붙여주면 직접 모드를 뜯어 손보지 않아도 타 모드의 레시피를 변경할 수 있거든요.

그런 의미에서 현재 다음 시즌의 모드팩을 위해 구르고 있는 팀원들에게 트위커 교육도 시킬 겸 이 강좌를 쓰게 되었습니다. HAYO?

참고로 트위커의 기본적인 내용은 1.7.10부터 1.12까지 별반 크게 차이나지 않기에 강좌의 버전폭을 넓혔습니다만 트위커도 어언 세월이 지나면서 세대 교체도 한 번 일어났고 많은 세부 기능이 우후죽순 추가되었기에, 새로운 기능같은 부분은 쓸 수 있는 버전인지 아닌지 별도로 주석을 달아드릴 예정입니다. 강좌는 아무래도 최신버전이기도 하고 기능면에서 더 풍부한 1.12에 초점이 맞춰질 예정이니, 혹시나 이 기능을 하위 버전에서 써봤더니 지원이 안된다! 는 둥의 에러 메세지가 뜬다면 코멘트에 남겨주시면 됩니다 하하

그럼 시작해봅시다!

 

0.      준비물

 -
포지가 적절히 깔린 모드 마크 클라이언트
 -
트위커 모드파일 ( * https://minecraft.curseforge.com/projects/crafttweaker )
 - Notepad++, Sublime Text
등과 같은 텍스트에디터

 -
긍지

1.      트위커를 입문해보자

보통 트위커 모드를 넣고 마인크래프트를 한 번 실행하고 나면 마인크래프트 폴더 안에 scripts라는 폴더가 생깁니다.
 
이 폴더가 바로 트위커가 불러들여오는 스크립트 파일들을 저장하는 곳입니다. 스크립트 파일은 .zs 란 확장자를 사용하므로, 앞으로 스크립트를 작성한 후에 마크로 적용하기 위해선 zs 파일로 저장해야 되겠죠
?

이런 식으로 차곡차곡 저장하면 됩니다. 또한, scripts 폴더 내에 새로 폴더를 만들어서 스크립트를 따로 저장해도 인식이 되므로 스크립트 파일들을 그룹별(: 작성시간, 모드 등)로 분류하고 싶으시면, scripts 폴더 내에 새로 폴더를 만들어서 정리하면 됩니다..

이제 스크립트 파일들이 어떻게 굴러가는지 알았으니 직접 스크립트를 작성해볼까요? 텍스트에디터를 열어줍시다.

, 아직 휑하군요. 이제 스크립트의 첫 걸음에 당도했으니 걸음마부터 떼야겠죠. 천릿길도 한 걸음부터 시작이란 법도 있잖아요? 후후

 

print(“Hello World!”); 를 쳐주신 다음,

  scripts 폴더 내에 반드시 zs 파일로 저장해줍시다.
! 우리들의 첫 스크립트가 완성되는 순간입니다. 비록 “Hello World!” 밖에 출력하지 않지만, 첫 단추를 잘 채운 것이 곧 위대한 발걸음로 향하는 길이란 걸 여러분들은 잘 아시리라 믿어 의심치 않습니다 ㅎㅎ

그런데 마크를 켜보면 Hello World! 란 문구는 어디에도 보이지 않습니다. 않이.. 기껏 스크립트를 썼는데 적용이 안된 것인가?? 라고 생각할 수도 있겠지만,

 

띠용! 마인크래프트 폴더 내에 minetweaker.log를 열어보면 Hello World!가 출력되어있음을 확인할 수 있습니다.
 
minetweaker.log (1.12부터는 crafttweaker.log)는 앞으로 스크립트를 로딩하다 생긴 에러 메시지라던가, 트위커에서 추가하는 커맨드를 이용하여 다양한 정보를 확인할 수 있는 곳이니 반드시 기억해두도록 합시다.

 

아 많이 썼다! 폐기물급 티스토리 에디터에서 이정도도 버티면 용하다고 생각합니다.. 이 핵구데기 에디터.. 시발

다음 시간에는 본격적으로 스크립트를 어떻게 굴려먹는가에 대해서 알아보기로 합시다. 그럼 20000

안녕하세요. 10분 공략의 북극여우입니다. 읽는데 10분이 아니고 사진 찾는것도 포함해서 작성하는데 10분입니다. 10분 지나면 얄짤없이 그만 씁니다. 절취선 이하로 타이머 잴 것입니다. 간단한 모드 오버뷰 위주라고 생각하시면 좋겠습니다. 

-----------------------------------------------------------------------절취선-----------------------------------------
타이머 시작했습니다. 급박하군여. 



[북극 10분공략] 1. TorchMaster - 본부의 밤을 안전하게..


이런 횃불에 익숙하십니까? 밤이 두려우십니까? 그런 분들이 애용하는 물픔이 바로 이 매그넘 토치죠.

익숙한 그 자태


근데 이건 엑유 1 시대의 유산이고, 이제 엑유 2로 올라와서는 없습니다.그럼 우리는 그박처럼 강박 가득한 횃불질을 해야할까요?

아님니다. 메가 토치라는 걸 추가하는 토치마스터 모드가 있습니다.!

링크는 https://minecraft.curseforge.com/projects/torchmaster 입니다

특징 1. 몹스폰 안되는 반경 설정 가능합니다

2. 나름 쌉니다(가격자체는 매그넘보다 비쌀지모르겠지만 얻기 쉽습니다)

3. 바닐라 몹젠만 막습니다. 즉 엑유2 커스드어스나 스포너 등등 전부 사용가능

4. 일정 시간만 지속되게 컨피그에서 설정할 수 있습니다. 긍지를 위해.


하지만 너무 비싼걸요? 세렌은 이거 쓰려면 일주일은 걸리게 생긴 레시피입니다.

그런 가난한 자들을 위해. 초기 본부 안전대책으로 좋은

테린 라이터. 안에 목탄같은 연료 몇개랑 횃불 몇뭉 넣어두면 주변에 횃불을 일정 간격마다 설치해주는 그박대행기계입니다. 속도도 꽤 빨라요. 대신 부수고 다시놓으면 횃불 중복설치 하더라구요.

체감상 거리는 한 반지름 70블럭정도는 넉넉히 설치하더라구요. 반드시 레드스톤 신호 줘야 작동합니다.


이건 드레드 램프입니다. 공포의 등잔이네요. 이건 패시브 몹(즉 동물, 정확히는 Bat, Ocelot, Squid, Pig, Sheep, Cow, Chicken, Rabbit, Wolf, Horse (including Zombie Horse!)가 스폰하지 않게 막습니다. 

오징어 많이 나오는게 빡친 제작자가 만들었다고 합니다.

자연젠만 안되지, 교배는 가능합니다. 반경 64블럭(지름인지 반지름인진 모르겠습니다)


아아.. 이제 50초 남았습니다. 이말을 쓰면서 45초가 됐습니다. 사실 필요한 건 다 쓴거 아닌가? 음... 한번 둘러보고 고민하는 새 10분이 끝나가고, 이제 2초 남


-------------------------------------------------------절취선-----------------------------------------------

다음에 또 볼지 안볼지는 모릅니다. 안녕~

그림을 클릭하면 모드 프로젝트 페이지로 이동합니다.


안녕하세요. 마지막 휴가(?) 중에 글을 작성해봅니다.

아스트랄 소셔리는 마법 모드로써 흔히 알고있는 사움크래프트와 비슷한 마법모드입니다.

이 글은 공략이 아닌 간단한 소개 및 정보를 작성하려하는데, 공략이 될 수도 있습니다.

해당 글은 사람에 따라서는 스포일러가 될 수 있습니다.


이 모드도 기본적으로 책((Journal: 일지)으로 기술트리, 제작법, 사용법등이 모두 작성되어있지만, 영문으로 작성되어있어서 조금의 난이도가 있습니다.

(책은 기본적으로 지급됩니다. 물론 제작도 가능)

책의 제일 처음


기본 화면에서 휠 혹은 W,S(기본설정) 으로 줌 인/아웃 하여 기술표를 볼 수 있다.


책을 펼치면 첫 사진과 같이 성운이 하나가 보이는데 커서를 올리면 이름이 나오고 휠 또는 W,S(기본 키설정)으로 줌 인/아웃을 하여서 지식을 확인 할 수 있습니다.

또한 모드를 진행하면서 사진 오른쪽 상단에 지식(Knowledge) 뿐만아니라 별자리(Constellation), 특전[혹은 특성](Perk)등의 탭이 추가로 생성되며

해당탭에서 해당하는 정보를 열람 할 수있습니다.


시작을 하기위해서는 재료도 필요하지만, 고대의 제단(모드에서 생성하는 구조물)을 찾아야합니다.


소형 제단(?)


고대 제단


거대 제단 지하


위 사진과 같이 자동으로 생성되어있는 제단을 찾아서 최초의 시작을 할 수 있습니다.

제단에는 상자가 최소1개에서 2개 정도 있는데, 그 상자 안에는 모드에 필요한 재료(대리석(Marble),아쿠아마린(Aquamarine),별자리 종이(Constellation paper) 등이 들어있습니다.


별자리의 정보를 얻을 수 있는 종이


별자리 종이를 획득하면 별자리의 정보를 얻을 수 있는데, 최초에 4개 그리고 일정량 이상의 지식을 얻으면 추가로 6개의 추가 별자리를 알 수 있습니다. 

(1개의 별자리에 1개의 종이가 필요합니다. 별자리 정보를 모두 획득하면 종이는 아무런 기능을 하지 않습니다.)

별자리들은 우리가 알고있는 별자리가 아닌 모드에서 추가한 특별한 별자리이며, 날마다 관측가능한 별자리가 달라집니다.

별자리를 관측하여 정보를 얻고나면 밤하늘 배경에 해당 별자리가 보입니다.

다양한 별자리들


추후 모드가 심화되면서 여러 제단을 짓고, 별자리의 힘을 끌어와서 다양한 기능(몬스터 접근방지, 동물 교배, 시간 가속(?), 신호기와 같은 버프(재생, 저항 등))을 가진 의식(Ritual)등을 설치 할 수 있습니다.

조율(Attunement)중인 수정(Crystal)


모드 서버플레이에 완벽한 한축을 담당하기에는 약간 모자란 모드지만, 지금도 계속 개발중이고 사움크래프트가 없는 최신 버전에서는 충분히 매력적인 마법모드입니다.

이 글이 모드에 대한 흥미 유발 또는 입문에 도움이 되었길 바라면서 이만 글을 마칩니다.

Power Converter Mod


본 강좌는 Power Converter Mod 1.7.10 3.3.0 77 unofficial 을 사용합니다


안녕하세요. 방금 글 올리고 자려고 했는데, 재밌는 블록을 찾았습니다. 바로 유니버셜 차져. 이거 EU랑 RF 다 지원함ㅋㅋ 개꿀 ㅋㅋ

여튼, 모드 소개부터 간략하게 해볼께요. 

쉽게 말해, 전력 단위를 바꿔주는 모드입니다. EU - RF - 스팀 간 변환이 자유로워요. 비율은 컨피그에서 조절 가능.

변환 방식은 간단합니다. Consumer 에서 전력 소모 - Energy Bridge 에 저장 - Producer 에서 에너지 생산.


여기서 컨슈머쪽 접두사에 따라 소모하는 전력 체계가 정해지고, 프로듀서 접두사에 따라 생산하는 전력 체계가 정해집니다.


자, 여기 그렉텍 터빈이 여러 대 있습니다.



 이 중 5대의 스팀 터빈은 퓨전 리액터쪽으로 할당해두었고, 남은 5대의 스팀 터빈과 3대의 플라즈마 터빈에서 나오는 에너지를 기계실로 돌릴겁니다. 그런데 제 기계실은 RF를 주로 쓰는지라, 저는 그렉텍 EU를 RF로 바꾸고 싶어요. 어떻게??


간단합니다! 이렇게 GT UV Consumer 와 에너지 브릿지, RF Producer를 두고 테서렉트로 보내면 되요!



어때요, 참 쉽죠?


에너지 브릿지 우클릭시 다음과 같은 GUI가 뜹니다.



각 방향에 무엇이 연결되었는지, 그리고 전력이 얼마나 들어오고 나가는지 정보를 알려줍니다.

현재 제 에너지 브릿지는 동쪽에서 GT UV 1A를 받아먹고, 서쪽으로 RF 18.7k를 내보내고 있다고 하네요.

위쪽 LIMITED 라는 것은 출력에 비해 입력이 작을 경우 input limited 라는 문구가, 입력에 비해 출력이 작을 경우 output limited 라는 문구가 뜹니다. 다만 GT EU 쪽은 원체 계산이 더러워서 그런지 제대로 작동을 안 하나봐요. 사진에는 input 만 떠 있지만 실제로는 input output이 번갈아가면서 계속 뜹니다. 대체 뭔지;


참고로 에너지 브릿지와 RF 블록은 웨일라에 정보가 뜹니다.




아, 그렉텍 프로듀서는 쉬프트 우클릭시 전류를 바꿀 수 있습니다. 1A~16A까지요. 


지원하는 전력 종류는 RF, IC2 EU, 스팀, 수퍼히티드 스팀, GT EU 이렇게 총 5 종류이고, GT EU는 ULV부터 UV까지 총 9 종류로 세분화되어 있습니다.


※서버에 넣으실 경우, 스팀 발전기중 효율이 100%를 넘어가는 발전기가 종종 있습니다. 즉 스팀 발전기에 스팀을 공급 - EU 얻음 - 이걸 다시 스팀으로 전환 ... 이런 무한 고리를 방지하기 위해서 제작자는 스팀 프로듀서에 틱당 생산량 제한을 두면 좋을 거라고 하네요. 아니면 아예 마인트위커같은거로 조합 불가능하게 해두던지.


자, 이제 유니버셜 차져를 봅시다.



제일 좌측 하단 블록이 유니버셜 차져입니다. 부수기 귀찮아서 그냥 이대로 찍었어요. ㅎㅎ

하여튼, 이 블록은 무엇을 하는가. 간단합니다.  근처 인벤토리의 전력이 필요한 기계를 충전해줍니다. 플레이어, 상자 가리지 않습니다. 전력 체계도 가리지 않습니다. 개씹꿀. 엔더 IO의 와이어리스 차져따위는 명함도 못 내밀겠습니다.

말만 해서는 좀 그러니까, 직접 보여드리겠습니다.

여기 산업의 이리듐 드릴, 그렉텍의 트라이코더, 써멀의 커패시터가 있습니다. 



보시다시피 전부 에너지가 꽉 차지 않았습니다.


이제 이것들을 아래 엔더 파우치에 넣으면...



트라이코더가 천천히 충전되고 있습니다.



드라코닉 커패시터도 깔끔하게 충전됩니다. 순식간에 차버리네요. 올려놓고 스샷 찍으려고 보니까 꽉 찼음;;



이리듐 드릴도 상당히 빠르게 충전됩니다. 드라코닉 커패시터만큼은 아니지만, 제법 빠르네요.


보시다시피 산업 EU, GT EU, RF 모두 충전됩니다. 다만 RF는 틱당 충전량이 10MRF로 매우 높은데, EU 두 놈은 틱당 충전량이 상당히 낮습니다. 정확히는 해당 도구의 전력 티어를 따라가요. 트라이코더와 드릴이 느리게 충전되는 이유가 바로 이것. RF도 아마 해당 도구 입출력에 제한이 있다면 걸릴겁니다.


이제 EU 충전 안 해주는 불편한 차징 스테이션 말고 갓갓 유니버셜 차져 쓰세요!













액체 수송 끝판왕! Pressure Pipes

Ever tried moving 10,000mb of steam per tick?


본 공략은 Pressure Pipes 1.3.0.130, BDLib 1.9.4.109를 사용합니다.


안녕하세요. 사수생입니다. 서버 안 들어간지도 오래 됐고... 해서 간만에 공략 하나 들고 왔습니다.

오늘 소개할 모드는 액체 수송 모드인데요, 아시다시피 액체 수송 모드는 이미 여러 종류가 있습니다.

Extra Cells, 빌드크래프트, 써멀 다이나믹스, 엔더 IO, 로지스틱스 파이프, 그렉텍, 엑스트라 유틸리티, 팅커스 등등...

레드 오션이 따로 없네요.

그러면 대체 이 모드는 무엇이 다를까요?


우선, 액체 수송량에 제한이 없습니다. 정확히는 java int 자료형의 한계치인 2,147,483,647mB/t까지 수송이 가능하죠. 사실상 무제한입니다.

다음으로, 한 파이프로 수송하는 액체 가짓수에도 제한이 없습니다. 마인크래프트의 모든 포지 호환 액체를 한번에 수송할 수 있어요!

마지막으로 아웃풋이 여러개인 경우, 모든 출력을 같게 내보냅니다. 예를 들어 100mB을 4 기계에 나눠 넣는다고 하면 한 기계에 100mB을 다 쑤셔박는게 아니라 4대의 기계 각각에 25mB씩을 넣어주지요.

이런 미친 장점을 가지고 있지만, 단점도 명확합니다. 바로 다른 모드의 파이프와 이 모드의 파이프는 직결이 안된다는 것. 직접 써보면 상당히 귀찮습니다.

인풋 아웃풋 셋업도 귀찮고... 하지만 그럴만한 가치가 있어요 ㅎㅎ


조합법은 NEI를 참고해주세요!


1. 추가하는 블록들 및 설정


왼쪽부터 순서대로

High Pressure Check Valve

High Pressure Pipe Sensor

High Pressure Pipe

High Pressure Input

High Pressure Output

Fluid Drain

Sluice

High Pressure Router

입니다.


1.1 High Pressure Pipe


위에서 사진 찍는걸 까먹음 ㅎㅎ;;

여튼, 흔하디 흔한 액체 수송 모드의 파이프입니다.

아까 말씀드린대로...



다른 모드의 파이프(빌크, 써멀, 엔더IO...) 그 무엇과도 연결이 되지 않습니다.



1.2 High Pressure Check Valve


요렇게 생겼습니다. 화살표 방향으로만 액체가 흐릅니다.

렌치로 블록을 돌릴 수 있습니다. 아래 등장하는 모든 블록에도 해당.



옆에 레버를 달아놓은 것을 보고 눈치채신 분들도 있겠지만, 레드스톤 신호에 따라 밸브가 잠기기도 하고, 열리기도 합니다. 

레드스톤 신호가 들어오면 밸브가 잠기고, 신호가 없으면 열립니다.


1.3 High Pressure Pipe Sensor


센서는 현재 이 파이프에 액체가 흐르는지 여부를 알려줍니다. 웨일라가 설치되었다면 얼마나 흐르는지도 알려주고요.

액체가 흐르고 있으면 저 중앙의 검은 점이 빨갛게 바뀝니다.

이것도 화살표 방향으로만 액체가 흐릅니다.


1.4 High Pressure Input


외부 액체를 받아서 High Pressure Pipe 로 넣는 역할을 합니다.

레드스톤 신호를 준다면 펌프로도 작동 가능! 개꿀.



참고로, 뒷면은 저렇게 생겼습니다. 딱 봐도 저기로 뭔가 넣어야 할 것 같지 않나요?

네. 저 면으로만 액체를 받고, 전 사진의 면으로만 뱉습니다. 귀찮아...

정확히는 블록이 파란색, 연한 파란색으로 나뉘어 있지요?

파란색이 High Pressure Pipe와 연결되는 부분, 연한 부분이 외부 파이프나 탱크와 연결되는 부분입니다.


1.5 High Pressure Output


네. High Pressure Pipe 에 흐르는 액체를 외부 탱크나 파이프로 옮겨줍니다.



얘도 Input처럼 연결되는 부분이 다르므로 주의하세요.


1.6 High Pressure Pump


얘는 High Pressure 접두사가 붙었는데도 파이프와는 연결이 되지 않습니다. 

레드스톤 신호를 주면 뒷면의 탱크에서 액체를 모조리 뽑아 자기 앞의 탱크나 파이프로 전송합니다.

Pressure Pipes 모드의 펌프답게 수송 제한량은 2,147,483,647mB/t!


1.7 Fluid Drain


단어만 보면 액체를 빨아들일것 같은데, 그 반대입니다. High Pressure Pipe에서 액체를 공급받아 자신의 앞에 액체를 놓습니다.

단, 월드에 놓을 수 있는 액체만 가능하며, liquid XP를 공급받을 경우 경험치 오브를 생성합니다.



요렇게 셋업하고 레버를 켜면...



이렇게 물을 놓습니다.


1.8 Sluice


얘는 Fluid Drain 과 하는 일이 같습니다. XP만 빼고요. 아무래도 제작자가 졸면서 만들었나 봅니다.


1.9 High Pressure Router


라우터입니다. 빌드크래프트의 다이아몬드 파이프와 비슷한 역할입니다.

단, 레드스톤 신호에 따라 조절이 가능하고, 아웃풋에 중요도를 매길 수 있습니다. 다이아 파이프 상위호환격?

참고로 얘는 다른 모드의 탱크나 파이프와 연결되며, High Pressure Pipe와도 연결됩니다.

우클릭해보면 아래와 같은 GUI가 나타납니다.



처음 상태. 전부 닫혀있고, 레드스톤 신호도 전부 Always On 상태입니다. 필터도 전부 비활성화 상태.



레드스톤 신호는 저렇게 한번 클릭시마다 바뀝니다. 아이콘만 봐도 어떤 상태인지 아시겠죠?



비활성화 상태. 타 모드 파이프와 비활성 면은 연결되지만, High Pressure Pipe와는 이 상태에서는 연결되지 않습니다.



패시브 인풋. 외부에서 넣어주는 것만 받아먹습니다.



액티브 인풋. 외부에서 직접 끌어옵니다. 옆에 탱크가 있다면 액체를 끌어오는 식.



아웃풋은 아웃풋인데 중요도가 낮습니다. 



중간 중요도 아웃풋.



높은 중요도 아웃풋.

중요도가 높은 순서대로 액체를 공급해줍니다. 중요도가 전부 같다면, 자기 멋대로 수송합니다.


1.10 Infinite Water Source


별 말이 필요한지요. 무한물 공급기입니다. 

타 모드 파이프와는 연결이 가능하지만 Pressure Pipe와는 직결이 불가능하고, High Pressure Input을 추가해서 펌프처럼 써야 합니다.


1.11 필터링하기

여기 용암을 수송중인 펌프가 있습니다.



여기에 물 셀을 들고 우클릭하면...



이렇게 저 중앙의 사각형이 물 텍스쳐로 바뀌면서 필터링이 됩니다. 웨일라 정보창이 바뀐 것 보이시죠?



빈 셀을 들고 우클릭하면 필터링이 사라집니다.



당연히 필터링이 되면 그 액체만 통과 가능.

필터링은 IC2 셀 말고도 다른 액체 컨테이너로도 가능합니다.

버킷이라던가. 보틀이라던가, 등등... 써멀의 플루오브는 안됩니다.



2.1 액체 수송해보기


여기 스팀 터빈 5대가 있습니다. 뉴트로늄 휴-지 터빈 로터를 써서, 한 틱당 4,800mB의 스팀을 먹고 3360EU의 출력을 내는 괴물같은 놈들이죠.

헌데, 그렉텍 라지 터빈들에는 참 거지같게도 Optimal flow라는 개념이 있습니다.

해당값만큼 연료를 공급해서 효율이 최대가 되는데, 문제는 그 값을 넘어선 연료를 공급하면 넘치는 연료는 씹어버립니다.

저 스팀 터빈의 경우, 최대 6,000mB/t 만큼 스팀을 퍼먹는데, 6,000mB를 주나 4,800mB을 주나 출력은 3,360EU/t으로 같습니다!

이런 거지같은.

따라서 일반 파이프로 스팀을 공급하면 스팀 터빈 한 대당 1,200mB/t 만큼의 스팀을 허공에 버리는 셈이 됩니다.

그래서! 방금 소개해드린 Pressure Pipes 모드로 한번 스팀을 공급해볼께요.



스팀 터빈을 1층에, 보일러를 2층에 설치해두었습니다. 각 보일러가 2,000mB/t씩, 총 24,000mB/t의 출력입니다.

다른 모드의 파이프를 쓴다면 스팀 터빈 4대가 돌아가겠지만, Pressure PIpes 모드를 쓴다면 이 12대로 스팀 터빈 5대를 돌릴 수 있습니다. 

개꿀



아, 참고로 포지 마이크로 블럭과 호환됩니다. 할로우 커버를 쓰면 위 사진처럼 파이프를 벽에서 뽑아내서 쓸 수 있어요.

보일러를 돌릴 연료와 물 전부 저 한 파이프로 공급할겁니다.



바닥에 전부 넣어버리고...



연결이 전부 다 되었습니다. 이제 필터링을 해줄 차례.



연료와 물을 입력해주고, 아웃풋은 따로 설정할 필요는 없지만 스팀으로 해줍니다.



연료가 잘 들어갔네요.



보일러 가동 완료!



참고로, 포지 마이크로 블럭 커버를 쓰면 저렇게 파이프를 분리할 수 있습니다



할로우 커버만 파이프가 통과 가능.



밸브로 파이프를 닫아두었습니다. 안 그러면 필터링하기 전에 인풋 해치로 물이랑 연료랑 스팀이 들어가려고 하면서 개판이 나거든요. 한 파이프로 여려 액체 운송할때는 반드시 필터링을 해주셔야 정신건강에 좋습니다.



전부 필터링도 완료되었으니 터빈을 가동해보겠습니다.



12,000mB/t을 5등분해서 각자 4,800mB/t씩 잘 먹고 있습니다.



딱 최대 효율, 최대 출력 상태입니다. 김적절.


이상으로 Pressure Pipes 모드 공략을 마치겠습니다 ^오^


페이스풀 32x32 텍스쳐팩

 

안녕하세요, 세렌입니다.

블로그질을 하면서 많은 사람들과 만났는데, 그중 순위권에 위치하는 요청이 'XX 모드 어디서 받아요??'… 뿐만이 아니라 '사용하시는 텍팩 공유좀..' 였습니다. 세렌이 이제까지 사용하던 텍팩은 Faithful 32x32, 바닐라 마인크래프트 블럭들과 생김새는 똑같은 대신 화질만 고화질로 바꿔주는 텍팩입니다. 마인크래프트 기본 텍팩을 좋아하는지라 (세렌은 빌어먹을 오각형 sphax의 열렬한 안티입니다)

몇몇 분들이 본 블로그에서 강좌를 보시고 강좌에 사용되는 기계나 아이템이 좀 고화질같다~~ 해서 텍팩 공유를 요청하신 적이 많았습니다. 헌데 사실 세렌은 1.6.4 들어서 바닐라 마인크래프트용 텍팩 (Faithful 32x32) 밖에 사용하지 않았었습니다. 1.6.4 이전에는 여러 모드들의 페이스풀 텍팩이 풀려 있어서 제가 그걸 적절히 짜집기했는데, 1.6.4가 되면서 도저히 찾을 수가 없었거든요. 그래서 강좌에서 기계가 조금 고화질스럽다.. 하면 사실 1.6.4 이전에 씌여진 강좌였던 것.

하지만 오늘 다행이 페이스풀 32x32가 모드 텍스쳐도 지원하는걸 발견하였습니다. 여러개를 골라서 짜집기해야할 불편함도 없이 그냥 수십개의 모드 텍팩이 그대로 때려박혀져 있어서 텍팩 용량이 40MB에 육박합니다. 밑에 예제 스샷을 올려놓을 테니 한번 보시고 괜찮다 싶으시면 받아보세요.

 

 

 

뭐 이정도. 괜찮으면 아래 링크로 가서 받아 보세요.

https://github.com/F32Organization/Faithful32-1.7.10

http://f32.me/

오른쪽 메뉴에 있는 DOWNLOAD ZIP 버튼을 클릭하여 압축파일을 받으신 후, 안의 폴더Faithful32-1.7.10-master를 마인크래프트 폴더의 resourcepacks 폴더 안에 넣어주시면 됩니다.

그후 FTB 마크가 새겨진 faithful을 선택하면 끝.

 

 

 

아~주 오래전에 쓴 글이지만 지금도 쓸만할것 같아 부활시켰습니다. 하아압

BOP 버전: BiomesOPlenty-1.7.10-2.1.0.1609-universal

RTG 버전: RTG-1.7.10-0.4.0

 

제이디드 클리프 (Jaded Cliffs)

온도: Normal

습도: Arid

 

옥색 절벽지대라는 뜻으로 대충 번역이 되는 제이디드 클리프 바이옴. 세렌은 이 바이옴을 정말 정말 좋아합니다. 왜?

그야 참으로 아름다운 바이옴이기 때문이지요, HAYO!

쉐이더 없이 봐도 그 간지는 여전. 자생하는 나무는 BOP 에서 새로 추가하는 소나무 (Pine Tree) 며, 하늘은 옥색입니다.

절벽지형을 뜻하는 cliffs답게 평평한 땅은 찾아보기 어려운 편입니다. 단, 이점은 RTG와 함께하면 꽤나 상쇄되는데, 바닐라 BOP의 경우 그냥 깎아지는 절벽에 소나무 올려놓는것에 비해 RTG는 적절한 강과 산의 조화를 보여주거든요.

요것처럼.

정말 보기만 해도 가슴이 탁 트이는..?? 아름다운 지형이고, 새 시즌 세렌의 목표는 여기에 적어도 먹칠은 하지 않을 정착지를 건설하는 것..인데. 할수 있을까(암울

HAYO!

 

'기타 공략 > BOP 바이옴' 카테고리의 다른 글

[BOP] 02. 퀘그마이어  (6) 2016.01.10
[BOP] 01. 랜드 오브 레이크  (4) 2016.01.09

BOP 버전: BiomesOPlenty-1.7.10-2.1.0.1609-universal

RTG 버전: RTG-1.7.10-0.4.0

 

 

퀘그마이어 (Quagmire)

온도: Normal

습도: Damp

 

얘가 아니라.

진창, 수렁이라는 뜻이죠. 대충 질척질척한 늪지대를 생각하시면 맞을 듯 합니다. 평평한 부분도 있고 언덕인 부분도 있고, 물웅덩이가 사방에 있는데다가 나무 등 식물은 거의 없고 진흙도 지천에 깔려있는 거주하기 최악의 바이옴 중 하나.

 

바이옴을 늪지로 인식해 산업 고무나무가 간혹 자라는 것을 빼면 정말 황량한 땅입니다. 물이 많은지라 낮이 되면 몹들이 물로 뛰어들기에 낮에도 몹을 간혹 볼수 있는 곳이고.

이 바이옴을 살기 더러운 곳으로 만드는 일등공신인 진흙 (Mud) 블럭. 위에 올라서면 소울샌드처럼 약간 밑으로 꺼지는데, 이 위에 올라서면 역시 소울샌드처럼 이동속도가 줄어듭니다. 캐면 진흙이 나오고, 이걸로 진흙 벽돌, 진흙 갑옷, 진흙 곡괭이 같은걸 만들수 있긴 한데, 뭐..능력은 다들 짐작하시겠죠. 개판입니다.

쉐이더 없이 보면 물 색깔도 일반 물과는 다른 우중충한 갈색이라는걸 알수 있어요. 하늘 또한 우중충한 회색.

'기타 공략 > BOP 바이옴' 카테고리의 다른 글

[BOP] 03. 제이디드 클리프  (10) 2016.01.13
[BOP] 01. 랜드 오브 레이크  (4) 2016.01.09

BOP 버전: BiomesOPlenty-1.7.10-2.1.0.1609-universal

RTG 버전: RTG-1.7.10-0.4.0

 

뭐냐 이건?!

 

뭐에요. 세렌이 예전에 쓰던 BOP 바이옴 리뷰들이지. 다른 말론 포스팅 날로 먹기라는 분도 계시지만 오해입니다. 이번에 미트리아가 시즌 6을 준비하면서 바이옴 생성 모드를 바꾸는게 어떨까 하는 논의가 있었거든요. 정확히는 BOP, ATG 둘다 빼버리자? 물론 세렌은 입에 거품을 물고 반대했고, 그럼 적당한 다른 지형젠 모드가 있으면 찾아오라는 말에 돌아다니게 되었습니다.

ATG야 아주 멋있는데 단점이라면 서버가 히말라야처럼 산맥들만 이곳저곳에 솟아오르게 된다는 거죠. 잘 보면 장관이지만 또 괴로운 점도 없잖아 있고 해서, 다른게 있나 하다가 찾은 모드가 RWG (Realistic World Generation), 그리고 그 계승작인 RTG (Realistic Terrain Generation) 입니다. 이걸 테스트 서버에 넣어 보니 아주 멋진 스샷이 많이 나와서, 포스팅도 때울 겸 바이옴도 소개할 겸 해서 써 보기로.

그럼 볼까요!

 

 

랜드 오브 레이크 (Land of Lakes)

온도: Normal

습도: Damp

 

대충 번역하면 호수의 땅..이라는 이름을 가지고 있는 바이옴입니다. 이름만 들어보면 호수가 지천에 깔린 바이옴이 되어야 할것 같은데..

사실 네이밍은 함정으로, 이 바이옴에는 큰 호수 따위 없습니다 (..)

오히려 이 바이옴의 특색이라면 숨막힐 정도로 빽뺵하게 들어찬 나무들이라 할수 있겠습니다.

바닐라의 3종 나무 – 자작, 가문비, 오크를 한곳에서 볼수 있는 바이옴이기도 합니다. 세렌같이 나무를 가려 쓰는걸 좋아하는 사람들에게는 좋은 바이옴이지요. 단 나무들의 키가 꽤 큰데다가 그냥 쭉 뻗은 통짜 나무가 아니라 군데군데 가지가 쳐져 있는 나무들이므로 찹트리를 할수 있는 도끼나 팅커 럼버잭이 필요하겠지요. 그냥 도끼들고 돌진하면 눈에 테러가 될수 있으니 조심합시다.

땅 또한 이렇게 흙이 없고 돌이 들어나있는 부분이 많아 석탄, 철, 구리, 주석 등 지상 가까이 나는 광물들을 찾기에도 제격.

나무가 엄청 많아 숨을곳이 많아 주변을 싹 쓸어버리기 전에는 거주에 애로사항이 꽃필 수 있는 곳입니다. 벌목용으로는 좋겠지만. 또한 전체적으로 바이옴이 울퉁불퉁 언덕이 많이 솟아있는 편이니 평지를 좋아하시는 분들에게도 비추천.

 

이만입니다! 쉽잖아 HAYO

 

'기타 공략 > BOP 바이옴' 카테고리의 다른 글

[BOP] 03. 제이디드 클리프  (10) 2016.01.13
[BOP] 02. 퀘그마이어  (6) 2016.01.10




회사 그만두고 싶다.


이렇게 Registry 클래스에 가서 preInit부분에 추가해주시면 됩니다.



이렇게 이제 key.categories.ragnarok라는 부분에 key.keyBackpack이라는 키가 생겼습니다. 기본키는 B키 이구요.


언어파일에서 저거 그대로 써주시면 저 부분이 바뀝니다.


다음에는 가방을 착용한 상태에서 B키를 누르면 가방을 볼 수 있게 한번 짜 보도록 하겠습니다.



안녕못하네 럽홀


오늘은 모델을 가지는 방어구를 만들어보도록 하겠습니다.

일반적인 렌더링을 쓰지 않고 이번에도 Techne를 이용해서 만들어보도록 하겠습니다.




Techne를 실행하고

모델 이름엔 만들고 싶은 방어구를 만드시면 됩니다.

풀세트로 만들어도 되고, 적당히 만드셔도 괜찮습니다.

Base 클래스는 어떤걸 하셔도 상관 없지만 ModelBiped를 써야 만들기가 쉽습니다.



이렇게 열면 스티브 모양으로 틀이 잡혀 있습니다.



오른쪽 하단에 보면 이렇게 머리 몸 오른쪽, 왼쪽, 손 다리 등등이 있습니다.

나중에 모델을 다 만들고 지우셔도 상관 없습니다.



정성을 갈아 넣고 Java로 저장해줍시다.



ModelBiped를 상속해줍시다. 기본적으로 캐릭터를 렌더링해주는 부분입니다.




이렇게 빨간 부분을 수정해줍시다.


그리고 아까 Techne로 모델을 만들때 Head나 Body를 지우지 않으셨으면 지워주도록 합시다.



이렇게 아이템 아머를 하나 추가해줍시다.

모델을 렌더링 하는 부분은 getArmorModel 부분인데 저기서

머리, 머리쓰는곳, 몸, 오른쪽 팔, 왼쪽 팔, 오른쪽 다리, 왼쪽 다리의 렌더링을 보이지 않게 하는 부분입니다.

보이면 좀 이상하게 될 수도 있어요. 그래서 False로 해줍시다.


그리고 예전에 item을 등록시키는 것처럼 해주시면 됩니다.

따로 프록시에 등록해주어야 하는 부분은 없습니다.



안녕 하세요 럽홀


이렇게 크리탭 추가 클래스를 하나 생성합니다.


모드 클래스에서 저 부분을 추가합니다.

아이템이나 블록 부분에서 저렇게 설정해줍니다.


추가 되었소.


탭 이름은 언어파일에서 itemGroup.<TabNameHere> 로 하시면 됩니다.



안녕하세요. 럽홀입니다.


우\연히 옛날 남자친구 ㄴㄴ구글플러스를 봤는데

ㄴㅇㅁ러ㅏㄴ어람너함나히ㅓㅁ니ㅏㅇ하ㅣㄴ머히ㅏㅓㅁ너ㅏㅣㅎㄹ

ㄹㅇㄴ호렇농러ㅏ혼ㅇ러ㅏ혼ㅇ러ㅏ호ㅓ랑놓ㅇ



두개의...패키지...와...두개의...클래스를....만듭니다.

위에 있는 RegistryHandmill은 레시피들을 관리하고

밑에 있는 RecipeHandmill은 말 그대로 레시피입니다.


자바의 클래스는 쉽게 말해서 사용자가 선언할 수 있는 변수형 타입입니다.

저는 Recipe라는 변수를 선언한 것이지요.

어차피 다 0과 1쪼가리들 뿐입니다.



대충 이렇게 만들어줍시다. 

뭐 특별하게 아이템에서 어떤 능력을 사용하거나 그러진 않았고 온니 Java로만 짠 부분입니다. 마크 모딩을 모르셔도 이해하는 부분이에요.




사실 위에꺼 하기 전에 이걸 먼저 설계해야 합니다 뿌잉뿌잉



그리고 기계로 갈아서 나오는 더스트가 있어야겠졈.

새로운 아이템을 하나 만들어줍니다.



구리 가루를 추가하였습니다.


이렇게 레지스트리를 하나 더 만들었습니다. 

아 참 Items와 Blocks를 다 Item과 Block으로 바꿨습니다. 하지 않으셔도 되지만 전 이런거 꼭 고쳐야 하는 성격이라

고치는거 좀 귀찮으니 안하실분들은 안하셔도 됩니다.



LoveHolyTech 클래스에서 초기화하는 부분에도 추가를 시켰습니다.



이번 기계를 만들면서 아이템을 받을 공간이 하나 필요하다고 생각했습니다.

그래서 아이템 슬롯이 있다는것을 알려주는 ISideedInventory를 받아서 넣어줬습니다.

그리고 인벤토리 내용을 저장하는 배열을 하나 선언을 했구요.

volume값은 진행도입니다. 얼마나 갈아졌는지 진행바를 기록해주는 부분이죠.

그리고 이제 인벤토리에 아이템이 있으면 그 아이템을 엔티티화 해서 월드에 뿌려준 다음에 (그러니까 땅바닥에 톡 튀어 나옵니다 ㄲㄲ)

인벤토리에 있던걸 하나 깎습니다. 레시피대로 나오게 되죠.


그 밑에 NBT 부분은 이제 아이템과 volume, rotation값을 저장해줍니다.

NBT를 저장하지 않으면 게임을 저장하고 나갔다가 들어오면 아이템이 사라지는 극현상이 일어날수 있으니까 꼭 추가해줘야합니다.

나머지 밑 부분은 ISideedInventory를 가져오면 따라오는 메소드들인데 적당히 보면 뭐가 뭔지 알수 있습니다. 알수 없으면... 포기하세요 모딩;



BlockHandmill 부분에도 마찬가지로 좀 바꿨습니다.

그냥 블록을 누르는게 아니고 쉬프트 + 블록을 오른쪽 클릭 하였을때 돌아가도록 해놨습니다. (나중에 GUI를 열땐 그냥 오른쪽 클릭으로 하기 위해서)

Volume값을 1씩 증가시켜주고 Rotation값을 0.4씩 증가시킵니다.

위에 import 부분은 Keyboard를 입력받기 위해서 사용되었습니다.


이렇게하면?



WTF?


제가 잘못짰습니다. TileEntityHandmill 55번째 줄을 봅시다.



이런 젠장... 생각해보니까 inventory를 초기화를 안해줘서 Nullpointer exception이 뜬거 같습니다. 헤헿




생성자를 하나 만들어서 냅다 초기화하는 부분을 넣었습니다.



0아이템을 넣기 위해서 호퍼를 달아줬습니다.



제가 구리광물 2스택을 넣었는데 벌써 한스택은 다 들어갔습니다.

이제 더 이상 들어가지 않아요. 한번 갈아봅시당




오오 튀어나왔습니다.




이렇게 안에 인벤이 갈아졌으니까 아이템이 더 들어갔습니다. 

(처음에 튀어나온 구리 가루가 호퍼로 바로 들어가버려서 스샷을 못찍어서 두번째 간걸 스샷을 찍었습니다 -_-;;)



오늘 따라 참 우울한 날이네요.



이거 왜 쓰고 있냐 럽홀


직관적이고 판타스틱한 GUI를 만드십쇼.




안녕 럽홀




에고고 극혐 텍스쳐!




BlockHandmill 부분에 이렇게 넣어줍니다.



그림을 준비합니다.




오오..



안녕하세요 로페카 최강 귀염둥이 럽홀입니다.


이번에는 클래스를 추가하거나 패키지를 만드는 부분은 안보여드리고 텍스트로만 적겠습니다.

제가 너무 힘들고.. 이번엔 제가 먼저 짜고 따로 강의를 드리는거라서 어쩔수가 없습니다.


이전 강의때 만든 정성을 갈아 만든 모델 텍스쳐는 여기다 넣어둡시다.

src/main/resources/assets/loveholytech/textures/blocks 입니다.




패키지와 클래스입니다. 이대로 만들어주시면 됩니다.

여기다가 저번에 JAVA로 저장한 내용을 넣고 약간만 변경시켜주시면 됩니다.



빨간색 체크되어 있는 부분은 원본 소스가 원래 에러를 뿜뿜하기 때문에 이렇게 수정을 해주셔야 합니다.

그리고 네모 부분은 우리가 렌더를 사용하기 위해서 필요한 부분인데 새로 짠 부분입니다.

setRotation은 저번에 썼던 techne 프로그램에서 파란색 구를 중심으로 돌아가는 부분입니다.

Shape2와 Shape3이 어처구니 부분이였으니 이 부분은 돌려줘야 하겠죠?


이제 TileEntityHandmill 부분입니다. 뭔가 추가된게 많죠?

틱 처리 부분(updateEntity)에는 rotation이 6.4를 넘으면 0으로 가게 합니다.

rotation는 회전을 관리해주는 변수이고 6.4를 넘었다는것은 한바퀴를 돌았다라는 뜻이기 때문입니다.

그리고 setRotation과 getRotation은 외부에서 rotation의 값에 접근하기 위해서 사용되는 메소드입니다.

그 아래 readFromNBT와 writeToNBT는 블록의 NBT에 내용을 기록하기 위해 사용됩니다.

그 밑에 두개의 메소드는 서버와 클라이언트 사이에 있는 데이터를 통합시키기 위해서 사용되는 부분입니다. 꼭 추가하셔야 합니다.



렌더링을 위한 패키지 loveholy.loveholytech.render 를 만들어줍시다.

그리고 밑에 있는 아이템 렌더링을 맡는 ItemRenderHandmill 과 RenderHandmill 부분을 생성합니다.

이제 렌더링을 맡는 RenderHandmill을 편집합시다.

ResourceLocation texture를 선언하여 아까 저장해놨던 경로를 입력해주시면 됩니다.


나머지 부분은 공간을 확보하고 텍스쳐를 입힌 다음에

타일엔티티에서 회전값을 받아서 모델을 렌더링하는 부분입니다.


ItemRenderHandmill 부분입니다.

아이템을 렌더링할때에는 좀 더 작게 렌더링해야 하기 떄문에 특수한 처리가 필요합니다.

이렇게 적어두시면 됩니다.


BlockHandmill 부분도 꽤 손을 봤습니다.

onBlockActivated는 오른쪽 클릭을 했을때 인데

이 부분에서 클릭했을때 회전값을 올려주기로 했습니다.

그리고 getRenderType은 따로 렌더링 하고 있다고 하기 위해서 -1을 리턴하였고

이게 완전히 네모 모양인가를 알려주는 메소드에도 마찬가지로 false

이게 일반 블록 렌더링을 쓸건지 물어보는 부분도 마찬가지로 false를 하게 해놨습니다.



렌더링을 위해서 이게 클라이언트인지, 서버인지 가려주는 부분이 필요합니다.

그 역할이 proxy라는 놈들이 해주는데요. 이 패키지를 추가하고

두개의 클래스를 추가해줍시다.


CommonProxy 부분입니다. 

여긴 메소드가 있다~ 라는 것만 알려주면 되기 떄문에 내용은 텅텅 비워도 괜찮습니다.



ClientProxy 부분입니다. Client만 사용하는 것들을 여기다가 구현을 하시면 되는데요.

일딴 렌더러를 만들고 그걸 레지스트리에 등록을 합니다.

그리고 마찬가지로 아이템도 등록을 해주어야겠죠.



LoveHolyTech 클래스 부분으로 넘어와서 이 빨간색 상자 세개를 꼭 추가시켜줍니다.

맨 위에 부분은 별 상관이 없는데(나중에 쓰게 될거 같아서 넣었는데 쓰게 되면 설명해드리겠습니다.)

두번째 상자 부분은 이제 등록된 부분을 어딜 참고를 할지 선택하는 부분입니다.

그리고 세번째는 렌더러를 호출하는 부분이죠.


자 이제 완성. 실행해볼까염? ㅎㅎ



돌아라 낙오자여



안녕하냐해. 럽홀이다헤.


Techne라는 프로그램을 이용해서 모델을 만들어보도록 하겠습니다.


Techne는 


Techne.zip


를 눌러서 다운받으시면 됩니다.



적당하게 만듭니다. 저기는 width랑 height이 64/32로 나와있는데 128 / 64로 만듭시다.



적당하게 큐브를 만듭니다.



두부를 만듭니다(일본에는 stone을 두부라고 부릅니다. 우리가 말도 안되는 꾸븐돌이라고 부르듯)

왼쪽에 보시면 여러가지 값을 입력해두는 부분이 있는데 하나 하나씩 설명 드리곘습니다.

Dimensions

크기 입니다. 순서대로 x y z의 크기입니다. 저는 지상에서 높이 y 10정도 그리고 가로 세로가 16으로 꽉 차는 두부를 만들었습니다.

Position

저기 보이는 파란색 공의 위치입니다. 저는 14로 두었습니다.

Offset

두부와 공과의 위치입니다. 저는 저 파란색 공이 중앙에 위치하게 설정해놨습니다.

Offset

오른쪽 상단에 보면 텍스쳐가 있습니다.이걸 옮겨주는겁니다. 저는 일단 이 두부를 만드는건 기본값으로 설정해놨습니다.


맷돌을 만들려면 어처구니가 필요하겠졈. 어처구니를 만들어봅시다.



이미지 재탕 ><




짜잔. 이렇게 Cube를 2개 더 만들어서 어처구니를 만들었습니다.

일딴 어처구니의 텍스쳐 오프셋을 조금 이동시키겠습니다.


Shape2의 offset 위치입니다.

Shape3의 offset 위치입니다.


이제 텍스쳐를 뒤집어 씌워봅시다.



지금 있는 텍스쳐 맵을 저장을 합니다.




T윗부분

B아랫부분

L왼쪽

F앞쪽

R오른쪽

B뒤쪽



정성을 갈아 넣어라



텍스쳐를 불러들여와봅시다.




예상 외로 그렇게 극혐이진 않습니다.



이제 자바로 저장해서 다음 강좌때 써먹으면 됩니다.



잇힝 ㅇ럽홀



저번에 말씀드렸다시피 레지스트리 부분을 싹 다 넘겨버렸습니다.


넘겨진 부분의 소스입니다. 참 보기 좋아졌졈.



클래스를 하나 만듭시다. 이게 나중에 기계가 될거에요.



블록 이름은 핸드밀... 맷돌이라는 뜻이졈



소스에 주석을 대충 떡칠해봤습니다. 아직 타일 엔티티를 추가 안시켰으니 보통 블럭이랑 소스가 거진 다를게 없는데

icon 부분이 배열로 선언되어 있습니다. 이건 왜냐? 나중에 보심 알게 됩니다.



패키지를 하나 만듭니다.



패키지 이름은 타일엔티티. 타일엔티티를 모아둘 패키지입니다.



타일엔티티에 클래스를 하나 만듭시다.



핸드밀이 가지는 타일엔티티입니다.


간단하게 틱이 연산되는 부분에 volume값을 계속 올려주다가 5000이 넘으면 다시 볼륨값을 0으로 셋하는 부분을 짰습니다.

밑에 부분은 볼륨에 접근하는 부분이구요. 간단하죠?




다시 블록으로 돌아와서.. 아까 오타난 protected를 public으로 고쳐줍니다 (ㅠㅠ)

그리고 생성자의 안쪽 4번째 줄을 보면 타일엔티티를 등록하는 부분이 있습니다. 중요하니 꼭 넣으세염!

그리고 타일 엔티티를 생성하는 부분입니다. 이렇게 리턴을 해주시면 됩니다.

다음에는 onBlockActivated라는 메소드인데요. 

이 메소드는 블록이 활성화되었을때(즉 오른쪽 클릭을 하였을 때) 작동하는 메소드입니다.

저는 그 작동된 곳에 타일엔티티(당연히 그 블록은 죽었다 깨어나도 핸드밀이라는 타일 엔티티를 가지겠졈)를 생성하고

volum값을 받아와서 플레이어에게 출력시켜주는 코드를 짰습니다.



핸드밀의 텍스쳐부분은 이렇게 만들었습니다. 나중에 보시면 이해하실거에염.




이것도 역시 Blocks에 등록시켜주어야 합니다.



짜잔!

정면에서 찍은 부분입니다.



오른쪽에서 쳐다봤습니다.



뒷면에서 쳐다봤습니다.



아랫면입니다.


즉 아이콘을 등록시키는 부분과 getIcon을 보면

이게 면 마다 다른 텍스쳐를 입힐수 있다는 겁니다(!!!!!!!)

우왕 짱이다.




오른쪽 클릭을 하니 Volume값을 계속 출력을 해줍니다.


오옹. 다음엔 커스텀 텍스쳐를 한번 입혀보죵.



럽홀하세요. 안녕입니다.



클래스를 하나 추가해줍시다.


Registry를 관리하는 클래스를 하나 추가해봅시다. 나중에 여유나면 Registry 여기로 다 옮겨야겠군요.



요런 정적 메소드를 하나 만듭니다. 설명은 주석으로 되어있죠?



메인에서 init 이벤트일때 Furnace 레시피를 추가하도록 합시다.


구워진다



구워졌다.




안녕하세요 럽홀입니다.


괴를 만들어봤으니 광물을 추가시켜봐야겠졈.



패키지를 만듭니다.



블록을 관리하는 패키지를 만듭니다.



그 패키지 안에 클래스를 생성합니다.



광물 블럭을 생산하는 클래스를 만듭니다.



생성자는(오타가 났는데 protected가 아니라 public입니다.) 이 광물의 속성과 여러가지를 설정합니다. 읽어 보시면 알아요.

맨 밑에 아이콘을 등록하는 부분 두개가 있습니다. 

아이콘은 서버에 필요 없기 때문에 Side.CLIENT를 박아서 클라이언트에만 동작하게 설정해둡니다. (안그럼 서버 동작시 에러남)



클래스를 하나 더 생성을 합니다.



블록들을 관리해주는 클래스입니다.



여기서 구리 광물을 추가시켜줍니다.



당연히 아이템 처럼 이벤트도 등록시켜주어야 합니다.



당연하게도 언어 파일도 수정을 해 줍시다.



아이콘을 등록시켰으니 저 경로에 아이콘을 나두시면 됩니다.




광물이 생성되었습니다.

하지만 이걸로 끝이 아닙니다. 

광물은 크리탭에서 꺼내오는게 아니라 땅에 박혀 있어야 하기 때문이죠.



패키지를 생성해줍시다.



세계를 관리하는 패키지를 생성해줍시다.



클래스를 생성합니다.



클래스 이름은 광물을 젠시키는 역할이다 라고 해서 OreGenerator로 하였습니다.



월드가 생성될때 generate가 발생을 하고 이 월드가 무슨 월드인지 확인하는 부분을 넣었습니다.

그리고 확인이 끝나면 for문을 통해서 광물을 젠 시켰습니다.

chunkY의 nextInt를 잘 조절하면 광물 높이를 변경할 수 있습니다.



이벤트를 만들었으니 등록시켜야겠죠.



오오 오지게 많이 나오는구만 -ㅅ-;;



안녕하세요. 럽홀입니다.


간단하게 서버 명령어를 추가하는걸 짜볼려고 합니다.




우리는 배운 사람이니 파일을 나눌줄 알아야 합니다.

패키지를 하나 생성합시다.



패키지 이름은 cmd로 두구요.



이제 클래스를 하나 생성을 합니다.



저는 역시.. 다른 모더들이 쓰는 방법대로 이름을 지었습니다.




생성자는 생성되어서 명령어들을 생성을 합니다.

CompareTo는 별로 중요하지 않으니 넘어가고

getCommandName은 말 그대로 명령어 이름을 가져오는 부분입니다.

Usage는 사용법을 출력하는 부분이구요.

Aliases는 명령어 목록을 불러오는 부분입니다.


가장 중요한 부분인 processCommand 부분입니다.

이 부분을 이용해서 커맨드를 이용한 마법의 구현... 이런것도 하시는 분들이 있던데, 뭐 그런것도 구현이 가능하긴 합니다만 간단하게

일딴 커맨드를 보낸 놈이 플레이어인지 확인합니다(서버가 커맨드를 보낼수도 있으니)

그리고 사람이 맞다면(EntityPlayer라는 상속하거나 그 클래스라면) 객체를 따로 생성 한 다음에

명령어의 길이값(그러니까 /loveholytech <샬라샬라>인데 샬라샬라 부분을 띄워쓰기로 나눠서 나온 길이값)이 0이면

Hello, Useername 을 출력하고

아니고 입력한게 있다면 그 입력값중 맨 처음값 (띄워쓰기 된 부분중 맨 처음)을 Input과 함께 출력하는 부분입니다.


나머지 부분은 별로 그렇게 중요한 부분이지 않아서 저렇게 나두고 써도 상관이 없어요.


LoveHolyTech.java로 돌아와서 이 부분을 추가시켜줍니다.

이 부분은 서버가 불러와졌을때 실행되는 이벤트인데

그때 이벤트에서 서버 명령어를 추가시킵니다. 그 명령어는 우리가 짰던 CommandCommon()입니다.



잘 되네요.



안녕하세요. 럽홀입니다.


이전 포스팅을 보면 여러 광물을 추가하기 위해선 그 클래스를 여러개 복사, 붙여넣기식으로 만들었어야 하죠.

그런건 프로그래머들에게 비효율적이라고 욕을 쳐먹는 행동입니다.


그래서 약간 능독적인 ItemIngot클래스를 재구성하면서

Ore Dictionary에도 자동으로 등록되고 Infomation부분도 추가시키는걸 구현해보았습니다.


따로 메타태그는 사용하지 않았습니다. 1.8버전부터 메타태그가 사라진다고 해서요. 이렇게 하는게 쉽기도 합니다.



한줄식 자세하게 설명드리겠습니다.


13번째 줄

Item을 상속받은 ItemIngot 클래스를 설계합니다.


15에서 16번째 줄

능동적인 아이템 추가를 위해서 UnlocalizedName과 Infomation에 출력할 내용들을 저장하는 변수를 선언합니다.


17에서 24번째 줄

super를 사용해 Item클래스의 생성자를 호출하고

메터리얼 탭 부분에 이 아이템을 추가시킵니다.

그리고 argument(인자)로 받은 값을 선언한 변수에 대입시키고

광물 사전에도 등록을 시킵니다.


26에서 42번째 줄

저번에 설명드렸으니 이 부분은 생략합니다. 이전 강좌를 보시길 바랍니다.

바뀐 부분은 능동적인 아이템 생성을 위해서 받아온 값으로 설계하였습니다.


44에서 47번째 줄

이 부분이 새로 추가된 부분인데 마우스로 아이템 위에 올렸을 때 추가적으로 표시되는 정보를 추가할 수 있는 메소드입니다.

list 부분에 add로 String을 넣으면 내용이 추가됩니다.



이렇게 적으면 Infomation 부분에 색상을 입히는것도 가능합니다.



LoveHolyTechItems.java 의 registerItems라는 메소드입니다.

argument를 수정했으니 이 부분도 마찬가지로 수정을 해 줍시다.



en_US.lang 부분도 마찬가지로 수정해줍시다.


짜잔~



이걸 응용해서 광물들 마구 추가해보도록 합시다.


Q. 강좌 언제까지 쓰실껀가요 존나 영양가 ㅇ벗네;


A. 세렌이 모딩 가능할때까지



안녕하세요. 럽홀입니다.


사실 이 강의를 보면서 여러분이 써멀이나... 그런류의 대단한 모드는 만들진 못할겁니다. 저도 못하구요.

하지만 그렇다고 완전히 도움이 안되는것도 아닙니다. 그리고 이런것들을 하는게 절대로 정석이지도 않구요.


그럼 구리 주괴를 추가해보도록 하겠습니다.


1. Item을 관리하는 클래스 만들기




Item 객체들을 모아둘 클래스를 만듭니다. 저는 LoveHolyTechItems라고 했습니다.



소스를 대충 이런 모양으로 짭니다.

1번째 줄

패키지의 이름입니다. 지금 이 파일은 loveholy.loveholytech 패키지에 속해져 있습니다.

3번째 줄

아이템을 게임에 등록시키기 위한 클래스를 불러옵니다.

4번째 줄

Item 객체를 생성하기 위해서 필요한 클래스를 불러옵니다.


7번째 줄

IngotCopper를 생성합니다. 이제 게임레지스트리가 진행되면 이 아이템으로 레시피나 속성에 접근이 가능합니다.

11번째 줄

Item을 상속받은 ItemIngotCopper(밑에서 설계할것입니다)를 IngotCopper에 넣습니다.

12번째 줄

게임에 아이템을 등록시킵니다.



ItemIngotCopper는 아직 만들어지지 않은 클래스입니다.

마우스를 위에다 올리면 quick fixes available 창이 뜨는데요.

빨간색 테두리 부분을 누릅니다.



취향에 따라서 패키지 부분을 수정하시면 됩니다. 전 items 패키지를 새로 만들어서 아이템들을 다 저기로 몰아 넣기로 했습니다.



요렇게 써줍니다. 대충 Item을 상속 받아서 이름을 바꾸고 아이콘을 바꾸게 설정하였습니다.

12번째 줄

상속을 한 Item클래스의 생성자를 호출하는 super클래스입니다.

13번째 줄

이 아이템을 Materials 탭에 넣습니다.


16번째 줄에서 26번째 줄

아이템이 가지는 고유 이름을 지정하는 부분입니다.

28번째에서 32번째 줄

아이템의 이미지 경로를 지정해줍니다.



모드의 메인이 되는 부분에 이 이벤트를 추가를 합니다. 그래야 아이템을 등록을 합니다.

이 이벤트에서는 블록, 아이템 등록 등등을 맡는 역할을 합니다.



이 경로에다 아이템 텍스쳐를 잘 쑤셔 박습니다.



잘 추가 되었습니다. 하지만 이름이 이상하죠.



리소스 위에서 폴더를 하나 만듭니다.



폴더 이름은 lang입니다.



lang에 파일을 하나 만듭니다.



파일 이름은 en_US.lang입니다.



요렇게 적어주시면 됩니다.

이렇게 언어파일을 만들 수 있습니다.

ko_KR.lang을 쓰면 한글도 지정할 수 있습니다.



그럼 이렇게 바뀝니다.


아 강좌 쓰기 너무 힘들다



0. 들어가기 전에


이 강좌는 님들이 Java에 대한 기본적인 것을 알고 있다는 전제하에 쓰여진 강좌이기 때문에

어떤어떤거 이렇게 응용하고 싶은데 어떻게 하나요? 라는 질문은 받고 따로 강좌를 쓰거나 답변을 드리겠지만

Syntax 에러에 대해서는 절대로 질문을 받지 않습니다.


괜히 사람 암걸리게 하지 마세요.


1. 환경 구축하기


포지 모드 개발 환경을 조성하기 위해서는 포지 다운로드 페이지에서 src를 받아주어야 합니다.



저 같은 경우엔 항상 Recommended(추천된, 추천하는) 버전을 사용합니다. 지금 1230버전으로 강좌를 진행하겠습니다.

Java에 대한 기본적인 것을 알고 있다는 전제가 깔려 있기 때문에 eclipse와 JDK가 설치되어 있다고 믿겠습니다.


2. 압축풀기



적당한 곳에 압축을 풉니다. 저는 D:\LoveHolyTech\ 폴더에 풀겠습니다.


3. 작업공간과 eclipse 프로젝트 파일 생성하기



쉬프트를 누른채로 오른쪽 클릭을 하면 여기서 명령어창 열기라는게 보일껍니다. (한글로 비슷한게 있을거에요.)

이걸 눌러줍시다.



gradlew setupDecompWorkspace


이렇게 하시면 gradle가 자동으로 작업공간을 만들어줍니다.

시간이 걸리는 작업이니 기다려주시고

10분 이상이 걸린다 싶을때 아래의 문제점을 확인해보세요.


1. JDK가 설치가 되지 않았다 -> JDK 설치

2. JDK가 설치가 되었으나 버전이 1.8이다. -> 1.7 JDK설치




gradlew eclipse


저는 작업공간 만드는데에 4분 정도가 걸렸습니다.

이제 eclipse 프로젝트를 생성하면 됩니다.


4. Eclipse 실행



이클립스를 실행하면 이런 창이 뜹니다. 압축을 풀어둔 폴더에 eclipse 폴더를 선택하여 OK를 눌러주시면 됩니다.



이클립스를 실행하였을때 이런 과정이 뜨지 않고 바로 예전 프로젝트가 열린다면 파일(File)->작업공간 변경(Switch Workspace)->기타(Other)를 눌러서 열어주시면 됩니다.


5. 소스 편집



원래 있던 소스를 삭제합니다. 기본적으로 적혀 있는 더미 파일입니다.



그 다음에 패키지를 만들어 줍니다.



보통 패키지 이름은 알아서 정하시면 됩니다. 보통 모더들이 선호하는 방식은 Author.ModName 이니 그 방법을 따르도록 하겠습니다.



클래스를 추가시켜줍니다.



클래스 이름을 지정을 합니다.

저희가 만드는건 Init이벤트를 담당하고 모드의 중요한 필드와 메소드를 만드는 부분입니다.

보통 모더들이 이 클래스를 만들 때 모드의 이름을 적으니 저도 그렇게 쓰도록 하겠습니다.



패키지 탐색기(Pakage Explorer)를 통해서 생성한 class를 연 다음에 이렇게 소스를 짰습니다.

간단하게 FMLInit 이벤트가 발생할때 Hello World를 출력하는 소스를 짰습니다.

아무 에러가 없이 위와 비슷하게 만들어졌다면 성공하신 겁니다.


이제 src/main/resources 에 들어가서 기본정보들을 수정해줍니다.


6. 빌드하기



build.gradle 이라는 파일을 텍스트 편집기를 통해 엽니다.



21번째 줄과 22번째 줄을 수정을 팝니다.

group에는 아까 만들었던 패키지를 적어주시면 되고

archivesBaseName은 아무거나 적어주셔도 상관 없지만 저는 모드 이름을 적었습니다.

그리고 저장을 합니다.



gradlew build


이제 아까의 명령어 창으로 돌아와서 위의 명령어를 입력합니다.

이렇게 하시면 5분 이내외로 빌드가 완성이 됩니다.



빌드가 성공적으로 완료가 되었습니다.



빌드가 성공한 파일은 압축을 푼 위치\build\libs에 위치하고 있습니다.

이제 이걸 복사하여 mods 폴더로 옮겨서 마인크래프트를 실행하시면 됩니다.


7. 완성



자신이 원하는대로 코딩이 되었는가를 확인합니다.


이제 이렇게 하시면 모딩을 하실 환경이 조성된겁니다.

사실 이클립스의 Run버튼을 눌러서 바로 마인크래프트 실행이 가능합니다만 그렇게 하면 매우 불안정하기 때문에 빌드를 해서 직접 확인하시는 것을 추천해드립니다.


다음 강좌에는 여기서 좀 더 살을 붙여서 아이템을 하나 생성해보도록 하겠습니다.



부들부들...


내가 기계치라니... 부들부들....


안녕하세요. 럽홀입니다.


AE가 AE2로 진화하면서 많은 것들이 바뀌었는데요.

단순히 쿼츠만 많다고 모든 부품들을 만들 수 없게 되었습니다.

모든 작업에 시간이 들고, 노력이 들고, 등골 브레이킹이 들어가고, 스카이 스톤을 찾기 위해

위험한 모험까지 해야 하는 상황이 되었습니다.


그리고 부품을 만드는 방법도 많이 까다로워지고 많아졌습니다.

세투스 크리스탈을 차징 시키고, 그리고 씨앗을 만들어 물에 담궈 키워야 하고... 등등


하지만 그렇다고 해서 자동화가 안되는건 아닙니다!

아니, 이 강좌를 보시는 분들 앞엔 자동화, 그것은 불가능한게 아닙니다!



1. 부품들


AE2 기계들을 만들기 위해 사용되는 부품들을 알아 보겠습니다.



Charged Certus Quartz Crystal 입니다.


자연상태로도 존재하고 있는 광물입니다. 저는 Charger라는 기계를 이용해서 Certus Quartz Crystal을 Charging 시켜 만들고 있습니다.





Printed Logic Circuit 입니다.


이 아이템은 Inscriber라는 특수한 기계에 틀을 넣고 금괴를 넣어서 만들 수 있습니다.



조합법입니다.


흰색 틀 같은것들은 AE2에서 추가한 운석들을 뒤져보시면 나옵니다.



Printed Silicon 입니다.


마찬가지로 Inscriber를 통해서 만들 수 있습니다.



조합법입니다.



Printed Calculation Circuit입니다.



아마 자동화중에서 제일 까다로운 녀석이 아닐까 합니다. 


재료로 Pure Certus Quartz Crystal이 들어가는데 얘를 만들려면 Water Crafting이라는 기술이 들어가야 하기 때문이죠.


AE2 Stuff 모드가 있으면 간단히 자동화를 하겠지만 없다는 가정하에 자동화를 해보도록 하겠습니다.



Printed Engineering Circuit 입니다.



조합 방법은 이것.


여기까지가 틀을 이용해서 찍어내는 레시피입니다.

그 다음은 찍어낸 것들을 이용해서 만들어내는 레시피입니다.





이렇게 3개 있습니다. 이 3개가 AE 컴퍼넌트나 다른 기타 Panel, Interface를 만드는데 많이 쓰입니다.


이제 이것들을 자동화해야 합니다.


2. Inscriber



설치하면 이렇게 생겼습니다. 꼭 AE랑 연결되어 있어야 작동하니 이 점 유의하고 설치하세요.





아이템을 넣으면 오른쪽 게이지바가 차 오르기 시작합니다. 게이지바가 다 차오르면 블록이 위랑 아래가 붙으면서 착! 하고 아이템이 완성됩니다.


이 Inscriber는 치명적인 단점이 있는데요. 어떻게 하든 아이템이 한 슬롯에 1개 초과는 들어가지 않으며

만약 어떤 방법을 이용해서(라우터리본의 라우터) 1개 초과의 아이템을 넣으면 작동을 멈춰버립니다. ㅠㅠ

하지만 아이템을 넣는 방법은 있습니다.




위 그림에서 화살표 색상과 슬롯 색상이 같은 것들끼리 대응됩니다.


즉 저 슬롯에서 뭔가를 빼거나 넣거나 하기 위해선 저 부분을 이용해야 한다는 뜻이죠.


이것을 이용해서 설계를 하시면 됩니다.



제가 설계한 첫번째는 프린트된 것들을 찍어내는 부분입니다.


틀은 소모가 되지 않는 놈들이기 때문에 Inscriber안에 넣어두시면 됩니다.



제일 앞에 있는 기계를 열어봤습니다. Printed Calculation Circuit을 만드는 부분인데요.


빨간색 슬롯은 뒷부분이라고 말씀드렸듯이 인터페이스를 통해서 받아옵니다. 물론 무작정 만드는거라면 인터페이스에 빼오게 한 다음 파이프로 연결해도 괜찮겠지만

지금은 패턴이라는 것을 이용해서 인터페이스를 통해 바로 기계로 아이템이 들어가도록 해두었습니다.


파란색 슬롯 부분은 앞면이고 아이템이 빠져나오는 부분입니다. 파이프로 아이템을 뽑아내서 인터페이스에 넣도록 설계하였습니다.






정면과 대각선, 후면을 찍은 스크린샷입니다.


정면 부분 스크린샷에 왼쪽 아래에 보면 크래프팅 터미널 비슷하게 생긴 터미널이 보이실거에요.


ME Pattern Terminal이라는 것인데 AE1의 패턴 인코더와 터미널을 함쳐둔거라 생각하시면 됩니다. 



만드는 방법은 ME Crafting Terminal과 Engineering Processor를 조합해주시면 만들 수 있습니다.


그러면 이제 패턴을 만들어보기 전에 Blank Pattern이 필요합니다. 써멀의 사이클릭 어셈블러를 이용하기 위한 스키마틱과 비슷하다고 생각하시면 됩니다.



Blank Pattern 을 만드는 방법입니다. Quartz Glass가 필요하고 중앙에 들어가는 Certus Quartz는 Charged나 Pure나 Normal이든 상관 없습니다.


자 이제 그러면 ME Pattern Terminal을 열어봅시다.


ME Pattern Terminal 의 GUI입니다.

빨간색 부분은 크래프팅으로 만들어지는지 기계를 통해서 만들어지는지 확인하는 부분인데

지금 기계에 인터페이스를 붙여서 쓰고 있기 때문에 Processing Pattern 으로 맞추면 됩니다.

노란색 부분엔 기계에 들어가는 아이템을 넣어주면 됩니다.

연두색 부분엔 기계에서 출력되는 아이템을 넣어주시면 됩니다.

하늘색 부분은 Blank Pattern을 넣어두는 부분입니다.

파란색 부분은 위에 화살표 버튼을 누르면 Blank Pattern에 패턴이 새겨지게 되는데 그 패턴이 나오는 곳입니다.




만들어진 패턴은 쉬프트를 누르면 아이콘이 변합니다.


이제 이 패턴을 인터페이스에 넣으면 됩니다.



기계 뒷부분에 달아둔 인터페이스입니다.



이렇게 넣어주시면 됩니다.


그리고 이런 설계를 돌리기 위해서는 컴퓨터가 필요합니다.



싼게 비지떡이니 제일 싼걸 여러개 붙이는게 좋습니다.



대충 여기다 설치했습니다.


이제 자동화가 끝났습니다.


엥? 무슨 자동화가 끝났냐구요? 아까 패턴 터미널을 열어보도록 합시다.



이렇게 Craft라는 부분이 생겼습니다. 이걸 한번 눌러봅시다.



그럼 몇개를 만들지 창이 뜹니다. 1개를 일단 만들어봅시다. Next를 누르면 됩니다.



파란색 창은 이 조합 계획이 얼마나 용량을 차지하는지 알려줍니다.

빨간색 부분은 이 조합 계획에 필요한 아이템들과 만들어지는 아이템을 보여줍니다.

연두색 버튼은 어떤 CPU로 쓸지 정해주는 부분입니다. 자동으로 두시면 됩니다.


이제 Start 버튼을 눌러봅시다.



이때 CPU를 눌러보면 지금 계획된 조합들을 볼 수 있습니다.



오 잘 들어가서 잘 찍혀 나오는군요.



재료로 금이 하나 소모되고 완성된 아이템이 ME로 들어왔습니다.


이제 이런것들을 응용해서 AE로 자동화를 쉽게 할 수 있습니다.

멍청하게 한꺼번에 재료를 많이 만들 필요도 없이 자동화를 이용하여 그때 그때 필요한 만큼만 만들어 쓰도록 합시다!



안녕하세요. 럽홀입니다. 


서버에 이 모드가 들어왔는데 아무도 이 모드로 꿀빨 생각을 안하고 있어서 이렇게 올려봅니다. 깔깔깔!


1. Vitalized Soil Planter(생명이 깃든 땅 파종기)



생긴건 요렇게 생겼습니다.



만드는 방법도 간단합니다. 씨앗과 비료, 물, 흙만 있으면 만들 수 있습니다.


2. Mob Drop Plant Seed(몹 드롭 식물 씨앗)



요렇게 생겼고



만드는 방법도 간단합니다. 사과, 비료, 씨앗이면 만들 수 있습니다.


3. 생명이 깃든 땅 파종기 사용하기


이제 이렇게 만들었으니 심어볼까~ 싶은데, 아직, 아직 아닙니다!

파종기는 파종기일 뿐이고 몹 드롭 식물 씨앗을 심을 수 있는 땅은 따로 있습니다.



이렇게 땅 위에 파종기를 배치를 합니다. 



그 다음 흙으로 이렇게 감쌉니다.




다시 그 위를 흙으로 덮습니다.


파종기는 Vitalized Soil(생명이 깃든 땅)을 만들기 위해서 필요한 블록입니다.

이 생명이 깃든 땅 위에서 몹 드롭 식물 씨앗을 심을 수 있는거죠.

파종기 주변으로 1블럭 범위만큼 흙이나 잔디흙을 생명이 깃든 땅으로 바꾼 다음 사라지게 됩니다.


그럼 한참을 기다려봅시다.


4. Vitalized Soil (생명이 깃든 땅)



한참을 기다리다 보면 이렇게 땅이 변합니다. 이것은 캐서 이동시킬 수 있으니 적당한 곳으로 이동시켜서 작물을 재배하도록 합시다.


5. 재배하기



생명이 깃든 땅을 적당히 배치합니다. 똑같이 하실 필요는 없어요.



얻으려고 하는 몹 드롭 아이템을 땅 위에 사용하시면 이렇게 땅이 변합니다.

바닐라 아이템만 허용이 되며 뼈, 건파우더, 거미눈, 실, 가스트의 눈물, 블레이즈 막대, 엔더 진주, 썩은 괴기 등을 심을 수 있습니다.



여기다가 적당히 식물을 심어주시면 됩니다. 



다 자라면 이런 모습이 됩니다.

식물 자체는 뼛가루가 먹히고 열매는 뼛가루가 먹히지 않습니다.

밑에 부분에 가끔씩 몹 아이템을 심어둔게 사라질때가 있는데 그럴땐 다시 심어주어야 합니다.

행운 도끼로 캐면 많은 량의 몹 드랍 템을 얻을 수 있습니다.



즐거운 몹파밍 되세요 :)

+ Recent posts