proper mars rock layers (#1829)
* rock layer stuff for the next kjs-tfc release * fix mars sea level * mob tweaks * lookin cool joker * desaturated the amaranita mushrooms * desaturated purple polypore * features for the "bush" trees so they're always placed touching a log * moved these out of the forest so it's less crowded * upd8 * moved these to OCEAN_FLOOR * moved the bushes to normal features instead of forests * attached plants, bush adjustments * updates with new gravel * disable tinting on fallen leaves
This commit is contained in:
parent
9b0c729e50
commit
8c858253f1
77 changed files with 698 additions and 203 deletions
|
|
@ -272,6 +272,8 @@ const registerAdAstraBlockTags = (event) => {
|
|||
event.add('tfg:mars_soil', 'tfg:grass/sangnum_kaolin_mycelium')
|
||||
event.add('ad_astra:mars_stone_replaceables', '#tfg:mars_soil')
|
||||
event.add('minecraft:animals_spawnable_on', '#tfg:mars_soil')
|
||||
event.add('minecraft:animals_spawnable_on', '#tfg:mars_plants')
|
||||
event.add('minecraft:animals_spawnable_on', '#forge:gravel')
|
||||
|
||||
event.add('tfc:can_carve', '#ad_astra:moon_stone_replaceables')
|
||||
event.add('tfc:can_carve', '#ad_astra:mars_stone_replaceables')
|
||||
|
|
@ -496,6 +498,8 @@ const registerAdAstraPlacedFeatures = (event) => {
|
|||
event.add('tfg:mars_underground_decoration', "tfg:earth/geode/quartzite")
|
||||
|
||||
// Vegetation
|
||||
event.add("tfg:mars_global_small_plants", "tfg:mars/tree/lucernia")
|
||||
event.add("tfg:mars_global_small_plants", "tfg:mars/tree/cave_bush")
|
||||
event.add("tfg:mars_global_small_plants", "tfg:mars/surface/charnia")
|
||||
event.add("tfg:mars_global_small_plants", "tfg:mars/surface/flamaea")
|
||||
event.add("tfg:mars_global_small_plants", "tfg:mars/surface/lacugrove")
|
||||
|
|
@ -513,6 +517,11 @@ const registerAdAstraPlacedFeatures = (event) => {
|
|||
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lanceleaf")
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/lanceleaf_small")
|
||||
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/bulb_moss")
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/aurant_polypore")
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/filalux_wings")
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/filalux_wings_top")
|
||||
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/amber_grass")
|
||||
event.add("tfg:mars_amber_vegetal_decoration", "tfg:mars/surface/flammalix")
|
||||
|
|
@ -527,6 +536,12 @@ const registerAdAstraPlacedFeatures = (event) => {
|
|||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/crop/shadow_berry")
|
||||
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/lucernia_outer_leaves")
|
||||
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/bulb_moss")
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/aurant_polypore")
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/purple_polypore")
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/filalux_wings")
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/filalux_wings_top")
|
||||
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/aeridium")
|
||||
event.add("tfg:mars_rusticus_vegetal_decoration", "tfg:mars/surface/flammalix")
|
||||
|
|
@ -544,6 +559,9 @@ const registerAdAstraPlacedFeatures = (event) => {
|
|||
|
||||
event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/small_amaranita_mushroom")
|
||||
event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/large_amaranita_mushroom")
|
||||
|
||||
event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/aurant_polypore")
|
||||
event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/purple_polypore")
|
||||
|
||||
event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/cave_grass")
|
||||
event.add("tfg:mars_sangnum_vegetal_decoration", "tfg:mars/surface/clawfern")
|
||||
|
|
|
|||
|
|
@ -6,102 +6,183 @@ const $ForestType = Java.loadClass("net.dries007.tfc.world.chunkdata.ForestType"
|
|||
|
||||
const ROCK_LAYER_HEIGHT = 40;
|
||||
|
||||
|
||||
// Precompute the aquifer heights as constants as this is not used
|
||||
let EMPTY_AQUIFER = [];
|
||||
let aquifer_i = 0;
|
||||
while (aquifer_i < 16) {
|
||||
EMPTY_AQUIFER.push(32);
|
||||
aquifer_i++;
|
||||
}
|
||||
|
||||
|
||||
// Bare minimum
|
||||
TFCEvents.createChunkDataProvider('moon', event => {
|
||||
const emptyLayer = TFC.misc.lerpFloatLayer(0, 0, 0, 0);
|
||||
const emptyLayer = TFC.misc.lerpFloatLayer(0, 0, 0, 0);
|
||||
|
||||
var aquifer = [];
|
||||
let i = 0;
|
||||
while (i < 16) {
|
||||
aquifer.push(32);
|
||||
i++;
|
||||
}
|
||||
var heights = [];
|
||||
for (let x = 0 ; x < 16 ; x++) {
|
||||
for (let z = 0 ; z < 16 ; z++) {
|
||||
heights[x + 16 * z] = 80;
|
||||
}
|
||||
}
|
||||
var heights = [];
|
||||
for (let x = 0; x < 16; x++) {
|
||||
for (let z = 0; z < 16; z++) {
|
||||
heights[x + 16 * z] = 80;
|
||||
}
|
||||
}
|
||||
|
||||
event.partial((data, chunk) => {
|
||||
data.generatePartial(emptyLayer, emptyLayer, 0, 0, 0)
|
||||
})
|
||||
event.full((data, chunk) => {
|
||||
data.generateFull(heights, aquifer)
|
||||
})
|
||||
event.rocks((x, y, z, surfaceY, cache, rockLayers) => {
|
||||
return rockLayers.sampleAtLayer(0, 0)
|
||||
})
|
||||
event.partial((data, chunk) => {
|
||||
data.generatePartial(emptyLayer, emptyLayer, 0, 0, 0)
|
||||
})
|
||||
event.full((data, chunk) => {
|
||||
data.generateFull(heights, EMPTY_AQUIFER)
|
||||
})
|
||||
event.rocks((x, y, z, surfaceY, cache, rockLayers) => {
|
||||
return rockLayers.sampleAtLayer(0, 0)
|
||||
})
|
||||
})
|
||||
|
||||
|
||||
let tempLayer = TFC.misc.newOpenSimplex2D(4621678939469)
|
||||
.octaves(2)
|
||||
.spread(0.05)
|
||||
.scaled(-10, 10)
|
||||
let rainLayer = TFC.misc.newOpenSimplex2D(2846746456346)
|
||||
.octaves(2)
|
||||
.spread(0.05)
|
||||
.scaled(-3, 3)
|
||||
let forestDensityNoise = TFC.misc.newOpenSimplex2D(98713856895664)
|
||||
.octaves(4)
|
||||
.spread(0.0025)
|
||||
.scaled(-0.2, 1.2)
|
||||
.clamped(0, 1)
|
||||
let forestWeirdnessNoise = TFC.misc.newOpenSimplex2D(3210378120)
|
||||
.octaves(4)
|
||||
.spread(0.0025)
|
||||
.map(i => 1.1 * Math.abs(i))
|
||||
.clamped(0, 1)
|
||||
|
||||
TFC.misc.register2DNoiseForInspection('temp', tempLayer)
|
||||
TFC.misc.register2DNoiseForInspection('rain', rainLayer)
|
||||
TFC.misc.register2DNoiseForInspection('forestType', forestDensityNoise)
|
||||
TFC.misc.register2DNoiseForInspection('forestWeirdness', forestWeirdnessNoise)
|
||||
|
||||
// Forest layer
|
||||
//const forestTypeLayer = TFC.misc.uniformLayeredArea(45245235242);
|
||||
//for (let i = 0; i < 3; i++) {
|
||||
// forestTypeLayer.zoom(true, 19763144126).smooth(79784123632);
|
||||
//}
|
||||
//for (let i = 0; i < 6; i++) {
|
||||
// forestTypeLayer.zoom(true, 451364589723);
|
||||
//}
|
||||
//forestTypeLayer
|
||||
// .smooth(71214856214)
|
||||
// .zoom(true, 854126548632)
|
||||
// .smooth(145256147896)
|
||||
|
||||
let forestLayerNoise = TFC.misc.newOpenSimplex2D(3210378120)
|
||||
.octaves(2)
|
||||
.spread(0.005)
|
||||
.scaled(0, 1)
|
||||
|
||||
// Rock layer
|
||||
const rockLayer = TFC.misc.uniformLayeredArea(413567326);
|
||||
for (let i = 0; i < 3; i++) {
|
||||
rockLayer.zoom(true, 19763144126).smooth(79784123632);
|
||||
}
|
||||
for (let i = 0; i < 6; i++) {
|
||||
rockLayer.zoom(true, 451364589723);
|
||||
}
|
||||
rockLayer
|
||||
.smooth(71214856214)
|
||||
.zoom(true, 854126548632)
|
||||
.smooth(145256147896)
|
||||
|
||||
|
||||
TFCEvents.createChunkDataProvider('mars', event => {
|
||||
event.partial((data, chunk) => {
|
||||
let x = chunk.pos.minBlockX;
|
||||
let z = chunk.pos.minBlockZ;
|
||||
|
||||
const rain = TFC.misc.lerpFloatLayer(0, 0, 0, 0);
|
||||
const tempLayer = TFC.misc.newOpenSimplex2D(event.worldSeed + 4621678939469)
|
||||
.spread(0.002)
|
||||
.octaves(3)
|
||||
.scaled(70, 90)
|
||||
const forestLayer = TFC.misc.newOpenSimplex2D(event.worldSeed + 98713856895664)
|
||||
.spread(0.00002)
|
||||
.terraces(9)
|
||||
.affine(6, 12)
|
||||
.scaled(6, 18, 0, 1)
|
||||
const avgTemp1 = calcAverage(z, global.MARS_PLANET_SIZE, global.MARS_MIN_AVG_TEMP, global.MARS_MAX_AVG_TEMP)
|
||||
const avgTemp2 = calcAverage(z + 15, global.MARS_PLANET_SIZE, global.MARS_MIN_AVG_TEMP, global.MARS_MAX_AVG_TEMP)
|
||||
const avgRain1 = calcAverage(x, global.MARS_PLANET_SIZE, global.MARS_MIN_AVG_RAIN, global.MARS_MAX_AVG_RAIN)
|
||||
const avgRain2 = calcAverage(x + 15, global.MARS_PLANET_SIZE, global.MARS_MIN_AVG_RAIN, global.MARS_MAX_AVG_RAIN)
|
||||
|
||||
const rockNoise = TFC.misc.newOpenSimplex2D(event.worldSeed + 8008135)
|
||||
.octaves(3)
|
||||
.scaled(0x80000000, 0x7fffffff) // Integer.MIN_VALUE to Integer.MAX_VALUE
|
||||
.spread(0.00001) // spread it out so the vaiance is small
|
||||
let rain = TFC.misc.lerpFloatLayer(
|
||||
avgRain1 + rainLayer.noise(x, z),
|
||||
avgRain1 + rainLayer.noise(x, z + 15),
|
||||
avgRain2 + rainLayer.noise(x + 15, z),
|
||||
avgRain2 + rainLayer.noise(x + 15, z + 15)
|
||||
);
|
||||
let temp = TFC.misc.lerpFloatLayer(
|
||||
avgTemp1 + tempLayer.noise(x, z),
|
||||
avgTemp1 + tempLayer.noise(x, z + 15),
|
||||
avgTemp2 + tempLayer.noise(x + 15, z),
|
||||
avgTemp2 + tempLayer.noise(x + 15, z + 15)
|
||||
);
|
||||
|
||||
// Precompute the aquifer heights as constants as this is not used
|
||||
var aquifer = [];
|
||||
let i = 0;
|
||||
while (i < 16) {
|
||||
aquifer.push(32);
|
||||
i++;
|
||||
}
|
||||
data.generatePartial(
|
||||
rain,
|
||||
temp,
|
||||
//floatToForestType(((forestTypeLayer.getAt(x, z) / 0x80000000) / 2.0) + 0.5),
|
||||
floatToForestType(forestLayerNoise.noise(x, z)),
|
||||
forestWeirdnessNoise.noise(x, z), // forest weirdness
|
||||
forestDensityNoise.noise(x, z) // forest density
|
||||
);
|
||||
});
|
||||
|
||||
event.partial((data, chunk) => {
|
||||
let x = chunk.pos.minBlockX;
|
||||
let z = chunk.pos.minBlockZ;
|
||||
event.full((data, chunk) => {
|
||||
let heights = [];
|
||||
for (let z = 0; z < 16; z++) {
|
||||
for (let x = 0; x < 16; x++) {
|
||||
heights[x + 16 * z] = chunk.getHeight($HeightMap.Types.OCEAN_FLOOR_WG, x, z);
|
||||
}
|
||||
}
|
||||
data.generateFull(heights, EMPTY_AQUIFER);
|
||||
});
|
||||
|
||||
let temp = TFC.misc.lerpFloatLayer(
|
||||
tempLayer.noise(x, z),
|
||||
tempLayer.noise(x, z + 15),
|
||||
tempLayer.noise(x + 15, z),
|
||||
tempLayer.noise(x + 15, z + 15)
|
||||
);
|
||||
|
||||
let forestType = $ForestType.NONE;
|
||||
const forestTypeNoise = forestLayer.noise(x, z);
|
||||
if (forestTypeNoise < 0.2)
|
||||
forestType = $ForestType.OLD_GROWTH;
|
||||
else if (forestTypeNoise < 0.4)
|
||||
forestType = $ForestType.NORMAL;
|
||||
else if (forestTypeNoise < 0.6)
|
||||
forestType = $ForestType.EDGE;
|
||||
else if (forestTypeNoise < 0.8)
|
||||
forestType = $ForestType.SPARSE;
|
||||
|
||||
data.generatePartial(
|
||||
rain,
|
||||
temp,
|
||||
forestType,
|
||||
forestLayer.noise(x * 78423 + 869, z),
|
||||
forestTypeNoise //forestLayer.noise(x, z * 651349 - 698763)
|
||||
);
|
||||
});
|
||||
|
||||
event.full((data, chunk) => {
|
||||
let heights = [];
|
||||
for (let z = 0; z < 16; z++) {
|
||||
for (let x = 0; x < 16; x++) {
|
||||
heights[x + 16 * z] = chunk.getHeight($HeightMap.Types.OCEAN_FLOOR_WG, x, z);
|
||||
}
|
||||
}
|
||||
data.generateFull(heights, aquifer);
|
||||
});
|
||||
|
||||
event.rocks((x, y, z, surfaceY, cache, rockLayers) => {
|
||||
return rockLayers.sampleAtLayer(rockNoise.noise(x, z), (surfaceY - y) / ROCK_LAYER_HEIGHT);
|
||||
});
|
||||
event.rocks((x, y, z, surfaceY, cache, rockSettings) => {
|
||||
return rockSettings.sampleAtLayer(rockLayer.getAt(x, z), (surfaceY - y) / ROCK_LAYER_HEIGHT);
|
||||
});
|
||||
})
|
||||
|
||||
|
||||
/**
|
||||
* @param {number} playerZ The current Z level of the player
|
||||
* @param {number} scale The size of the planet, from the south pole to the north (20k on earth with default TFC settings)
|
||||
* @param {number} min The average value at the poles
|
||||
* @param {number} max The average value at the equator
|
||||
* @returns {number}
|
||||
*/
|
||||
function calcAverage(playerZ, scale, min, max) {
|
||||
|
||||
let relative = (playerZ / scale * -1) + 0.5;
|
||||
|
||||
// relative is now 1 for peak -z, 0 for peak +z
|
||||
|
||||
let smoothed = Math.cos(relative * JavaMath.PI);
|
||||
|
||||
// smoothed is now -1 for peak -z, 1 for peak +z
|
||||
|
||||
let halfDiff = (min - max) / -2;
|
||||
|
||||
let temp = (smoothed * halfDiff) - (halfDiff - max);
|
||||
|
||||
return temp;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* @param {number} float A number between 0 and 1
|
||||
* @returns {$ForestType}
|
||||
*/
|
||||
// Rhino moment
|
||||
function floatToForestType(float) {
|
||||
if (float < 0.2)
|
||||
return $ForestType.OLD_GROWTH;
|
||||
else if (float < 0.4)
|
||||
return $ForestType.NORMAL;
|
||||
else if (float < 0.6)
|
||||
return $ForestType.EDGE;
|
||||
else if (float < 0.8)
|
||||
return $ForestType.SPARSE;
|
||||
else
|
||||
return $ForestType.NONE;
|
||||
}
|
||||
|
|
@ -8,11 +8,11 @@ TFCEvents.worldgenData(event => {
|
|||
// https://notenoughmail.github.io/kubejs_tfc/1.20.1/worldgen/#forest-types-map-entry
|
||||
// type, treeCount, groundcoverCount, perChunkChance, bushCount, hasSpoilerOldGrowth, allowsOldGrowth, leafPileCount
|
||||
|
||||
event.forestTypesMapEntry('none', [0, 1], 0, 0.02, 0, false, false, 0),
|
||||
event.forestTypesMapEntry('sparse', [1, 3], 6, 0.2, 0, false, false, [0, 1]),
|
||||
event.forestTypesMapEntry('edge', [2, 4], 15, 0.8, 1, true, false, [0, 1]),
|
||||
event.forestTypesMapEntry('normal', [4, 6], 25, 1, 1, true, false, [1, 2]),
|
||||
event.forestTypesMapEntry('old_growth', [5, 8], 40, 1, 2, true, true, [1, 2])
|
||||
event.forestTypesMapEntry('none', [0, 1], 1, 0.1, 0, false, false, 0),
|
||||
event.forestTypesMapEntry('sparse', [0, 3], 10, 0.3, 1, false, false, [0, 1]),
|
||||
event.forestTypesMapEntry('edge', [2, 5], 20, 0.8, 1, true, false, [1, 2]),
|
||||
event.forestTypesMapEntry('normal', [5, 8], 35, 1, 2, true, false, [2, 3]),
|
||||
event.forestTypesMapEntry('old_growth', [8, 12], 50, 1, 3, true, true, [3, 4])
|
||||
],
|
||||
false,
|
||||
placement => {}
|
||||
|
|
@ -20,9 +20,10 @@ TFCEvents.worldgenData(event => {
|
|||
|
||||
event.forestEntry('tfg:mars/crimson_forest_entry',
|
||||
climate => {
|
||||
climate.maxTemp(-20)
|
||||
climate.minTemp(-65)
|
||||
climate.minRain(-10)
|
||||
climate.maxTemp(-41)
|
||||
climate.minTemp(-98)
|
||||
climate.minRain(-12)
|
||||
climate.fuzzy(true)
|
||||
},
|
||||
'beneath:wood/wood/crimson', // bush log
|
||||
'beneath:wood/leaves/crimson', // bush leaves
|
||||
|
|
@ -31,7 +32,6 @@ TFCEvents.worldgenData(event => {
|
|||
[ // ground cover
|
||||
'minecraft:crimson_fungus',
|
||||
'beneath:wood/fallen_leaves/crimson',
|
||||
'beneath:wood/leaves/crimson',
|
||||
'beneath:wood/twig/crimson',
|
||||
'tfg:groundcover/wraptor_feather',
|
||||
'tfg:groundcover/glider_feather'
|
||||
|
|
@ -44,16 +44,16 @@ TFCEvents.worldgenData(event => {
|
|||
null, // chance for old growth in non-old growth forests
|
||||
null, // chance for a fallen tree
|
||||
null, // chance for a dead tree
|
||||
null, // true to spawn on ocean floor, false for world surface
|
||||
null, // false (default) to spawn with the ocean floor heightmap, true for world surface
|
||||
placement => {}
|
||||
)
|
||||
|
||||
event.forestEntry('tfg:mars/warped_forest_entry',
|
||||
climate => {
|
||||
climate.maxTemp(-20)
|
||||
climate.minTemp(-65)
|
||||
climate.minRain(-20)
|
||||
climate.maxTemp(-39)
|
||||
climate.minTemp(-101)
|
||||
climate.maxRain(0)
|
||||
climate.fuzzy(true)
|
||||
},
|
||||
'beneath:wood/wood/warped',
|
||||
'beneath:wood/leaves/warped',
|
||||
|
|
@ -62,7 +62,6 @@ TFCEvents.worldgenData(event => {
|
|||
[
|
||||
'minecraft:warped_fungus',
|
||||
'beneath:wood/fallen_leaves/warped',
|
||||
'beneath:wood/leaves/warped',
|
||||
'beneath:wood/twig/warped',
|
||||
'tfg:groundcover/wraptor_feather',
|
||||
'tfg:groundcover/glider_feather'
|
||||
|
|
@ -76,18 +75,16 @@ TFCEvents.worldgenData(event => {
|
|||
|
||||
event.forestEntry('tfg:mars/aeronos_forest_entry',
|
||||
climate => {
|
||||
climate.maxTemp(-30)
|
||||
climate.minTemp(-85)
|
||||
climate.minRain(-15)
|
||||
climate.minTemp(-77)
|
||||
climate.minRain(-14)
|
||||
climate.fuzzy(true)
|
||||
},
|
||||
'ad_astra:aeronos_stem',
|
||||
'ad_astra:aeronos_cap',
|
||||
'betterend:cave_bush',
|
||||
'betterend:cave_bush_fallen',
|
||||
null,
|
||||
null,
|
||||
[
|
||||
"ad_astra:aeronos_mushroom",
|
||||
'betterend:cave_bush',
|
||||
'betterend:cave_bush_fallen',
|
||||
'tfg:groundcover/wraptor_feather',
|
||||
'tfg:groundcover/glider_feather',
|
||||
'tfg:groundcover/aeronos_stick'
|
||||
|
|
@ -101,18 +98,16 @@ TFCEvents.worldgenData(event => {
|
|||
|
||||
event.forestEntry('tfg:mars/strophar_forest_entry',
|
||||
climate => {
|
||||
climate.maxTemp(-20)
|
||||
climate.minTemp(-80)
|
||||
climate.maxRain(5)
|
||||
climate.minTemp(-73)
|
||||
climate.maxRain(2)
|
||||
climate.fuzzy(true)
|
||||
},
|
||||
'ad_astra:strophar_stem',
|
||||
'ad_astra:strophar_cap',
|
||||
'betterend:lucernia_leaves',
|
||||
'betterend:lucernia_leaves_fallen',
|
||||
null,
|
||||
null,
|
||||
[
|
||||
"ad_astra:strophar_mushroom",
|
||||
'betterend:lucernia_leaves',
|
||||
'betterend:lucernia_leaves_fallen',
|
||||
'tfg:groundcover/wraptor_feather',
|
||||
'tfg:groundcover/glider_feather',
|
||||
'tfg:groundcover/strophar_stick'
|
||||
|
|
@ -126,18 +121,18 @@ TFCEvents.worldgenData(event => {
|
|||
|
||||
event.forestEntry('tfg:mars/alphacene_forest_entry',
|
||||
climate => {
|
||||
climate.minTemp(-40)
|
||||
climate.minTemp(-65)
|
||||
climate.fuzzy(true)
|
||||
},
|
||||
'minecraft:mushroom_stem',
|
||||
'species:alphacene_mushroom_block',
|
||||
'minecraft:mushroom_stem',
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
null,
|
||||
[
|
||||
"species:alphacene_mushroom",
|
||||
'tfg:groundcover/wraptor_feather',
|
||||
'tfg:groundcover/glider_feather',
|
||||
'tfg:groundcover/alphacene_stick',
|
||||
'tfc:groundcover/stick'
|
||||
'tfg:groundcover/alphacene_stick'
|
||||
],
|
||||
'species:alphacene_mushroom',
|
||||
'tfg:mars/tree/alphacene_dead',
|
||||
|
|
|
|||
|
|
@ -995,6 +995,14 @@ const registerTFGBlockTags = (event) => {
|
|||
event.add('forge:mineable/wrench', 'tfg:machine_casing_aluminium_plated_steel')
|
||||
|
||||
event.add('tfg:decorative_plant_attachable', '#minecraft:logs')
|
||||
event.add('tfg:decorative_plant_attachable', 'minecraft:mushroom_stem')
|
||||
event.add('tfg:decorative_plant_attachable', 'species:alphacene_mushroom_block')
|
||||
event.add('tfg:decorative_plant_attachable', 'ad_astra:aeronos_cap')
|
||||
event.add('tfg:decorative_plant_attachable', 'ad_astra:strophar_cap')
|
||||
event.add('tfg:decorative_plant_attachable', 'minecraft:nether_wart_block')
|
||||
event.add('tfg:decorative_plant_attachable', 'minecraft:warped_wart_block')
|
||||
event.add('tfg:decorative_plant_attachable', 'betterend:cave_bush')
|
||||
event.add('tfg:decorative_plant_attachable', 'betterend:lucernia_leaves')
|
||||
}
|
||||
//#endregion
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue