Skip to content

Commit e60416f

Browse files
fix lamp drops and recipes
1 parent 978967d commit e60416f

File tree

1 file changed

+168
-4
lines changed

1 file changed

+168
-4
lines changed

kubejs/server_scripts/yttr_block_fix.js

Lines changed: 168 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
//Block Drop Fixes
12
onEvent("block.loot_tables", (event) => {
23
[
34
["yttr:yttrium_block"],
@@ -75,15 +76,178 @@ onEvent("block.loot_tables", (event) => {
7576
["yttr:black_project_table"],
7677
["yttr:neodymium_slab"],
7778
["yttr:neodymium_block"],
78-
["yttr:lamp"],
79-
["yttr:fixture"],
80-
["yttr:cage_lamp"],
81-
["yttr:panel"],
8279
["yttr:aware_hopper"],
8380
["yttr:levitation_chamber"],
8481
["yttr:magtank"],
8582
["yttr:dsu"],
8683
].forEach((loot) => {
8784
event.addSimpleBlock(loot[0], loot[0]);
8885
});
86+
//Lamp Blocks
87+
const lampColors = [ //don't include colorless
88+
"white",
89+
"orange",
90+
"magenta",
91+
"light_blue",
92+
"yellow",
93+
"lime",
94+
"pink",
95+
"gray",
96+
"light_gray",
97+
"cyan",
98+
"purple",
99+
"blue",
100+
"brown",
101+
"green",
102+
"red",
103+
"black",
104+
"teal"
105+
];
106+
[
107+
"yttr:lamp",
108+
"yttr:fixture",
109+
"yttr:cage_lamp",
110+
"yttr:panel"
111+
].forEach((lamp) => {
112+
event.addJson(lamp, {
113+
type: "minecraft:block",
114+
pools: [
115+
{
116+
rolls: 1,
117+
bonus_rolls: 0,
118+
entries: [
119+
{
120+
type: "minecraft:item",
121+
name: lamp,
122+
functions: [
123+
{
124+
function: "minecraft:set_nbt",
125+
tag: "{Inverted: false, LampColor: \"colorless\"}"
126+
},
127+
{
128+
function: "minecraft:set_nbt",
129+
tag: "{Inverted: true}",
130+
conditions: [
131+
{
132+
block: lamp,
133+
condition: "minecraft:block_state_property",
134+
properties: {
135+
inverted: true
136+
}
137+
}
138+
]
139+
}
140+
].concat(lampColors.map(color=>{
141+
return {
142+
function: "minecraft:set_nbt",
143+
tag: `{LampColor: \"${color}\"}`,
144+
conditions: [
145+
{
146+
block: lamp,
147+
condition: "minecraft:block_state_property",
148+
properties: {
149+
color: color
150+
}
151+
}
152+
]
153+
}
154+
}))
155+
}
156+
],
157+
conditions: [
158+
{
159+
condition: "minecraft:survives_explosion"
160+
}
161+
]
162+
}
163+
]
164+
})
165+
})
89166
});
167+
168+
//Lamp Recipe Fixes
169+
onEvent("recipes", (event) => {
170+
171+
const lampTypes = [
172+
"lamp",
173+
"fixture",
174+
"cage_lamp",
175+
"panel"
176+
];
177+
const lampColors = [ //don't include colorless
178+
["white", "$minecraft:white_dye"],
179+
["orange", "minecraft:orange_dye"],
180+
["magenta", "minecraft:white_dye"],
181+
["light_blue", "minecraft:light_blue_dye"],
182+
["yellow", "minecraft:yellow_dye"],
183+
["lime", "minecraft:lime_dye"],
184+
["pink", "minecraft:pink_dye"],
185+
["gray", "minecraft:gray_dye"],
186+
["light_gray", "minecraft:light_gray_dye"],
187+
["cyan", "minecraft:cyan_dye"],
188+
["purple", "minecraft:purple_dye"],
189+
["blue", "minecraft:blue_dye"],
190+
["brown", "minecraft:brown_dye"],
191+
["green", "minecraft:green_dye"],
192+
["red", "minecraft:red_dye"],
193+
["black", "minecraft:black_dye"],
194+
["teal", "yttr:yttrium_dust"]
195+
];
196+
197+
198+
//Lamp recipe fixes
199+
lampTypes.forEach(lamp=>{
200+
//this recipe is shaped for some reason
201+
event.remove({id:`yttr:crafting/lamp/${lamp}_invert`});
202+
//this recipe doesn't even work
203+
event.remove({id:`yttr:crafting/lamp/${lamp}_dye`});
204+
205+
//recreate lamp inversion recipe as a shapeless one. Also make it not consume the redstone torch
206+
event.shapeless(
207+
Item.of(`yttr:${lamp}`).withNBT('{Inverted:true, LampColor:\"colorless\"}'),
208+
[
209+
`yttr:${lamp}`,
210+
'minecraft:redstone_torch'
211+
]
212+
)
213+
.modifyResult((grid, result)=>{
214+
let item = grid.find(Ingredient.of(`yttr:${lamp}`).ignoreNBT());
215+
216+
let nbt = {};
217+
nbt.Inverted = !item.nbt.Inverted;
218+
if (item.nbt.LampColor) {
219+
nbt.LampColor = item.nbt.LampColor;
220+
}
221+
return result.withNBT(nbt);
222+
})
223+
.keepIngredient("minecraft:redstone_torch")
224+
.id(`createastral:crafting/yttr/lamp/${lamp}_invert`)
225+
226+
//Create lamp dyeing recipes that actually work
227+
event.shapeless(
228+
Item.of(`yttr:${lamp}`).withNBT('{Inverted:false, LampColor:\"white\"}'),
229+
[
230+
`yttr:${lamp}`,
231+
'#yttr:lamp_dyes'
232+
]
233+
)
234+
.modifyResult((grid, result)=>{
235+
let item = grid.find(Ingredient.of(`yttr:${lamp}`).ignoreNBT());
236+
let dye = grid.find(`#yttr:lamp_dyes`);
237+
238+
let nbt = {};
239+
240+
nbt.Inverted = !!item.nbt.Inverted;
241+
242+
for (let i=0;i<lampColors.length;++i) {
243+
if (dye.getId()===lampColors[i][1]) {
244+
nbt.LampColor = lampColors[i][0];
245+
break;
246+
}
247+
}
248+
249+
return result.withNBT(nbt);
250+
})
251+
.id(`createastral:crafting/yttr/lamp/${lamp}_dye`)
252+
})
253+
})

0 commit comments

Comments
 (0)