Page 1 of 1
make this GUI element respect mine-ability? Or hide it entirely?
Posted: Wed Sep 21, 2022 3:54 am
by adamwong246
I'm working on a mod that hides ores from the map and from the "first person" perspective. (See Bland Ores mod) Unfortunately, you can still manually scan the ground with the cursor to reveal otherwise invisible ore. Is there anyway to prevent this? I would like to either a) make the element respect mine-ability or b) hide the gui element entirely.
(In this example, the map is left unchanged and the user has mining_categories nil)
Re: make this GUI element respect mine-ability? Or hide it entirely?
Posted: Wed Sep 21, 2022 7:22 am
by DaveMcW
Re: make this GUI element respect mine-ability? Or hide it entirely?
Posted: Wed Sep 21, 2022 9:50 am
by adamwong246
That works
Re: make this GUI element respect mine-ability? Or hide it entirely?
Posted: Wed Sep 21, 2022 12:52 pm
by cbhj1
Another wrinkle in what you describe is the same scanning can be done with a miner in hand. Even being able to place them off ore, their placement gui for expected resources will be the next snag.
Re: make this GUI element respect mine-ability? Or hide it entirely?
Posted: Wed Sep 21, 2022 6:40 pm
by adamwong246
Another wrinkle in what you describe is the same scanning can be done with a miner in hand. Even being able to place them off ore, their placement gui for expected resources will be the next snag.
au contraire!
Code: Select all
local plain = "basic-solid";
local deep = "basic-solid-deep";
local deeper = "basic-solid-deeper";
local earth = "earth";
local silver = "silver";
local gold = "gold";
local deepResourceCategory = table.deepcopy(data.raw["resource-category"][plain]);
deepResourceCategory.name = deep;
local deeperResourceCategory = table.deepcopy(data.raw["resource-category"][plain]);
deeperResourceCategory.name = deeper;
local deepDrill = table.deepcopy(data.raw["mining-drill"]["electric-mining-drill"]);
deepDrill.name = "deep drill";
deepDrill.resource_categories = {plain, deep};
local deeperDrill = table.deepcopy(data.raw["mining-drill"]["electric-mining-drill"]);
deeperDrill.resource_categories = {plain, deep, deeper};
deeperDrill.name = "deeper drill";
local deepDrillRecipe = table.deepcopy(data.raw.recipe["electric-mining-drill"]);
deepDrillRecipe.normal.result = deepDrill.name;
deepDrillRecipe.expensive.result = deepDrill.name;
local deeperDrillRecipe = table.deepcopy(data.raw.recipe["electric-mining-drill"]);
deeperDrillRecipe.normal.result = deeperDrillRecipe.name;
deeperDrillRecipe.expensive.result = deeperDrillRecipe.name;
local earthResource = table.deepcopy(data.raw["resource"]["stone"]);
earthResource.name = "earth";
earthResource.minable.result = nil;
earthResource.infinite = true;
earthResource.minimum = 1;
earthResource.minable.results = {{
name = "earth",
probability = 0.9,
amount = 1
}, {
name = "stone",
probability = 0.09,
amount = 1
}, {
name = "silver",
probability = 0.009,
amount = 1
}, {
name = "gold",
probability = 0.001,
amount = 1
}};
local earthItem = table.deepcopy(data.raw["item"]["stone"]);
earthItem.name = earth;
earthItem.tint = {
r = 1,
g = 0,
b = 0,
a = 1
};
local silverResource = table.deepcopy(data.raw["resource"]["copper-ore"]);
silverResource.name = "silver";
-- silverResource.category = deep
-- silver.icons = {
-- icon= silver.icon,
-- tint = { a = 0.75, b = 0.5, g = 0.5, r = 0.5 }
-- };
local silverItem = table.deepcopy(data.raw["item"]["copper-ore"]);
silverItem.name = silver;
silverItem.icons = { {
icon = silver.icon,
tint = {
a = 0.75,
b = 0,
g = 0,
r = 0
}
}};
silverItem.icon = {};
local silverAutoplace = table.deepcopy(data.raw["autoplace-control"]["copper-ore"]);
silverAutoplace.name = silver;
silverAutoplace.localised_name = {"", "[entity=silver] ", {"entity-name.silver"}};
local goldResource = table.deepcopy(data.raw["resource"]["copper-ore"]);
goldResource.name = gold;
-- goldResource.category = deeper;
-- gold.icons = {
-- icon = gold.icon,
-- tint = {
-- a = 0.5,
-- b = 0.1,
-- g = 0.1,
-- r = 0.1
-- }
-- };
-- gold.icon = nil;
local goldItem = table.deepcopy(data.raw["item"]["copper-ore"]);
goldItem.name = gold;
goldItem.icons = {{
icon = goldItem.icon,
tint = {
a = 1,
b = 0,
g = 1,
r = 0
}
}};
goldItem.icon = {};
local goldAutoplace = table.deepcopy(data.raw["autoplace-control"]["copper-ore"]);
goldAutoplace.name = gold;
goldAutoplace.localised_name = {"", "[entity=gold] ", {"entity-name.gold"}};
data:extend({
-- deepResourceCategory, deeperResourceCategory, deepDrill, deeperDrill, deepDrillRecipe, deeperDrillRecipe,
earthItem, earthResource,
silverResource, silverItem, silverAutoplace,
goldResource, goldItem, goldAutoplace,
});
for _, resource in pairs(data.raw.resource) do
resource.selectable_in_game = false;
if (resource.name == "earth") then
-- resource.category = deep;
resource.highlight = false;
resource.map_grid = false;
resource.map_color = {0, 0, 0, 0};
resource.resource_patch_search_radius = false
end
local oreSheet = resource.stages.sheet
-- if (resource.name == "copper-ore" or resource.name == "iron-ore") then
-- resource.category = deep;
-- end
-- if (resource.name ~= "stone" and resource.name ~= "coal") then
-- oreSheet.tint = {0, 0, 0, 0};
-- oreSheet.hr_version.tint = {0, 0, 0, 0};
-- end
-- if (resource.name == "silver") then
-- resource.category = deep;
-- elseif resource.name == "gold" then
-- resource.category = deeper;
-- end
data:extend({resource});
end
-- local character = table.deepcopy(data.raw["character"]["character"]);
-- character.mining_categories = nil;
-- character.reach_resource_distance = -1;
-- data:extend({character});
The secret is to make new miners that mine on a different category of resource. Those higher tier miners are locked behind research, so I think those ores really are hidden.
Re: make this GUI element respect mine-ability? Or hide it entirely?
Posted: Wed Sep 21, 2022 6:44 pm
by adamwong246
One more thing- every space is covered in "earth" ore, making every space mine-able. You can now put a mining drill anywhere
Code: Select all
script.on_event(defines.events.on_chunk_generated, function(event)
for x = event.area.left_top.x + 0, event.area.right_bottom.x - 1 do
for y = event.area.left_top.y + 0, event.area.right_bottom.y - 1 do
event.surface.create_entity({
name = "earth",
amount = 1,
position = {x, y}
})
end
end
end)
Re: make this GUI element respect mine-ability? Or hide it entirely?
Posted: Thu Sep 22, 2022 12:48 am
by adamwong246
cbhj1 wrote: Wed Sep 21, 2022 12:52 pm
Another wrinkle in what you describe is the same scanning can be done with a miner in hand. Even being able to place them off ore, their placement gui for expected resources will be the next snag.
Is this what you were referring to? These green squares?
Re: make this GUI element respect mine-ability? Or hide it entirely?
Posted: Thu Sep 22, 2022 12:57 am
by adamwong246
or perhaps this one?
Re: make this GUI element respect mine-ability? Or hide it entirely?
Posted: Thu Sep 22, 2022 1:10 am
by cbhj1
this is the one
Re: make this GUI element respect mine-ability? Or hide it entirely?
Posted: Thu Sep 22, 2022 1:18 am
by adamwong246
Dang it, you called it right. I doubt it is likely but maybe this element can be hidden?