use of com.lowdragmc.lowdraglib.gui.texture.TextTexture in project Multiblocked by Low-Drag-MC.
the class TemplateBuilderWidget method readInitialData.
@Override
public void readInitialData(PacketBuffer buffer) {
super.readInitialData(buffer);
this.addWidget(containers = new DraggableScrollableWidgetGroup(200, 120, 150, 98));
containers.setClientSideWidget();
for (int i = buffer.readVarInt(); i > 0; i--) {
ItemStack itemStack = buffer.readItem();
int slotIndex = buffer.readVarInt();
containers.addWidget(new SelectableWidgetGroup(0, containers.widgets.size() * 22, containers.getSize().width, 20).setSelectedTexture(-2, 0xff00aa00).setOnSelected(w -> onSelected(itemStack, slotIndex)).addWidget(new ImageWidget(0, 0, 150, 20, new ColorRectTexture(0x4faaaaaa))).addWidget(new ImageWidget(32, 0, 100, 20, new TextTexture(itemStack.getDisplayName().getString()).setWidth(100).setType(TextTexture.TextType.ROLL))).addWidget(new ImageWidget(4, 2, 18, 18, new ItemStackTexture(itemStack))));
}
}
use of com.lowdragmc.lowdraglib.gui.texture.TextTexture in project Multiblocked by Low-Drag-MC.
the class ControllerWidget method updateScene.
@OnlyIn(Dist.CLIENT)
private void updateScene(JsonBlockPattern jsonPattern) {
if (thread != null) {
thread.interrupt();
thread = null;
}
TrackedDummyWorld world = new TrackedDummyWorld();
tiles.clear();
sceneWidget.createScene(world);
ImageWidget imageWidget;
sceneWidget.addWidget(imageWidget = new ImageWidget(0, 0, sceneWidget.getSize().width, sceneWidget.getSize().height));
imageWidget.setVisible(jsonPattern.pattern.length * jsonPattern.pattern[0].length * jsonPattern.pattern[0][0].length() > 1000);
thread = new Thread(() -> {
int[] centerOffset = jsonPattern.getCenterOffset();
String[][] pattern = jsonPattern.pattern;
Set<BlockPos> posSet = new HashSet<>();
int offset = Math.max(pattern.length, Math.max(pattern[0].length, pattern[0][0].length()));
int sum = jsonPattern.pattern.length * jsonPattern.pattern[0].length * jsonPattern.pattern[0][0].length();
AtomicDouble progress = new AtomicDouble(0);
imageWidget.setImage(new TextTexture("building scene!").setSupplier(() -> "building scene! " + String.format("%.1f", progress.get()) + "%%").setWidth(sceneWidget.getSize().width));
int count = 0;
for (int i = 0; i < pattern.length; i++) {
for (int j = 0; j < pattern[0].length; j++) {
for (int k = 0; k < pattern[0][0].length(); k++) {
if (Thread.interrupted()) {
sceneWidget.waitToRemoved(imageWidget);
return;
}
count++;
progress.set(count * 100.0 / sum);
char symbol = pattern[i][j].charAt(k);
BlockPos pos = jsonPattern.getActualPosOffset(k - centerOffset[2], j - centerOffset[1], i - centerOffset[0], Direction.NORTH).offset(offset, offset, offset);
world.addBlock(pos, BlockInfo.fromBlockState(MbdComponents.DummyComponentBlock.defaultBlockState()));
DummyComponentTileEntity tileEntity = (DummyComponentTileEntity) world.getBlockEntity(pos);
ComponentDefinition definition = null;
assert tileEntity != null;
boolean disableFormed = false;
if (jsonPattern.symbolMap.containsKey(symbol)) {
Set<BlockInfo> candidates = new HashSet<>();
for (String s : jsonPattern.symbolMap.get(symbol)) {
SimplePredicate predicate = jsonPattern.predicates.get(s);
if (predicate instanceof PredicateComponent && ((PredicateComponent) predicate).definition != null) {
definition = ((PredicateComponent) predicate).definition;
disableFormed |= predicate.disableRenderFormed;
break;
} else if (predicate != null && predicate.candidates != null) {
candidates.addAll(Arrays.asList(predicate.candidates.get()));
disableFormed |= predicate.disableRenderFormed;
}
}
definition = TemplateBuilderWidget.getComponentDefinition(definition, candidates);
}
if (definition != null) {
tileEntity.setDefinition(definition);
if (disableFormed) {
definition.formedRenderer = new MBDBlockStateRenderer(Blocks.AIR.defaultBlockState());
}
}
tileEntity.isFormed = isFormed;
tileEntity.setLevelAndPosition(world, pos);
posSet.add(pos);
tiles.add(tileEntity);
}
}
}
Minecraft.getInstance().execute(() -> {
sceneWidget.setRenderedCore(posSet, null);
sceneWidget.waitToRemoved(imageWidget);
});
thread = null;
});
thread.start();
}
use of com.lowdragmc.lowdraglib.gui.texture.TextTexture in project Multiblocked by Low-Drag-MC.
the class ControllerScriptWidget method updateList.
private void updateList() {
jsonList.clearAllWidgets();
selected = null;
File path = new File(Multiblocked.location, "definition/controller");
if (!path.isDirectory()) {
if (!path.mkdirs()) {
return;
}
}
for (File file : Optional.ofNullable(path.listFiles()).orElse(new File[0])) {
if (file.isFile() && file.getName().endsWith(".json")) {
jsonList.addWidget(new SelectableWidgetGroup(0, 1 + jsonList.widgets.size() * 11, jsonList.getSize().width, 10).setSelectedTexture(-1, -1).setOnSelected(W -> selected = file).addWidget(new ImageWidget(0, 0, jsonList.getSize().width, 10, new ColorRectTexture(0xff000000))).addWidget(new ImageWidget(0, 0, jsonList.getSize().width, 10, new TextTexture(file.getName().replace(".json", "")).setWidth(jsonList.getSize().width).setType(TextTexture.TextType.ROLL))));
}
}
}
use of com.lowdragmc.lowdraglib.gui.texture.TextTexture in project Multiblocked by Low-Drag-MC.
the class PartScriptWidget method updateList.
private void updateList() {
jsonList.clearAllWidgets();
selected = null;
File path = new File(Multiblocked.location, "definition/part");
if (!path.isDirectory()) {
if (!path.mkdirs()) {
return;
}
}
for (File file : Optional.ofNullable(path.listFiles()).orElse(new File[0])) {
if (file.isFile() && file.getName().endsWith(".json")) {
jsonList.addWidget(new SelectableWidgetGroup(0, 1 + jsonList.widgets.size() * 11, jsonList.getSize().width, 10).setSelectedTexture(-1, -1).setOnSelected(W -> selected = file).addWidget(new ImageWidget(0, 0, jsonList.getSize().width, 10, new ColorRectTexture(0xff000000))).addWidget(new ImageWidget(0, 0, jsonList.getSize().width, 10, new TextTexture(file.getName().replace(".json", "")).setWidth(jsonList.getSize().width).setType(TextTexture.TextType.ROLL))));
}
}
}
use of com.lowdragmc.lowdraglib.gui.texture.TextTexture in project Multiblocked by Low-Drag-MC.
the class SimplePredicate method getConfigWidget.
public List<WidgetGroup> getConfigWidget(List<WidgetGroup> groups) {
WidgetGroup group = new WidgetGroup(0, 0, 300, 90);
groups.add(group);
group.setClientSideWidget();
group.addWidget(new LabelWidget(0, 0, () -> LocalizationUtils.format("multiblocked.gui.label.type") + " " + type).setTextColor(-1).setDrop(true));
TextFieldWidget min, max, preview, nbt, tooltips;
group.addWidget(min = new TextFieldWidget(55, 15, 30, 15, () -> minCount + "", s -> {
minCount = Integer.parseInt(s);
if (minCount > maxCount) {
maxCount = minCount;
}
}).setNumbersOnly(0, Integer.MAX_VALUE));
min.setHoverTooltips("multiblocked.gui.tips.min").setVisible(minCount != -1);
group.addWidget(new SwitchWidget(0, 15, 50, 15, (cd, r) -> {
min.setVisible(r);
minCount = r ? 0 : -1;
}).setPressed(minCount != -1).setHoverBorderTexture(1, -1).setBaseTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("min (N)", -1).setDropShadow(true)).setPressedTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("min (Y)", -1).setDropShadow(true)).setHoverTooltips("multiblocked.gui.predicate.min"));
group.addWidget(max = new TextFieldWidget(55, 33, 30, 15, () -> maxCount + "", s -> {
maxCount = Integer.parseInt(s);
if (minCount > maxCount) {
minCount = maxCount;
}
}).setNumbersOnly(0, Integer.MAX_VALUE));
max.setHoverTooltips("multiblocked.gui.tips.max").setVisible(maxCount != -1);
group.addWidget(new SwitchWidget(0, 33, 50, 15, (cd, r) -> {
max.setVisible(r);
maxCount = r ? 0 : -1;
}).setPressed(maxCount != -1).setHoverBorderTexture(1, -1).setBaseTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("max (N)", -1).setDropShadow(true)).setPressedTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("max (Y)", -1).setDropShadow(true)).setHoverTooltips("multiblocked.gui.predicate.max"));
group.addWidget(preview = (TextFieldWidget) new TextFieldWidget(55, 51, 30, 15, () -> previewCount + "", s -> previewCount = Integer.parseInt(s)).setNumbersOnly(0, Integer.MAX_VALUE).setHoverTooltips("multiblocked.gui.predicate.preview"));
preview.setHoverTooltips("multiblocked.gui.predicate.jei").setVisible(previewCount != -1);
group.addWidget(new SwitchWidget(0, 51, 50, 15, (cd, r) -> {
preview.setVisible(r);
previewCount = r ? 0 : -1;
}).setPressed(previewCount != -1).setHoverBorderTexture(1, -1).setBaseTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("jei (N)", -1).setDropShadow(true)).setPressedTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("jei (Y)", -1).setDropShadow(true)).setHoverTooltips("multiblocked.gui.predicate.preview.1"));
WidgetGroup widgetGroup = new WidgetGroup(0, 70, 100, 15).addWidget(new SwitchWidget(0, 0, 15, 15, (cd, r) -> disableRenderFormed = r).setBaseTexture(new ResourceTexture("multiblocked:textures/gui/boolean.png").getSubTexture(0, 0, 1, 0.5)).setPressedTexture(new ResourceTexture("multiblocked:textures/gui/boolean.png").getSubTexture(0, 0.5, 1, 0.5)).setHoverTexture(new ColorBorderTexture(1, -1)).setPressed(disableRenderFormed).setHoverTooltips("multiblocked.gui.predicate.disabled")).addWidget(new ImageWidget(2, 2, 11, 11, new ColorBorderTexture(1, -1))).addWidget(new LabelWidget(20, 3, "disableRenderFormed").setTextColor(-1).setDrop(true));
group.addWidget(widgetGroup);
group.addWidget(nbt = new TextFieldWidget(155, 15, 100, 15, null, s -> nbtParser = s));
nbt.setCurrentString(nbtParser == null ? "" : nbtParser).setHoverTooltips("nbt parser").setVisible(nbtParser != null);
group.addWidget(new SwitchWidget(100, 15, 50, 15, (cd, r) -> {
nbt.setVisible(r);
nbtParser = r ? "" : null;
}).setPressed(nbtParser != null).setHoverBorderTexture(1, -1).setBaseTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("nbt (N)", -1).setDropShadow(true)).setPressedTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("nbt (Y)", -1).setDropShadow(true)).setHoverTooltips("multiblocked.gui.predicate.nbt"));
group.addWidget(tooltips = new TextFieldWidget(155, 33, 100, 15, null, s -> customTips = s));
tooltips.setCurrentString(customTips != null ? customTips : "").setHoverTooltips("multiblocked.gui.predicate.tips").setVisible(customTips != null);
group.addWidget(new SwitchWidget(100, 33, 50, 15, (cd, r) -> {
tooltips.setVisible(r);
customTips = r ? "" : null;
}).setPressed(customTips != null).setHoverBorderTexture(1, -1).setBaseTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("tips (N)", -1).setDropShadow(true)).setPressedTexture(new ResourceTexture("multiblocked:textures/gui/button_common.png"), new TextTexture("tips (Y)", -1).setDropShadow(true)).setHoverTooltips("multiblocked.gui.predicate.add_tips"));
group.addWidget(new SelectorWidget(130, 70, 40, 15, Arrays.asList("IN", "OUT", "BOTH", "NULL"), -1).setValue(io == null ? "NULL" : io.name()).setIsUp(true).setOnChanged(io -> this.io = io.equals("NULL") ? null : IO.valueOf(io)).setButtonBackground(ResourceBorderTexture.BUTTON_COMMON).setBackground(new ColorRectTexture(0xff333333)).setHoverTooltips("multiblocked.gui.tips.io"));
return groups;
}
Aggregations